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