1 /*
2     SPDX-FileCopyrightText: 2011 Andriy Rysin <rysin@kde.org>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #include <QIcon>
8 #include <QtTest>
9 
10 #include "../flags.h"
11 #include "../keyboard_config.h"
12 #include "../xkb_rules.h"
13 
14 class FlagsTest : public QObject
15 {
16     Q_OBJECT
17 
18     Flags *flags;
19     const Rules *rules;
20 
21 private Q_SLOTS:
initTestCase()22     void initTestCase()
23     {
24         flags = new Flags();
25         rules = nullptr;
26     }
27 
cleanupTestCase()28     void cleanupTestCase()
29     {
30         delete flags;
31         delete rules;
32     }
33 
testRules()34     void testRules()
35     {
36         QVERIFY(flags != nullptr);
37 
38         const QIcon iconUs(flags->getIcon(QStringLiteral("us")));
39         QVERIFY(!iconUs.isNull());
40         QVERIFY(flags->getIcon("--").isNull());
41 
42         KeyboardConfig keyboardConfig;
43         LayoutUnit layoutUnit(QStringLiteral("us"));
44         LayoutUnit layoutUnit1(QStringLiteral("us"), QStringLiteral("intl"));
45         layoutUnit1.setDisplayName(QStringLiteral("usi"));
46         LayoutUnit layoutUnit2(QStringLiteral("us"), QStringLiteral("other"));
47 
48         keyboardConfig.layouts.append(layoutUnit1);
49         QCOMPARE(flags->getShortText(layoutUnit, keyboardConfig), QString("us"));
50         QCOMPARE(flags->getShortText(layoutUnit1, keyboardConfig), QString("usi"));
51         QCOMPARE(flags->getShortText(layoutUnit2, keyboardConfig), QString("us"));
52 
53         const Rules *rules = Rules::readRules(Rules::NO_EXTRAS);
54         QCOMPARE(flags->getLongText(layoutUnit, rules), QString("English (US)"));
55         QCOMPARE(flags->getLongText(layoutUnit2, rules), QString("other"));
56 
57         rules = nullptr; // when no rules found
58         QCOMPARE(flags->getLongText(layoutUnit1, rules), QString("us - intl"));
59     }
60 
61     //    void loadRulesBenchmark() {
62     //    	QBENCHMARK {
63     //    		Flags* flags = new Flags();
64     //    		delete flags;
65     //    	}
66     //    }
67 };
68 
69 // need GUI for xkb protocol in xkb_rules.cpp
70 QTEST_MAIN(FlagsTest)
71 
72 #include "flags_test.moc"
73