Changeset View
Changeset View
Standalone View
Standalone View
kmymoney/mymoney/tests/mymoneykeyvaluecontainer-test.cpp
Show All 12 Lines | |||||
13 | * | 13 | * | ||
14 | * You should have received a copy of the GNU General Public License | 14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | 16 | */ | ||
17 | 17 | | |||
18 | #include "mymoneykeyvaluecontainer-test.h" | 18 | #include "mymoneykeyvaluecontainer-test.h" | ||
19 | 19 | | |||
20 | #include <QtTest> | 20 | #include <QtTest> | ||
21 | #include <QDomDocument> | | |||
22 | #include <QDomElement> | | |||
23 | 21 | | |||
24 | #define KMM_MYMONEY_UNIT_TESTABLE friend class MyMoneyKeyValueContainerTest; | 22 | #define KMM_MYMONEY_UNIT_TESTABLE friend class MyMoneyKeyValueContainerTest; | ||
25 | 23 | | |||
26 | #include "mymoneyexception.h" | 24 | #include "mymoneyexception.h" | ||
27 | #include "mymoneykeyvaluecontainer.h" | 25 | #include "mymoneykeyvaluecontainer.h" | ||
28 | #include "mymoneykeyvaluecontainer_p.h" | 26 | #include "mymoneykeyvaluecontainer_p.h" | ||
29 | 27 | | |||
30 | QTEST_GUILESS_MAIN(MyMoneyKeyValueContainerTest) | 28 | QTEST_GUILESS_MAIN(MyMoneyKeyValueContainerTest) | ||
▲ Show 20 Lines • Show All 71 Lines • ▼ Show 20 Line(s) | 99 | { | |||
102 | m->setValue("Key", "Value"); | 100 | m->setValue("Key", "Value"); | ||
103 | m->setValue("key", "value"); | 101 | m->setValue("key", "value"); | ||
104 | 102 | | |||
105 | QVERIFY(m->d_func()->m_kvp.count() == 2); | 103 | QVERIFY(m->d_func()->m_kvp.count() == 2); | ||
106 | QVERIFY(m->d_func()->m_kvp["Key"] == "Value"); | 104 | QVERIFY(m->d_func()->m_kvp["Key"] == "Value"); | ||
107 | QVERIFY(m->d_func()->m_kvp["key"] == "value"); | 105 | QVERIFY(m->d_func()->m_kvp["key"] == "value"); | ||
108 | } | 106 | } | ||
109 | 107 | | |||
110 | void MyMoneyKeyValueContainerTest::testWriteXML() | | |||
111 | { | | |||
112 | m->setValue("Key", "Value"); | | |||
113 | m->setValue("key", "value"); | | |||
114 | | ||||
115 | QDomDocument doc("TEST"); | | |||
116 | QDomElement el = doc.createElement("KVP-CONTAINER"); | | |||
117 | doc.appendChild(el); | | |||
118 | m->writeXML(doc, el); | | |||
119 | | ||||
120 | QCOMPARE(doc.doctype().name(), QLatin1String("TEST")); | | |||
121 | QDomElement kvpContainer = doc.documentElement(); | | |||
122 | QCOMPARE(kvpContainer.tagName(), QLatin1String("KVP-CONTAINER")); | | |||
123 | QCOMPARE(kvpContainer.childNodes().size(), 1); | | |||
124 | | ||||
125 | QVERIFY(kvpContainer.childNodes().at(0).isElement()); | | |||
126 | QDomElement keyValuePairs = kvpContainer.childNodes().at(0).toElement(); | | |||
127 | QCOMPARE(keyValuePairs.tagName(), QLatin1String("KEYVALUEPAIRS")); | | |||
128 | QCOMPARE(keyValuePairs.childNodes().size(), 2); | | |||
129 | | ||||
130 | QVERIFY(keyValuePairs.childNodes().at(0).isElement()); | | |||
131 | QDomElement keyValuePair1 = keyValuePairs.childNodes().at(0).toElement(); | | |||
132 | QCOMPARE(keyValuePair1.tagName(), QLatin1String("PAIR")); | | |||
133 | QCOMPARE(keyValuePair1.attribute("key"), QLatin1String("Key")); | | |||
134 | QCOMPARE(keyValuePair1.attribute("value"), QLatin1String("Value")); | | |||
135 | QCOMPARE(keyValuePair1.childNodes().size(), 0); | | |||
136 | | ||||
137 | QVERIFY(keyValuePairs.childNodes().at(1).isElement()); | | |||
138 | QDomElement keyValuePair2 = keyValuePairs.childNodes().at(1).toElement(); | | |||
139 | QCOMPARE(keyValuePair2.tagName(), QLatin1String("PAIR")); | | |||
140 | QCOMPARE(keyValuePair2.attribute("key"), QLatin1String("key")); | | |||
141 | QCOMPARE(keyValuePair2.attribute("value"), QLatin1String("value")); | | |||
142 | QCOMPARE(keyValuePair2.childNodes().size(), 0); | | |||
143 | } | | |||
144 | | ||||
145 | void MyMoneyKeyValueContainerTest::testReadXML() | | |||
146 | { | | |||
147 | m->setValue("Key", "Value"); | | |||
148 | m->setValue("key", "value"); | | |||
149 | | ||||
150 | QString ref_ok( | | |||
151 | "<!DOCTYPE TEST>\n" | | |||
152 | "<KVP-CONTAINER>\n" | | |||
153 | " <KEYVALUEPAIRS>\n" | | |||
154 | " <PAIR key=\"key\" value=\"Value\" />\n" | | |||
155 | " <PAIR key=\"Key\" value=\"value\" />\n" | | |||
156 | " </KEYVALUEPAIRS>\n" | | |||
157 | "</KVP-CONTAINER>\n"); | | |||
158 | | ||||
159 | QString ref_false( | | |||
160 | "<!DOCTYPE TEST>\n" | | |||
161 | "<KVP-CONTAINER>\n" | | |||
162 | " <KEYVALUE-PAIRS>\n" | | |||
163 | " <PAIR key=\"key\" value=\"Value\" />\n" | | |||
164 | " <PAIR key=\"Key\" value=\"value\" />\n" | | |||
165 | " </KEYVALUE-PAIRS>\n" | | |||
166 | "</KVP-CONTAINER>\n"); | | |||
167 | | ||||
168 | | ||||
169 | QDomDocument doc; | | |||
170 | QDomElement node; | | |||
171 | doc.setContent(ref_false); | | |||
172 | node = doc.documentElement().firstChild().toElement(); | | |||
173 | | ||||
174 | // make sure, an empty node does not trigger an exception | | |||
175 | try { | | |||
176 | QDomElement e; | | |||
177 | MyMoneyKeyValueContainer k(e); | | |||
178 | } catch (const MyMoneyException &) { | | |||
179 | QFAIL("Unexpected exception"); | | |||
180 | } | | |||
181 | | ||||
182 | try { | | |||
183 | MyMoneyKeyValueContainer k(node); | | |||
184 | QFAIL("Missing expected exception"); | | |||
185 | } catch (const MyMoneyException &) { | | |||
186 | } | | |||
187 | | ||||
188 | doc.setContent(ref_ok); | | |||
189 | node = doc.documentElement().firstChild().toElement(); | | |||
190 | try { | | |||
191 | MyMoneyKeyValueContainer k(node); | | |||
192 | QVERIFY(k.d_func()->m_kvp.count() == 2); | | |||
193 | QVERIFY(k.value("key") == "Value"); | | |||
194 | QVERIFY(k.value("Key") == "value"); | | |||
195 | } catch (const MyMoneyException &) { | | |||
196 | QFAIL("Unexpected exception"); | | |||
197 | } | | |||
198 | } | | |||
199 | | ||||
200 | void MyMoneyKeyValueContainerTest::testArrayRead() | 108 | void MyMoneyKeyValueContainerTest::testArrayRead() | ||
201 | { | 109 | { | ||
202 | MyMoneyKeyValueContainer kvp; | 110 | MyMoneyKeyValueContainer kvp; | ||
203 | const MyMoneyKeyValueContainer& ckvp = kvp; | 111 | const MyMoneyKeyValueContainer& ckvp = kvp; | ||
204 | QVERIFY(kvp.pairs().count() == 0); | 112 | QVERIFY(kvp.pairs().count() == 0); | ||
205 | QVERIFY(ckvp["Key"].isEmpty()); | 113 | QVERIFY(ckvp["Key"].isEmpty()); | ||
206 | QVERIFY(kvp.pairs().count() == 0); | 114 | QVERIFY(kvp.pairs().count() == 0); | ||
207 | kvp.setValue("Key", "Value"); | 115 | kvp.setValue("Key", "Value"); | ||
208 | QVERIFY(kvp["Key"] == "Value"); | 116 | QVERIFY(kvp["Key"] == "Value"); | ||
209 | } | 117 | } | ||
210 | 118 | | |||
211 | void MyMoneyKeyValueContainerTest::testArrayWrite() | 119 | void MyMoneyKeyValueContainerTest::testArrayWrite() | ||
212 | { | 120 | { | ||
213 | MyMoneyKeyValueContainer kvp; | 121 | MyMoneyKeyValueContainer kvp; | ||
214 | kvp["Key"] = "Value"; | 122 | kvp["Key"] = "Value"; | ||
215 | QVERIFY(kvp.pairs().count() == 1); | 123 | QVERIFY(kvp.pairs().count() == 1); | ||
216 | QVERIFY(kvp.value("Key") == "Value"); | 124 | QVERIFY(kvp.value("Key") == "Value"); | ||
217 | } | 125 | } | ||
218 | | ||||
219 | void MyMoneyKeyValueContainerTest::testElementNames() | | |||
220 | { | | |||
221 | for (auto i = (int)KVC::Element::Pair; i <= (int)KVC::Element::Pair; ++i) { | | |||
222 | auto isEmpty = MyMoneyKeyValueContainerPrivate::getElName(static_cast<KVC::Element>(i)).isEmpty(); | | |||
223 | if (isEmpty) | | |||
224 | qWarning() << "Empty element's name " << i; | | |||
225 | QVERIFY(!isEmpty); | | |||
226 | } | | |||
227 | } | | |||
228 | | ||||
229 | void MyMoneyKeyValueContainerTest::testAttributeNames() | | |||
230 | { | | |||
231 | for (auto i = (int)KVC::Attribute::Key; i < (int)KVC::Attribute::LastAttribute; ++i) { | | |||
232 | auto isEmpty = MyMoneyKeyValueContainerPrivate::getAttrName(static_cast<KVC::Attribute>(i)).isEmpty(); | | |||
233 | if (isEmpty) | | |||
234 | qWarning() << "Empty attribute's name " << i; | | |||
235 | QVERIFY(!isEmpty); | | |||
236 | } | | |||
237 | } | |