merge with master
[platform/framework/web/wrt-commons.git] / tests / utils / widget_version.cpp
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16 /*
17  * @file    widget_version.cpp
18  * @author  Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com)
19  * @version 1.0
20  * @brief   Implementation file for test cases for engine internal tests
21  */
22 #include <dpl/test/test_runner.h>
23 #include <dpl/utils/widget_version.h>
24
25 RUNNER_TEST_GROUP_INIT(DPL_WIDGET_VERSION)
26
27 /*
28 Name: WidgetVersion_M2_O0
29 Description: tests correct parsing of version widget in format: [major].[minor]
30 Expected: major and minor parts matches expected values
31 */
32 RUNNER_TEST(WidgetVersion_M2_O0)
33 {
34     DPL::String raw(L"1.2");
35     WidgetVersion version(raw);
36
37     RUNNER_ASSERT(version.IsWac() == true);
38     RUNNER_ASSERT(version.Major() == DPL::String(L"1"));
39     RUNNER_ASSERT(version.Minor() == DPL::String(L"2"));
40     RUNNER_ASSERT(version.Micro() == DPL::Optional<DPL::String>());
41     RUNNER_ASSERT(version.Optional() == DPL::Optional<DPL::String>());
42     RUNNER_ASSERT(version.Raw() == raw);
43 }
44
45 /*
46 Name: WidgetVersion_M2_O0_nonwac_1
47 Description: tests if version is recognized as wac version number
48 Expected: version should not be recognized as wac compatible
49 */
50 RUNNER_TEST(WidgetVersion_M2_O0_nonwac_1)
51 {
52     DPL::String raw(L"a1.2");
53     WidgetVersion version(raw);
54
55     RUNNER_ASSERT(version.IsWac() == false);
56     RUNNER_ASSERT(version.Raw() == raw);
57 }
58
59 /*
60 Name: WidgetVersion_M2_O0_nonwac_2
61 Description: tests if version is recognized as wac version number
62 Expected: version should not be recognized as wac compatible
63 */
64 RUNNER_TEST(WidgetVersion_M2_O0_nonwac_2)
65 {
66     DPL::String raw(L"1.2a");
67     WidgetVersion version(raw);
68
69     RUNNER_ASSERT(version.IsWac() == false);
70     RUNNER_ASSERT(version.Raw() == raw);
71 }
72
73 /*
74 Name: WidgetVersion_M2_O0_nonwac_3
75 Description: tests if version is recognized as wac version number
76 Expected: version should not be recognized as wac compatible
77 */
78 RUNNER_TEST(WidgetVersion_M2_O0_nonwac_3)
79 {
80     DPL::String raw(L"aaa1.2bbb");
81     WidgetVersion version(raw);
82
83     RUNNER_ASSERT(version.IsWac() == false);
84     RUNNER_ASSERT(version.Raw() == raw);
85 }
86
87 /*
88 Name: WidgetVersion_M2_O0_nonwac_4
89 Description: tests if version is recognized as wac version number
90 Expected: version should not be recognized as wac compatible
91 */
92 RUNNER_TEST(WidgetVersion_M2_O0_nonwac_4)
93 {
94     DPL::String raw(L"1a.a2");
95     WidgetVersion version(raw);
96
97     RUNNER_ASSERT(version.IsWac() == false);
98     RUNNER_ASSERT(version.Raw() == raw);
99 }
100
101 /*
102 Name: WidgetVersion_M2_O0_long
103 Description: tests correct parsing of version widget in format: [major].[minor]
104  for huge number
105 Expected: major and minor parts matches expected values
106 */
107 RUNNER_TEST(WidgetVersion_M2_O0_long)
108 {
109     DPL::String raw(
110         L"123456789012345678901234567890.98765432109876543210987654321");
111     WidgetVersion version(raw);
112
113     RUNNER_ASSERT(version.IsWac() == true);
114     RUNNER_ASSERT(version.Major() ==
115                   DPL::String(L"123456789012345678901234567890"));
116     RUNNER_ASSERT(version.Minor() ==
117                   DPL::String(L"98765432109876543210987654321"));
118     RUNNER_ASSERT(version.Micro() == DPL::Optional<DPL::String>());
119     RUNNER_ASSERT(version.Optional() == DPL::Optional<DPL::String>());
120     RUNNER_ASSERT(version.Raw() == raw);
121 }
122
123 /*
124 Name: WidgetVersion_M3_O0
125 Description: tests correct wac version number
126 Expected: major and minor and micro parts matches expected values.
127  Version should be recognized as wac compatible
128 */
129 RUNNER_TEST(WidgetVersion_M3_O0)
130 {
131     DPL::String raw(L"1.2.3");
132     WidgetVersion version(raw);
133
134     RUNNER_ASSERT(version.IsWac() == true);
135     RUNNER_ASSERT(version.Major() == DPL::String(L"1"));
136     RUNNER_ASSERT(version.Minor() == DPL::String(L"2"));
137     RUNNER_ASSERT(version.Micro() == DPL::Optional<DPL::String>(L"3"));
138     RUNNER_ASSERT(version.Optional() == DPL::Optional<DPL::String>());
139     RUNNER_ASSERT(version.Raw() == raw);
140 }
141
142 /*
143 Name: WidgetVersion_M3_O0_nonwac_1
144 Description: tests if version is recognized as wac version number
145 Expected: version should not be recognized as wac compatible
146 */
147 RUNNER_TEST(WidgetVersion_M3_O0_nonwac_1)
148 {
149     DPL::String raw(L"a1a.2.3");
150     WidgetVersion version(raw);
151
152     RUNNER_ASSERT(version.IsWac() == false);
153     RUNNER_ASSERT(version.Raw() == raw);
154 }
155
156 /*
157 Name: WidgetVersion_M3_O0_nonwac_2
158 Description: tests if version is recognized as wac version number
159 Expected: version should not be recognized as wac compatible
160 */
161 RUNNER_TEST(WidgetVersion_M3_O0_nonwac_2)
162 {
163     DPL::String raw(L"1.b2.3");
164     WidgetVersion version(raw);
165
166     RUNNER_ASSERT(version.IsWac() == false);
167     RUNNER_ASSERT(version.Raw() == raw);
168 }
169
170 /*
171 Name: WidgetVersion_M3_O0_nonwac_3
172 Description: tests if version is recognized as wac version number
173 Expected: version should not be recognized as wac compatible
174 */
175 RUNNER_TEST(WidgetVersion_M3_O0_nonwac_3)
176 {
177     DPL::String raw(L"1.2.3c");
178     WidgetVersion version(raw);
179
180     RUNNER_ASSERT(version.IsWac() == false);
181     RUNNER_ASSERT(version.Raw() == raw);
182 }
183
184 /*
185 Name: WidgetVersion_M3_O0_nonwac_4
186 Description: tests if version is recognized as wac version number
187 Expected: version should not be recognized as wac compatible
188 */
189 RUNNER_TEST(WidgetVersion_M3_O0_nonwac_4)
190 {
191     DPL::String raw(L"1.2.3a");
192     WidgetVersion version(raw);
193
194     RUNNER_ASSERT(version.IsWac() == false);
195     RUNNER_ASSERT(version.Raw() == raw);
196 }
197
198 /*
199 Name: WidgetVersion_M3_O1_1
200 Description: tests correct wac version number with optional part
201 Expected: major and minor and micro and optional parts matches expected values.
202  Version should be recognized as wac compatible
203 */
204 RUNNER_TEST(WidgetVersion_M3_O1_1)
205 {
206     DPL::String raw(L"1.2.3 test111");
207     WidgetVersion version(raw);
208
209     RUNNER_ASSERT(version.IsWac() == true);
210     RUNNER_ASSERT(version.Major() == DPL::String(L"1"));
211     RUNNER_ASSERT(version.Minor() == DPL::String(L"2"));
212     RUNNER_ASSERT(version.Micro() == DPL::Optional<DPL::String>(L"3"));
213     RUNNER_ASSERT(version.Optional() == DPL::Optional<DPL::String>(L"test111"));
214     RUNNER_ASSERT(version.Raw() == raw);
215 }
216
217 /*
218 Name: WidgetVersion_M3_O1_1
219 Description: tests correct wac version number with numeric optional part
220 Expected: major and minor and micro and optional parts matches expected values.
221  Version should be recognized as wac compatible
222 */
223 RUNNER_TEST(WidgetVersion_M3_O1_2)
224 {
225     DPL::String raw(L"1.2.3 111");
226     WidgetVersion version(raw);
227
228     RUNNER_ASSERT(version.IsWac() == true);
229     RUNNER_ASSERT(version.Major() == DPL::String(L"1"));
230     RUNNER_ASSERT(version.Minor() == DPL::String(L"2"));
231     RUNNER_ASSERT(version.Micro() == DPL::Optional<DPL::String>(L"3"));
232     RUNNER_ASSERT(version.Optional() == DPL::Optional<DPL::String>(L"111"));
233     RUNNER_ASSERT(version.Raw() == raw);
234 }
235
236 /*
237 Name: WidgetVersion_M3_O1_3
238 Description: tests if version is recognized as wac version number
239  when trailer spaces exists
240 Expected: version should not be recognized as wac compatible
241 */
242 RUNNER_TEST(WidgetVersion_M3_O1_3)
243 {
244     DPL::String raw(L"1.2.3 ");
245     WidgetVersion version(raw);
246
247     RUNNER_ASSERT(version.IsWac() == false);
248     RUNNER_ASSERT(version.Raw() == raw);
249 }
250
251 /*
252 Name: WidgetVersion_M2_O1_1
253 Description: tests if version is recognized as wac version number
254  when optional part
255 Expected: version should be recognized as wac compatible
256 */
257 RUNNER_TEST(WidgetVersion_M2_O1_1)
258 {
259     DPL::String raw(L"1.2 t");
260     WidgetVersion version(raw);
261
262     RUNNER_ASSERT(version.IsWac() == true);
263     RUNNER_ASSERT(version.Major() == DPL::String(L"1"));
264     RUNNER_ASSERT(version.Minor() == DPL::String(L"2"));
265     RUNNER_ASSERT(version.Micro() == DPL::Optional<DPL::String>());
266     RUNNER_ASSERT(version.Optional() == DPL::Optional<DPL::String>(L"t"));
267     RUNNER_ASSERT(version.Raw() == raw);
268 }
269
270 /*
271 Name: WidgetVersion_Strange_0
272 Description: tests if version is recognized as wac version number
273 Expected: version should be recognized as wac compatible
274 */
275 RUNNER_TEST(WidgetVersion_Strange_0)
276 {
277     DPL::String raw(L"1");
278     WidgetVersion version(raw);
279
280     RUNNER_ASSERT(version.IsWac() == false);
281     RUNNER_ASSERT(version.Raw() == raw);
282 }
283
284 /*
285 Name: WidgetVersion_Strange_1
286 Description: tests if version is recognized as wac version number
287 Expected: version should not be recognized as wac compatible
288 */
289 RUNNER_TEST(WidgetVersion_Strange_1)
290 {
291     DPL::String raw(L".1");
292     WidgetVersion version(raw);
293
294     RUNNER_ASSERT(version.IsWac() == false);
295     RUNNER_ASSERT(version.Raw() == raw);
296 }
297
298 /*
299 Name: WidgetVersion_Strange_2
300 Description: tests if version is recognized as wac version number
301 Expected: version should not be recognized as wac compatible
302 */
303 RUNNER_TEST(WidgetVersion_Strange_2)
304 {
305     DPL::String raw(L"..1");
306     WidgetVersion version(raw);
307
308     RUNNER_ASSERT(version.IsWac() == false);
309     RUNNER_ASSERT(version.Raw() == raw);
310 }
311
312 /*
313 Name: WidgetVersion_Strange_3
314 Description: tests if version is recognized as wac version number
315 Expected: version should not be recognized as wac compatible
316 */
317 RUNNER_TEST(WidgetVersion_Strange_3)
318 {
319     DPL::String raw(L"...1");
320     WidgetVersion version(raw);
321
322     RUNNER_ASSERT(version.IsWac() == false);
323     RUNNER_ASSERT(version.Raw() == raw);
324 }
325
326 /*
327 Name: WidgetVersion_Strange_4
328 Description: tests if version is recognized as wac version number
329 Expected: version should not be recognized as wac compatible
330 */
331 RUNNER_TEST(WidgetVersion_Strange_4)
332 {
333     DPL::String raw(L"qwerty");
334     WidgetVersion version(raw);
335
336     RUNNER_ASSERT(version.IsWac() == false);
337     RUNNER_ASSERT(version.Raw() == raw);
338 }
339
340 /*
341 Name: WidgetVersion_Strange_5
342 Description: tests if version is recognized as wac version number
343 Expected: version should not be recognized as wac compatible
344 */
345 RUNNER_TEST(WidgetVersion_Strange_5)
346 {
347     DPL::String raw(L"!@#$%^&*()_+   ^&%^*&%$^*&%*()&   JHKJLHKJLH   685685687");
348     WidgetVersion version(raw);
349
350     RUNNER_ASSERT(version.IsWac() == false);
351     RUNNER_ASSERT(version.Raw() == raw);
352 }
353
354 /*
355 Name: WidgetVersion_Compare_0
356 Description: tests version comparision in format [major].[minor]
357 Expected: compare should work as expected
358 */
359 RUNNER_TEST(WidgetVersion_Compare_0)
360 {
361     RUNNER_ASSERT(WidgetVersion(L"1.1") < WidgetVersion(L"1.2"));
362 }
363
364 /*
365 Name: WidgetVersion_Compare_1
366 Description: tests version comparision in format [major].[minor]
367 Expected: compare should work as expected
368 */
369 RUNNER_TEST(WidgetVersion_Compare_1)
370 {
371     RUNNER_ASSERT(WidgetVersion(L"01.001") < WidgetVersion(L"0001.002"));
372 }
373
374 /*
375 Name: WidgetVersion_Compare_2
376 Description: tests version equality in format [major].[minor]
377 Expected: versions should be equal
378 */
379 RUNNER_TEST(WidgetVersion_Compare_2)
380 {
381     RUNNER_ASSERT(WidgetVersion(L"0.1") == WidgetVersion(L"00.1"));
382 }
383
384 /*
385 Name: WidgetVersion_Compare_3
386 Description: tests version comparision in format [major].[minor] [optional]
387 Expected: compare should work as expected
388 */
389 RUNNER_TEST(WidgetVersion_Compare_3)
390 {
391     RUNNER_ASSERT(WidgetVersion(L"1.00000000000000") >=
392                   WidgetVersion(L"1.0 test"));
393 }
394
395 /*
396 Name: WidgetVersion_Compare_4
397 Description: tests version comparision for huge numbers
398 Expected: compare should work as expected
399 */
400 RUNNER_TEST(WidgetVersion_Compare_4)
401 {
402     RUNNER_ASSERT(WidgetVersion(
403                       L"19647963733338932479072098437089778943732432.00000000000000004324324324324321")
404                   > WidgetVersion(L"4324324324324324324321.000432"));
405 }
406
407 /*
408 Name: WidgetVersion_Compare_5
409 Description: tests equality in format [major].[minor]
410 Expected: versions should be equal
411 */
412 RUNNER_TEST(WidgetVersion_Compare_5)
413 {
414     RUNNER_ASSERT(WidgetVersion(L"12345.1") == WidgetVersion(L"12345.1"));
415 }
416
417 /*
418 Name: WidgetVersion_Compare_6
419 Description: tests version equality in format [major].[minor]
420 Expected: versions should not be equal
421 */
422 RUNNER_TEST(WidgetVersion_Compare_6)
423 {
424     RUNNER_ASSERT(WidgetVersion(L"1.1") != WidgetVersion(L"1.11"));
425 }
426
427 /*
428 Name: WidgetVersion_Compare_7
429 Description: tests version equality in format [major].[minor] [optional]
430 Expected: versions should be equal, optional part should not be taken into account
431 */
432 RUNNER_TEST(WidgetVersion_Compare_7)
433 {
434     RUNNER_ASSERT(WidgetVersion(L"000123000.0 notatest") ==
435                   WidgetVersion(L"00123000.0 testtesttest"));
436 }