2
* Copyright (C) 2011 Andriy Rysin (rysin@kde.org)
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; either version 2 of the License, or
7
* (at your option) any later version.
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
#include <QtGui/QApplication>
21
#include <qtest_kde.h>
23
#include "../layout_memory_persister.h"
24
#include "../layout_memory.h"
25
#include "../keyboard_config.h"
28
class TestLayoutMemory: public LayoutMemory {
30
TestLayoutMemory(const KeyboardConfig& keyboardConfig):
31
LayoutMemory(keyboardConfig) {}
32
QMap<QString, LayoutSet>& getLayoutMap() { return layoutMap; }
35
class LayoutMemoryPersisterTest : public QObject
40
KeyboardConfig keyboardConfig;
41
TestLayoutMemory* layoutMemory;
42
LayoutMemoryPersister* layoutMemoryPersister;
44
const LayoutUnit layoutUnit1;
45
const LayoutUnit layoutUnit2;
46
const LayoutUnit layoutUnit3;
50
LayoutMemoryPersisterTest():
52
layoutUnit2("yy", "var1"),
53
layoutUnit3("zz", "var2")
58
path = "keyboard_memory_test.xml";
61
layoutMemory = new TestLayoutMemory(keyboardConfig);
62
layoutMemoryPersister = new LayoutMemoryPersister(*layoutMemory);
64
// QFile(path).remove();
67
void cleanupTestCase() {
68
delete layoutMemoryPersister;
75
keyboardConfig.switchingPolicy = KeyboardConfig::SWITCH_POLICY_WINDOW;
76
QVERIFY( ! layoutMemoryPersister->saveToFile(file) );
77
QVERIFY(QFile(path).size() == 0);
79
QVERIFY( ! layoutMemoryPersister->restoreFromFile(file) );
82
void testSaveGlobal() {
85
keyboardConfig.switchingPolicy = KeyboardConfig::SWITCH_POLICY_GLOBAL;
86
layoutMemoryPersister->setGlobalLayout(layoutUnit1);
87
QVERIFY( layoutMemoryPersister->saveToFile(file) );
88
QVERIFY(QFile(path).size() > 0);
91
keyboardConfig.layouts.clear();
93
QVERIFY( layoutMemoryPersister->restoreFromFile(file) );
94
QVERIFY( !layoutMemoryPersister->getGlobalLayout().isValid() );
97
keyboardConfig.layouts << layoutUnit1;
98
QVERIFY( layoutMemoryPersister->restoreFromFile(file) );
99
QVERIFY( layoutUnit1.isValid() );
100
QVERIFY( layoutMemoryPersister->getGlobalLayout().isValid() );
101
QCOMPARE( layoutMemoryPersister->getGlobalLayout(), layoutUnit1);
104
void testSaveByApp() {
107
keyboardConfig.switchingPolicy = KeyboardConfig::SWITCH_POLICY_APPLICATION;
109
layoutMemoryPersister->setGlobalLayout(LayoutUnit());
110
layoutMemory->getLayoutMap().clear();
112
keyboardConfig.layouts.clear();
113
keyboardConfig.layouts << layoutUnit1 << layoutUnit2;
115
LayoutSet layoutSet1;
116
layoutSet1.layouts << layoutUnit1 << layoutUnit2;
117
layoutSet1.currentLayout = layoutUnit1;
118
layoutMemory->getLayoutMap().insert(QString("app1"), layoutSet1);
120
LayoutSet layoutSet2;
121
layoutSet2.layouts << layoutUnit2 << layoutUnit1 << layoutUnit3;
122
layoutSet2.currentLayout = layoutUnit2;
123
layoutMemory->getLayoutMap().insert(QString("app2"), layoutSet2);
125
QVERIFY( layoutMemoryPersister->saveToFile(file) );
126
QVERIFY(QFile(path).size() > 0);
129
layoutMemory->getLayoutMap().clear();
130
QVERIFY( ! layoutMemory->getLayoutMap().value("app1").isValid() );
131
QVERIFY( ! layoutMemory->getLayoutMap().value("app2").isValid() );
133
QVERIFY( layoutMemoryPersister->restoreFromFile(file) );
134
QVERIFY( ! layoutMemoryPersister->getGlobalLayout().isValid() );
135
QCOMPARE( layoutMemory->getLayoutMap().value("app1"), layoutSet1 );
136
QVERIFY( ! layoutMemory->getLayoutMap().value("app2").isValid() );
138
keyboardConfig.layouts << layoutUnit3;
141
QVERIFY( layoutMemoryPersister->restoreFromFile(file) );
142
QVERIFY( ! layoutMemoryPersister->getGlobalLayout().isValid() );
143
QCOMPARE( layoutMemory->getLayoutMap().value("app1"), layoutSet1 );
144
QCOMPARE( layoutMemory->getLayoutMap().value("app2"), layoutSet2 );
147
// void layoutMemroyPersisterBenchmark() {
149
// //TODO: generate big map
150
// layoutMemoryPersister->save();
151
// layoutMemoryPersister->restore();
157
// need GUI for xkb protocol
158
QTEST_KDEMAIN( LayoutMemoryPersisterTest, GUI )
160
#include "layout_memory_persister_test.moc"