summaryrefslogtreecommitdiffstats
path: root/rbutil/rbutilqt/test/test-serverinfo.cpp
blob: 3e71a9763a0e6d0cec5e66ad7acb791ed9592ee7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/***************************************************************************
 *             __________               __   ___.
 *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
 *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
 *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
 *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
 *                     \/            \/     \/    \/            \/
 *
 * Copyright (C) 2012 Dominik Riebeling
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ****************************************************************************/

#include <QtTest/QtTest>
#include <QObject>
#include "serverinfo.h"

class TestServerInfo : public QObject
{
    Q_OBJECT
        private slots:
        void testMain();
};

const char* testinfo =
    "[release]\n"
    "archosfmrecorder=3.11.2\n"
    "iaudiom3=3.11.2,http://dl.rockbox.org/release/3.11.2/rockbox-iaudiom5-3.11.2.zip\n"
    "sansae200 = 3.11.2\n"
    "iriverh100 = 3.11.2, http://dl.rockbox.org/release/3.11.2/rockbox-iriverh100-3.11.2.zip\n"
    "iriverh300 = \n"
    "[release-candidate]\n"
    "gigabeatfx=f9dce96,http://dl.rockbox.org/rc/f9dce96/rockbox-gigabeatfx.zip\n"
    "archosfmrecorder=f9dce96\n"
    "archosrecorder = f9dce96\n"
    "iaudiox5=f9dce96,http://dl.rockbox.org/rc/f9dce96/rockbox-iaudiox5.zip\n"
    "[dailies]\n"
    "timestamp = 20201113\n"
    "rev = 362f7a3\n"
    "[bleeding]\n"
    "timestamp = 20201114T105723Z\n"
    "rev = be1be79\n"
    "[status]\n"
    "archosfmrecorder=3\n"
    "iriverh100=2\n"
    "iriverh300=1\n"
    "iriverh10=0\n"
    ;


struct testvector {
    const char* target;
    ServerInfo::ServerInfos entry;
    const char* expected;
};


const struct testvector testdata[] =
{
    { "archosfmrecorder", ServerInfo::CurReleaseVersion,   "3.11.2" },
    { "archosfmrecorder", ServerInfo::CurStatus,           "Stable" },
    { "iaudiom3",         ServerInfo::CurReleaseVersion,   "3.11.2" },
    { "iaudiom3",         ServerInfo::CurReleaseUrl,       "http://dl.rockbox.org/release/3.11.2/rockbox-iaudiom5-3.11.2.zip" },
    { "sansae200",        ServerInfo::CurReleaseVersion,   "3.11.2" },
    { "sansae200",        ServerInfo::CurReleaseUrl,       "https://unittest/release/3.11.2/rockbox-sansae200-3.11.2.zip" },
    { "iriverh100",       ServerInfo::CurReleaseVersion,   "3.11.2" },
    { "iriverh100",       ServerInfo::CurReleaseUrl,       "http://dl.rockbox.org/release/3.11.2/rockbox-iriverh100-3.11.2.zip" },
    { "iriverh100",       ServerInfo::CurStatus,           "Unstable" },
    { "iriverh100",       ServerInfo::CurDevelUrl,         "https://unittest/dev/rockbox-iriverh100.zip" },
    { "iriverh300",       ServerInfo::CurReleaseVersion,   "" },
    { "iriverh300",       ServerInfo::CurReleaseUrl,       "" },
    { "iriverh300",       ServerInfo::CurStatus,           "Unusable" },
    { "iriverh10",        ServerInfo::CurReleaseVersion,   "" },
    { "iriverh10",        ServerInfo::CurReleaseUrl,       "" },
    { "iriverh10",        ServerInfo::CurStatus,           "Stable (Retired)" },
    { "gigabeatfx",       ServerInfo::RelCandidateVersion, "f9dce96" },
    { "gigabeatfx",       ServerInfo::RelCandidateUrl,     "http://dl.rockbox.org/rc/f9dce96/rockbox-gigabeatfx.zip" },
    { "archosfmrecorder", ServerInfo::RelCandidateVersion, "f9dce96" },
    { "archosfmrecorder", ServerInfo::RelCandidateUrl,     "" },
    { "archosrecorder",   ServerInfo::RelCandidateVersion, "f9dce96" },
    { "archosrecorder",   ServerInfo::RelCandidateUrl,     "" },
    { "iaudiox5",         ServerInfo::RelCandidateVersion, "f9dce96" },
    { "iaudiox5",         ServerInfo::RelCandidateUrl,     "http://dl.rockbox.org/rc/f9dce96/rockbox-iaudiox5.zip" },
    { "iaudiox5.v",       ServerInfo::RelCandidateVersion, "f9dce96" },
    { "iaudiox5.v",       ServerInfo::RelCandidateUrl,     "http://dl.rockbox.org/rc/f9dce96/rockbox-iaudiox5.zip" },
    { "iaudiox5.v",       ServerInfo::BleedingRevision,    "be1be79" },
    { "iaudiox5.v",       ServerInfo::BleedingDate,        "2020-11-14T10:57:23" },
    { "iaudiox5.v",       ServerInfo::CurDevelUrl,         "https://unittest/dev/rockbox-iaudiox5.zip" },
    { "iaudiox5.v",       ServerInfo::ManualPdfUrl,        "https://unittest/manual/rockbox-iaudiox5.pdf" },
    { "ipodmini2g",       ServerInfo::ManualPdfUrl,        "https://unittest/manual/rockbox-ipodmini1g.pdf" },
    { "iriverh100",       ServerInfo::ManualHtmlUrl,       "https://unittest/manual/rockbox-iriverh100/rockbox-build.html" },
    { "iriverh120",       ServerInfo::ManualZipUrl,        "https://unittest/manual/rockbox-iriverh100-html.zip" },
};


void TestServerInfo::testMain()
{
    // create a temporary file for test input. Do not use QSettings() to allow
    // creating different format variations.
    QTemporaryFile tf(this);
    tf.open();
    QString filename = tf.fileName();
    tf.write(testinfo);
    tf.close();

    ServerInfo::readBuildInfo(filename);

    unsigned int i;
    for(i = 0; i < sizeof(testdata) / sizeof(struct testvector); i++) {
        QString result = ServerInfo::platformValue(testdata[i].entry, testdata[i].target).toString();
        QCOMPARE(result, QString(testdata[i].expected));
    }
}


QTEST_MAIN(TestServerInfo)

// this include is needed because we don't use a separate header file for the
// test class. It also needs to be at the end.
#include "test-serverinfo.moc"