1 #include <QtTest/QtTest>
2 
3 #include "TelepathyQt/key-file.h"
4 
5 using namespace Tp;
6 
7 class TestKeyFile : public QObject
8 {
9     Q_OBJECT
10 
11 private Q_SLOTS:
12     void testKeyFile();
13 };
14 
testKeyFile()15 void TestKeyFile::testKeyFile()
16 {
17     QString top_srcdir = QString::fromLocal8Bit(::getenv("abs_top_srcdir"));
18     if (!top_srcdir.isEmpty()) {
19         QDir::setCurrent(top_srcdir + QLatin1String("/tests"));
20     }
21 
22     KeyFile defaultKeyFile;
23     QCOMPARE(defaultKeyFile.status(), KeyFile::None);
24 
25     KeyFile notFoundkeyFile(QLatin1String("test-key-file-not-found.ini"));
26     QCOMPARE(notFoundkeyFile.status(), KeyFile::NotFoundError);
27 
28     KeyFile formatErrorkeyFile(QLatin1String("test-key-file-format-error.ini"));
29     QCOMPARE(formatErrorkeyFile.status(), KeyFile::FormatError);
30 
31     KeyFile keyFile(QLatin1String("test-key-file.ini"));
32     QCOMPARE(keyFile.status(), KeyFile::NoError);
33 
34     QStringList allGroups = keyFile.allGroups();
35     allGroups.sort();
36     QCOMPARE(allGroups,
37              QStringList() << QString() <<
38                               QLatin1String("test group 1") <<
39                               QLatin1String("test group 2"));
40 
41     QStringList allKeys = keyFile.allKeys();
42     allKeys.sort();
43     QCOMPARE(allKeys,
44              QStringList() <<
45              QLatin1String("a") <<
46              QLatin1String("b") <<
47              QLatin1String("c") <<
48              QLatin1String("d") <<
49              QLatin1String("e"));
50 
51     keyFile.setGroup(QLatin1String("test group 1"));
52     QCOMPARE(keyFile.contains(QLatin1String("f")), false);
53     QCOMPARE(keyFile.value(QLatin1String("c")).length(), 5);
54 
55     keyFile.setGroup(QLatin1String("test group 2"));
56     QCOMPARE(keyFile.contains(QLatin1String("e")), true);
57     QCOMPARE(keyFile.value(QLatin1String("e")), QString(QLatin1String("space")));
58 
59     keyFile.setFileName(QLatin1String("telepathy/managers/test-manager-file.manager"));
60     QCOMPARE(keyFile.status(), KeyFile::NoError);
61 
62     keyFile.setGroup(QLatin1String("Protocol somewhat-pathological"));
63     QCOMPARE(keyFile.value(QLatin1String("param-foo")), QString(QLatin1String("s required")));
64     QCOMPARE(keyFile.value(QLatin1String("default-foo")), QString(QLatin1String("hello world")));
65 
66     QCOMPARE(keyFile.value(QLatin1String("param-semicolons")), QString(QLatin1String("s secret")));
67     QCOMPARE(keyFile.value(QLatin1String("default-semicolons")), QString(QLatin1String("list;of;misc;")));
68 
69     QCOMPARE(keyFile.value(QLatin1String("param-list")), QString(QLatin1String("as")));
70     QCOMPARE(keyFile.value(QLatin1String("default-list")), QString(QLatin1String("list;of;misc;")));
71     QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-list")),
72              QStringList() << QLatin1String("list") << QLatin1String("of") << QLatin1String("misc"));
73 
74     QCOMPARE(keyFile.value(QLatin1String("param-unterminated-list")), QString(QLatin1String("as")));
75     QCOMPARE(keyFile.value(QLatin1String("default-unterminated-list")), QString(QLatin1String("list;of;misc")));
76     QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-unterminated-list")),
77              QStringList() << QLatin1String("list") << QLatin1String("of") << QLatin1String("misc"));
78 
79     QCOMPARE(keyFile.value(QLatin1String("param-spaces-in-list")), QString(QLatin1String("as")));
80     QCOMPARE(keyFile.value(QLatin1String("default-spaces-in-list")), QString(QLatin1String("list; of; misc ;")));
81     QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-spaces-in-list")),
82              QStringList() << QLatin1String("list") << QLatin1String(" of") << QLatin1String(" misc "));
83 
84     QCOMPARE(keyFile.value(QLatin1String("param-escaped-semicolon-in-list")), QString(QLatin1String("as")));
85     QCOMPARE(keyFile.value(QLatin1String("default-escaped-semicolon-in-list")), QString(QLatin1String("list;of;misc;")));
86     QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-escaped-semicolon-in-list")),
87              QStringList() << QLatin1String("list;of") << QLatin1String("misc"));
88 
89     QCOMPARE(keyFile.value(QLatin1String("param-doubly-escaped-semicolon-in-list")), QString(QLatin1String("as")));
90     QCOMPARE(keyFile.value(QLatin1String("default-doubly-escaped-semicolon-in-list")), QString(QLatin1String("list\\;of;misc;")));
91     QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-doubly-escaped-semicolon-in-list")),
92              QStringList() << QLatin1String("list\\") << QLatin1String("of") << QLatin1String("misc"));
93 
94     QCOMPARE(keyFile.value(QLatin1String("param-triply-escaped-semicolon-in-list")), QString(QLatin1String("as")));
95     QCOMPARE(keyFile.value(QLatin1String("default-triply-escaped-semicolon-in-list")), QString(QLatin1String("list\\;of;misc;")));
96     QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-triply-escaped-semicolon-in-list")),
97              QStringList() << QLatin1String("list\\;of") << QLatin1String("misc"));
98 
99     QCOMPARE(keyFile.value(QLatin1String("param-empty-list")), QString(QLatin1String("as")));
100     QCOMPARE(keyFile.value(QLatin1String("default-empty-list")), QString(QLatin1String("")));
101     QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-empty-list")), QStringList());
102 
103     QCOMPARE(keyFile.value(QLatin1String("param-list-of-empty-string")), QString(QLatin1String("as")));
104     QCOMPARE(keyFile.value(QLatin1String("default-list-of-empty-string")), QString(QLatin1String(";")));
105     QCOMPARE(keyFile.valueAsStringList(QLatin1String("default-list-of-empty-string")), QStringList() << QString());
106 
107     QCOMPARE(keyFile.value(QLatin1String("param-escaped-semicolon")), QString(QLatin1String("s")));
108     QCOMPARE(keyFile.value(QLatin1String("default-escaped-semicolon")), QString(QLatin1String("foo;bar")));
109 }
110 
111 QTEST_MAIN(TestKeyFile)
112 
113 #include "_gen/key-file.cpp.moc.hpp"
114