summaryrefslogtreecommitdiffstats
path: root/xbmc/utils/test/TestXMLUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/utils/test/TestXMLUtils.cpp')
-rw-r--r--xbmc/utils/test/TestXMLUtils.cpp356
1 files changed, 356 insertions, 0 deletions
diff --git a/xbmc/utils/test/TestXMLUtils.cpp b/xbmc/utils/test/TestXMLUtils.cpp
new file mode 100644
index 0000000..1a807ff
--- /dev/null
+++ b/xbmc/utils/test/TestXMLUtils.cpp
@@ -0,0 +1,356 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#include "XBDateTime.h"
10#include "utils/StringUtils.h"
11#include "utils/XMLUtils.h"
12
13#include <gtest/gtest.h>
14
15TEST(TestXMLUtils, GetHex)
16{
17 CXBMCTinyXML a;
18 uint32_t ref, val;
19
20 a.Parse(std::string("<root><node>0xFF</node></root>"));
21 EXPECT_TRUE(XMLUtils::GetHex(a.RootElement(), "node", val));
22
23 ref = 0xFF;
24 EXPECT_EQ(ref, val);
25}
26
27TEST(TestXMLUtils, GetUInt)
28{
29 CXBMCTinyXML a;
30 uint32_t ref, val;
31
32 a.Parse(std::string("<root><node>1000</node></root>"));
33 EXPECT_TRUE(XMLUtils::GetUInt(a.RootElement(), "node", val));
34
35 ref = 1000;
36 EXPECT_EQ(ref, val);
37}
38
39TEST(TestXMLUtils, GetLong)
40{
41 CXBMCTinyXML a;
42 long ref, val;
43
44 a.Parse(std::string("<root><node>1000</node></root>"));
45 EXPECT_TRUE(XMLUtils::GetLong(a.RootElement(), "node", val));
46
47 ref = 1000;
48 EXPECT_EQ(ref, val);
49}
50
51TEST(TestXMLUtils, GetFloat)
52{
53 CXBMCTinyXML a;
54 float ref, val;
55
56 a.Parse(std::string("<root><node>1000.1f</node></root>"));
57 EXPECT_TRUE(XMLUtils::GetFloat(a.RootElement(), "node", val));
58 EXPECT_TRUE(XMLUtils::GetFloat(a.RootElement(), "node", val, 1000.0f,
59 1000.2f));
60 ref = 1000.1f;
61 EXPECT_EQ(ref, val);
62}
63
64TEST(TestXMLUtils, GetDouble)
65{
66 CXBMCTinyXML a;
67 double val;
68 std::string refstr, valstr;
69
70 a.Parse(std::string("<root><node>1000.1f</node></root>"));
71 EXPECT_TRUE(XMLUtils::GetDouble(a.RootElement(), "node", val));
72
73 refstr = "1000.100000";
74 valstr = StringUtils::Format("%f", val);
75 EXPECT_STREQ(refstr.c_str(), valstr.c_str());
76}
77
78TEST(TestXMLUtils, GetInt)
79{
80 CXBMCTinyXML a;
81 int ref, val;
82
83 a.Parse(std::string("<root><node>1000</node></root>"));
84 EXPECT_TRUE(XMLUtils::GetInt(a.RootElement(), "node", val));
85 EXPECT_TRUE(XMLUtils::GetInt(a.RootElement(), "node", val, 999, 1001));
86
87 ref = 1000;
88 EXPECT_EQ(ref, val);
89}
90
91TEST(TestXMLUtils, GetBoolean)
92{
93 CXBMCTinyXML a;
94 bool ref, val;
95
96 a.Parse(std::string("<root><node>true</node></root>"));
97 EXPECT_TRUE(XMLUtils::GetBoolean(a.RootElement(), "node", val));
98
99 ref = true;
100 EXPECT_EQ(ref, val);
101}
102
103TEST(TestXMLUtils, GetString)
104{
105 CXBMCTinyXML a;
106 std::string ref, val;
107
108 a.Parse(std::string("<root><node>some string</node></root>"));
109 EXPECT_TRUE(XMLUtils::GetString(a.RootElement(), "node", val));
110
111 ref = "some string";
112 EXPECT_STREQ(ref.c_str(), val.c_str());
113}
114
115TEST(TestXMLUtils, GetAdditiveString)
116{
117 CXBMCTinyXML a, b;
118 std::string ref, val;
119
120 a.Parse(std::string("<root>\n"
121 " <node>some string1</node>\n"
122 " <node>some string2</node>\n"
123 " <node>some string3</node>\n"
124 " <node>some string4</node>\n"
125 " <node>some string5</node>\n"
126 "</root>\n"));
127 EXPECT_TRUE(XMLUtils::GetAdditiveString(a.RootElement(), "node", ",", val));
128
129 ref = "some string1,some string2,some string3,some string4,some string5";
130 EXPECT_STREQ(ref.c_str(), val.c_str());
131
132 val.clear();
133 b.Parse(std::string("<root>\n"
134 " <node>some string1</node>\n"
135 " <node>some string2</node>\n"
136 " <node clear=\"true\">some string3</node>\n"
137 " <node>some string4</node>\n"
138 " <node>some string5</node>\n"
139 "</root>\n"));
140 EXPECT_TRUE(XMLUtils::GetAdditiveString(b.RootElement(), "node", ",", val));
141
142 ref = "some string3,some string4,some string5";
143 EXPECT_STREQ(ref.c_str(), val.c_str());
144}
145
146TEST(TestXMLUtils, GetStringArray)
147{
148 CXBMCTinyXML a;
149 std::vector<std::string> strarray;
150
151 a.Parse(std::string("<root>\n"
152 " <node>some string1</node>\n"
153 " <node>some string2</node>\n"
154 " <node>some string3</node>\n"
155 " <node>some string4</node>\n"
156 " <node>some string5</node>\n"
157 "</root>\n"));
158 EXPECT_TRUE(XMLUtils::GetStringArray(a.RootElement(), "node", strarray));
159
160 EXPECT_STREQ("some string1", strarray.at(0).c_str());
161 EXPECT_STREQ("some string2", strarray.at(1).c_str());
162 EXPECT_STREQ("some string3", strarray.at(2).c_str());
163 EXPECT_STREQ("some string4", strarray.at(3).c_str());
164 EXPECT_STREQ("some string5", strarray.at(4).c_str());
165}
166
167TEST(TestXMLUtils, GetPath)
168{
169 CXBMCTinyXML a, b;
170 std::string ref, val;
171
172 a.Parse(std::string("<root><node urlencoded=\"yes\">special://xbmc/</node></root>"));
173 EXPECT_TRUE(XMLUtils::GetPath(a.RootElement(), "node", val));
174
175 ref = "special://xbmc/";
176 EXPECT_STREQ(ref.c_str(), val.c_str());
177
178 val.clear();
179 b.Parse(std::string("<root><node>special://xbmcbin/</node></root>"));
180 EXPECT_TRUE(XMLUtils::GetPath(b.RootElement(), "node", val));
181
182 ref = "special://xbmcbin/";
183 EXPECT_STREQ(ref.c_str(), val.c_str());
184}
185
186TEST(TestXMLUtils, GetDate)
187{
188 CXBMCTinyXML a;
189 CDateTime ref, val;
190
191 a.Parse(std::string("<root><node>2012-07-08</node></root>"));
192 EXPECT_TRUE(XMLUtils::GetDate(a.RootElement(), "node", val));
193 ref.SetDate(2012, 7, 8);
194 EXPECT_TRUE(ref == val);
195}
196
197TEST(TestXMLUtils, GetDateTime)
198{
199 CXBMCTinyXML a;
200 CDateTime ref, val;
201
202 a.Parse(std::string("<root><node>2012-07-08 01:02:03</node></root>"));
203 EXPECT_TRUE(XMLUtils::GetDateTime(a.RootElement(), "node", val));
204 ref.SetDateTime(2012, 7, 8, 1, 2, 3);
205 EXPECT_TRUE(ref == val);
206}
207
208TEST(TestXMLUtils, SetString)
209{
210 CXBMCTinyXML a;
211 std::string ref, val;
212
213 a.Parse(std::string("<root></root>"));
214 XMLUtils::SetString(a.RootElement(), "node", "some string");
215 EXPECT_TRUE(XMLUtils::GetString(a.RootElement(), "node", val));
216
217 ref = "some string";
218 EXPECT_STREQ(ref.c_str(), val.c_str());
219}
220
221TEST(TestXMLUtils, SetAdditiveString)
222{
223 CXBMCTinyXML a;
224 std::string ref, val;
225
226 a.Parse(std::string("<root></root>"));
227 XMLUtils::SetAdditiveString(a.RootElement(), "node", ",",
228 "some string1,some string2,some string3,some string4,some string5");
229 EXPECT_TRUE(XMLUtils::GetAdditiveString(a.RootElement(), "node", ",", val));
230
231 ref = "some string1,some string2,some string3,some string4,some string5";
232 EXPECT_STREQ(ref.c_str(), val.c_str());
233}
234
235TEST(TestXMLUtils, SetStringArray)
236{
237 CXBMCTinyXML a;
238 std::vector<std::string> strarray;
239 strarray.emplace_back("some string1");
240 strarray.emplace_back("some string2");
241 strarray.emplace_back("some string3");
242 strarray.emplace_back("some string4");
243 strarray.emplace_back("some string5");
244
245 a.Parse(std::string("<root></root>"));
246 XMLUtils::SetStringArray(a.RootElement(), "node", strarray);
247 EXPECT_TRUE(XMLUtils::GetStringArray(a.RootElement(), "node", strarray));
248
249 EXPECT_STREQ("some string1", strarray.at(0).c_str());
250 EXPECT_STREQ("some string2", strarray.at(1).c_str());
251 EXPECT_STREQ("some string3", strarray.at(2).c_str());
252 EXPECT_STREQ("some string4", strarray.at(3).c_str());
253 EXPECT_STREQ("some string5", strarray.at(4).c_str());
254}
255
256TEST(TestXMLUtils, SetInt)
257{
258 CXBMCTinyXML a;
259 int ref, val;
260
261 a.Parse(std::string("<root></root>"));
262 XMLUtils::SetInt(a.RootElement(), "node", 1000);
263 EXPECT_TRUE(XMLUtils::GetInt(a.RootElement(), "node", val));
264
265 ref = 1000;
266 EXPECT_EQ(ref, val);
267}
268
269TEST(TestXMLUtils, SetFloat)
270{
271 CXBMCTinyXML a;
272 float ref, val;
273
274 a.Parse(std::string("<root></root>"));
275 XMLUtils::SetFloat(a.RootElement(), "node", 1000.1f);
276 EXPECT_TRUE(XMLUtils::GetFloat(a.RootElement(), "node", val));
277
278 ref = 1000.1f;
279 EXPECT_EQ(ref, val);
280}
281
282TEST(TestXMLUtils, SetBoolean)
283{
284 CXBMCTinyXML a;
285 bool ref, val;
286
287 a.Parse(std::string("<root></root>"));
288 XMLUtils::SetBoolean(a.RootElement(), "node", true);
289 EXPECT_TRUE(XMLUtils::GetBoolean(a.RootElement(), "node", val));
290
291 ref = true;
292 EXPECT_EQ(ref, val);
293}
294
295TEST(TestXMLUtils, SetHex)
296{
297 CXBMCTinyXML a;
298 uint32_t ref, val;
299
300 a.Parse(std::string("<root></root>"));
301 XMLUtils::SetHex(a.RootElement(), "node", 0xFF);
302 EXPECT_TRUE(XMLUtils::GetHex(a.RootElement(), "node", val));
303
304 ref = 0xFF;
305 EXPECT_EQ(ref, val);
306}
307
308TEST(TestXMLUtils, SetPath)
309{
310 CXBMCTinyXML a;
311 std::string ref, val;
312
313 a.Parse(std::string("<root></root>"));
314 XMLUtils::SetPath(a.RootElement(), "node", "special://xbmc/");
315 EXPECT_TRUE(XMLUtils::GetPath(a.RootElement(), "node", val));
316
317 ref = "special://xbmc/";
318 EXPECT_STREQ(ref.c_str(), val.c_str());
319}
320
321TEST(TestXMLUtils, SetLong)
322{
323 CXBMCTinyXML a;
324 long ref, val;
325
326 a.Parse(std::string("<root></root>"));
327 XMLUtils::SetLong(a.RootElement(), "node", 1000);
328 EXPECT_TRUE(XMLUtils::GetLong(a.RootElement(), "node", val));
329
330 ref = 1000;
331 EXPECT_EQ(ref, val);
332}
333
334TEST(TestXMLUtils, SetDate)
335{
336 CXBMCTinyXML a;
337 CDateTime ref, val;
338
339 a.Parse(std::string("<root></root>"));
340 ref.SetDate(2012, 7, 8);
341 XMLUtils::SetDate(a.RootElement(), "node", ref);
342 EXPECT_TRUE(XMLUtils::GetDate(a.RootElement(), "node", val));
343 EXPECT_TRUE(ref == val);
344}
345
346TEST(TestXMLUtils, SetDateTime)
347{
348 CXBMCTinyXML a;
349 CDateTime ref, val;
350
351 a.Parse(std::string("<root></root>"));
352 ref.SetDateTime(2012, 7, 8, 1, 2, 3);
353 XMLUtils::SetDateTime(a.RootElement(), "node", ref);
354 EXPECT_TRUE(XMLUtils::GetDateTime(a.RootElement(), "node", val));
355 EXPECT_TRUE(ref == val);
356}