1 //******************************************************************
3 // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #include <gtest/gtest.h>
25 #include <boost/lexical_cast.hpp>
26 namespace OCRepresentationTest
32 void parsedEqual(double expected, const std::string& actualStr)
34 double actual = boost::lexical_cast<double>(actualStr);
35 EXPECT_GE(actual, expected - .0000001);
36 EXPECT_LE(actual, expected + .0000001);
39 // getValueToString(all types)
40 TEST(OCRepresentationValueToString, Null)
42 static const std::string AttrName = "NullTest";
44 rep.setNULL(AttrName);
46 EXPECT_TRUE(rep.isNULL(AttrName));
47 EXPECT_EQ("(null)", rep.getValueToString(AttrName));
48 EXPECT_EQ("(null)", rep[AttrName].getValueToString());
51 TEST(OCRepresentationValueToString, Integer)
53 static const std::string AttrName = "IntTest";
56 rep.setValue(AttrName, -5);
57 EXPECT_EQ("-5", rep.getValueToString(AttrName));
58 EXPECT_EQ("-5", rep[AttrName].getValueToString());
60 rep.setValue(AttrName, 0);
61 EXPECT_EQ("0", rep.getValueToString(AttrName));
62 EXPECT_EQ("0", rep[AttrName].getValueToString());
64 rep.setValue(AttrName, 5);
65 EXPECT_EQ("5", rep.getValueToString(AttrName));
66 EXPECT_EQ("5", rep[AttrName].getValueToString());
68 rep.setValue(AttrName, 54321);
69 EXPECT_EQ("54321", rep.getValueToString(AttrName));
70 EXPECT_EQ("54321", rep[AttrName].getValueToString());
73 TEST(OCRepresentationValueToString, Double)
75 static const std::string AttrName = "DoubleTest";
78 rep.setValue(AttrName, -5.0);
79 parsedEqual(-5.0, rep.getValueToString(AttrName));
80 parsedEqual(-5.0, rep[AttrName].getValueToString());
82 rep.setValue(AttrName, 0.0);
83 parsedEqual(0.0, rep.getValueToString(AttrName));
84 parsedEqual(0.0, rep[AttrName].getValueToString());
86 rep.setValue(AttrName, 5.0);
87 parsedEqual(5.0, rep.getValueToString(AttrName));
88 parsedEqual(5.0, rep[AttrName].getValueToString());
90 rep.setValue(AttrName, 54321.0);
91 parsedEqual(54321.0, rep.getValueToString(AttrName));
92 parsedEqual(54321.0, rep[AttrName].getValueToString());
94 rep.setValue(AttrName, 3.55);
95 parsedEqual(3.55, rep.getValueToString(AttrName));
96 parsedEqual(3.55, rep[AttrName].getValueToString());
98 rep.setValue(AttrName, -4.95);
99 parsedEqual(-4.95, rep.getValueToString(AttrName));
100 parsedEqual(-4.95, rep[AttrName].getValueToString());
102 rep.setValue(AttrName, 99999.5555);
103 parsedEqual(99999.5555, rep.getValueToString(AttrName));
104 parsedEqual(99999.5555, rep[AttrName].getValueToString());
107 TEST(OCRepresentationValueToString, Boolean)
109 static const std::string AttrName = "BooleanTest";
110 OCRepresentation rep;
112 rep.setValue(AttrName, false);
113 EXPECT_EQ("false", rep.getValueToString(AttrName));
114 EXPECT_EQ("false", rep[AttrName].getValueToString());
116 rep.setValue(AttrName, true);
117 EXPECT_EQ("true", rep.getValueToString(AttrName));
118 EXPECT_EQ("true", rep[AttrName].getValueToString());
121 TEST(OCRepresentationValueToString, String)
123 static const std::string AttrName = "StringTest";
124 OCRepresentation rep;
126 rep.setValue(AttrName, std::string("test 1"));
127 EXPECT_EQ("test 1", rep.getValueToString(AttrName));
128 EXPECT_EQ("test 1", rep[AttrName].getValueToString());
130 rep.setValue(AttrName, std::string("test 2"));
131 EXPECT_EQ("test 2", rep.getValueToString(AttrName));
132 EXPECT_EQ("test 2", rep[AttrName].getValueToString());
135 TEST(OCRepresentationValueToString, SubRepresentation)
137 static const std::string AttrName = "SubRepTest";
138 OCRepresentation rep;
139 OCRepresentation sub1;
140 OCRepresentation sub2;
142 rep.setValue(AttrName, sub1);
143 EXPECT_EQ("OC::OCRepresentation", rep.getValueToString(AttrName));
144 EXPECT_EQ("OC::OCRepresentation", rep[AttrName].getValueToString());
146 rep.setValue(AttrName, sub2);
147 EXPECT_EQ("OC::OCRepresentation", rep.getValueToString(AttrName));
148 EXPECT_EQ("OC::OCRepresentation", rep[AttrName].getValueToString());
151 TEST(OCRepresentationValueToString, ByteString)
153 static const std::string AttrName = "ByteStringTest";
154 static uint8_t binval[] = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8,
155 0x9, 0x0, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF};
157 OCByteString bytestring {binval, sizeof(binval)};
158 OCRepresentation rep;
160 rep.setValue(AttrName, bytestring);
161 const char* expected = "\\x1\\x2\\x3\\x4\\x5\\x6\\x7\\x8"
162 "\\x9\\x0\\xa\\xb\\xc\\xd\\xe\\xf";
163 EXPECT_STREQ(expected, rep.getValueToString(AttrName).c_str() );
166 TEST(OCRepresentationValueToString, IntegerVector)
168 static const std::string AttrName = "VectorTest";
169 OCRepresentation rep;
171 vector<int> vect {1,2,3,4,5,6,7,8,9};
172 vector<int> vect2 {-5,-3,-1,0,5,3,2};
173 rep.setValue(AttrName, vect);
174 EXPECT_EQ("[1 2 3 4 5 6 7 8 9 ]", rep.getValueToString(AttrName));
175 EXPECT_EQ("[1 2 3 4 5 6 7 8 9 ]", rep[AttrName].getValueToString());
177 rep.setValue(AttrName, vect2);
178 EXPECT_EQ("[-5 -3 -1 0 5 3 2 ]", rep.getValueToString(AttrName));
179 EXPECT_EQ("[-5 -3 -1 0 5 3 2 ]", rep[AttrName].getValueToString());
182 TEST(OCRepresentationValueToString, IntegerVectorVector)
184 static const std::string AttrName = "VectorTest";
185 OCRepresentation rep;
187 vector<int> vect1 {1,2,3,4,5,6,7,8,9};
188 vector<int> vect2 {-5,-3,-1,0,5,3,2};
189 vector<vector<int>> vect{vect1, vect2};
191 rep.setValue(AttrName, vect);
192 static const string Expected = "[[1 2 3 4 5 6 7 8 9 ] [-5 -3 -1 0 5 3 2 ] ]";
193 EXPECT_EQ(Expected, rep.getValueToString(AttrName));
194 EXPECT_EQ(Expected, rep[AttrName].getValueToString());
197 TEST(OCRepresentationValueToString, IntegerVectorVectorVector)
199 static const std::string AttrName = "VectorTest";
200 OCRepresentation rep;
202 vector<int> vect11 {1,2,3,4,5,6,7,8,9};
203 vector<int> vect12 {-5,-3,-1,0,5,3,2};
204 vector<vector<int>> vect1{vect11, vect12};
205 vector<int> vect21 {2,0,1,6,9,3,8};
206 vector<int> vect22 {9,7,8,100003};
207 vector<vector<int>> vect2{vect21, vect22};
208 vector<vector<vector<int>>> vect{vect1, vect2};
209 rep.setValue(AttrName, vect);
210 static const std::string Expected =
211 "[[[1 2 3 4 5 6 7 8 9 ] [-5 -3 -1 0 5 3 2 ] ] [[2 0 1 6 9 3 8 ] [9 7 8 100003 ] ] ]";
212 EXPECT_EQ(Expected, rep.getValueToString(AttrName));
213 EXPECT_EQ(Expected, rep[AttrName].getValueToString());
216 TEST(OCRepresentationValueToString, DoubleVector)
218 static const std::string AttrName = "VectorTest";
219 OCRepresentation rep;
221 vector<double> vect {3.12, -5.3, 7.5, 1.110};
222 vector<double> vect2 {2.1, -555.5, 0.0001, -0.2};
223 rep.setValue(AttrName, vect);
224 EXPECT_EQ(rep.getValueToString(AttrName), rep[AttrName].getValueToString());
226 rep.setValue(AttrName, vect2);
227 EXPECT_EQ(rep.getValueToString(AttrName), rep[AttrName].getValueToString());
230 TEST(OCRepresentationValueToString, DoubleVectorVector)
232 static const std::string AttrName = "VectorTest";
233 OCRepresentation rep;
234 vector<double> vect1 {30.1,5.88,-22.0,0};
235 vector<double> vect2 {2.1,-55.5,0.1100,-.2};
236 vector<vector<double>> vect{vect1, vect2};
238 rep.setValue(AttrName, vect);
239 EXPECT_EQ(rep.getValueToString(AttrName), rep[AttrName].getValueToString());
242 TEST(OCRepresentationValueToString, DoubleVectorVectorVector)
244 static const std::string AttrName = "VectorTest";
245 OCRepresentation rep;
247 vector<double> vect11 {3.01, 5.88, -22.0, 0.0};
248 vector<double> vect12 {99.3,8.0,.01236,-.22};
249 vector<vector<double>> vect1{vect11, vect12};
250 vector<double> vect21 {9.0,-1};
251 vector<double> vect22 {-99.2};
252 vector<vector<double>> vect2{vect21, vect22};
253 vector<vector<vector<double>>> vect{vect1, vect2};
254 rep.setValue(AttrName, vect);
255 EXPECT_EQ(rep.getValueToString(AttrName), rep[AttrName].getValueToString());
258 TEST(OCRepresentationValueToString, BooleanVector)
260 static const std::string AttrName = "VectorTest";
261 OCRepresentation rep;
263 vector<bool> vect {true, false, false, true};
264 vector<bool> vect2 {false, false, false, true};
265 rep.setValue(AttrName, vect);
266 EXPECT_EQ("[true false false true ]", rep.getValueToString(AttrName));
267 EXPECT_EQ("[true false false true ]", rep[AttrName].getValueToString());
269 rep.setValue(AttrName, vect2);
270 EXPECT_EQ("[false false false true ]", rep.getValueToString(AttrName));
271 EXPECT_EQ("[false false false true ]", rep[AttrName].getValueToString());
274 TEST(OCRepresentationValueToString, BooleanVectorVector)
276 static const std::string AttrName = "VectorTest";
277 OCRepresentation rep;
279 vector<bool> vect1 {true, false, false, true};
280 vector<bool> vect2 {false, false, false, true};
281 vector<vector<bool>> vect{vect1, vect2};
283 rep.setValue(AttrName, vect);
284 static const string Expected="[[true false false true ] [false false false true ] ]";
286 EXPECT_EQ(Expected, rep.getValueToString(AttrName));
287 EXPECT_EQ(Expected, rep[AttrName].getValueToString());
290 TEST(OCRepresentationValueToString, BooleanVectorVectorVector)
292 static const std::string AttrName = "VectorTest";
293 OCRepresentation rep;
295 vector<bool> vect11 {true, false, false, true};
296 vector<bool> vect12 {false, false, false, true};
297 vector<vector<bool>> vect1{vect11, vect12};
298 vector<bool> vect21 {false, true, true, false};
299 vector<bool> vect22 {true, true, true, false};
300 vector<vector<bool>> vect2{vect21, vect22};
301 vector<vector<vector<bool>>> vect{vect1, vect2};
302 rep.setValue(AttrName, vect);
303 static const std::string Expected =
304 "[[[true false false true ] [false false false true ] ]"
305 " [[false true true false ] [true true true false ] ] ]";
306 EXPECT_EQ(Expected, rep.getValueToString(AttrName));
307 EXPECT_EQ(Expected, rep[AttrName].getValueToString());
310 TEST(OCRepresentationValueToString, StringVector)
312 static const std::string AttrName = "VectorTest";
313 OCRepresentation rep;
315 vector<string> vect {"s1", "s2", "s3"};
316 vector<string> vect2 {"s4", "s5", "s6"};
317 rep.setValue(AttrName, vect);
318 EXPECT_EQ("[s1 s2 s3 ]", rep.getValueToString(AttrName));
319 EXPECT_EQ("[s1 s2 s3 ]", rep[AttrName].getValueToString());
321 rep.setValue(AttrName, vect2);
322 EXPECT_EQ("[s4 s5 s6 ]", rep.getValueToString(AttrName));
323 EXPECT_EQ("[s4 s5 s6 ]", rep[AttrName].getValueToString());
326 TEST(OCRepresentationValueToString, StringVectorVector)
328 static const std::string AttrName = "VectorTest";
329 OCRepresentation rep;
331 vector<string> vect1 {"s1", "s2", "s3"};
332 vector<string> vect2 {"s4", "s5", "s6"};
333 vector<vector<string>> vect{vect1, vect2};
335 rep.setValue(AttrName, vect);
336 static const string Expected="[[s1 s2 s3 ] [s4 s5 s6 ] ]";
338 EXPECT_EQ(Expected, rep.getValueToString(AttrName));
339 EXPECT_EQ(Expected, rep[AttrName].getValueToString());
342 TEST(OCRepresentationValueToString, StringVectorVectorVector)
344 static const std::string AttrName = "VectorTest";
345 OCRepresentation rep;
347 vector<string> vect11 {"s1", "s2", "s3"};
348 vector<string> vect12 {"s4", "s5", "s6"};
349 vector<vector<string>> vect1{vect11, vect12};
350 vector<string> vect21 {"s7", "s8"};
351 vector<string> vect22 {"s9"};
352 vector<vector<string>> vect2{vect21, vect22};
353 vector<vector<vector<string>>> vect{vect1, vect2};
354 rep.setValue(AttrName, vect);
355 static const std::string Expected =
356 "[[[s1 s2 s3 ] [s4 s5 s6 ] ]"
357 " [[s7 s8 ] [s9 ] ] ]";
358 EXPECT_EQ(Expected, rep.getValueToString(AttrName));
359 EXPECT_EQ(Expected, rep[AttrName].getValueToString());
362 TEST(OCRepresentationValueToByteString, ByteStringVector)
364 static const std::string AttrName = "VectorTest";
365 OCRepresentation rep;
367 uint8_t binval1[] = {0x1, 0x2, 0x3, 0x4};
368 OCByteString s1 {binval1, sizeof(binval1)};
369 uint8_t binval2[] = {0x5, 0x6, 0x7, 0x8};
370 OCByteString s2 {binval2, sizeof(binval2)};
371 uint8_t binval3[] = {0x9, 0x0, 0xA, 0xB};
372 OCByteString s3 {binval3, sizeof(binval3)};
373 vector<OCByteString> vect {s1, s2, s3};
375 uint8_t binval4[] = {0xC, 0xD, 0xE, 0xF};
376 OCByteString s4 {binval4, sizeof(binval4)};
377 uint8_t binval5[] = {0x11, 0x12, 0x13, 0x14};
378 OCByteString s5 {binval5, sizeof(binval5)};
379 uint8_t binval6[] = {0x15, 0x16, 0x17, 0x18};
380 OCByteString s6 {binval6, sizeof(binval6)};
381 vector<OCByteString> vect2 {s4, s5, s6};
383 rep.setValue(AttrName, vect);
384 const char *expected1tob = "[\\x1\\x2\\x3\\x4 \\x5\\x6\\x7\\x8 \\x9\\x0\\xa\\xb ]";
385 EXPECT_EQ(expected1tob, rep.getValueToString(AttrName));
386 EXPECT_EQ(expected1tob, rep[AttrName].getValueToString());
388 rep.setValue(AttrName, vect2);
389 const char *expectedcto18 = "[\\xc\\xd\\xe\\xf \\x11\\x12\\x13\\x14 \\x15\\x16\\x17\\x18 ]";
390 EXPECT_EQ(expectedcto18, rep.getValueToString(AttrName));
391 EXPECT_EQ(expectedcto18, rep[AttrName].getValueToString());
394 TEST(OCRepresentationValueToByteString, ByteStringVectorVector)
396 static const std::string AttrName = "VectorTest";
397 OCRepresentation rep;
399 uint8_t binval1[] = {0x1, 0x2, 0x3, 0x4};
400 OCByteString s1 {binval1, sizeof(binval1)};
401 uint8_t binval2[] = {0x5, 0x6, 0x7, 0x8};
402 OCByteString s2 {binval2, sizeof(binval2)};
403 uint8_t binval3[] = {0x9, 0x0, 0xA, 0xB};
404 OCByteString s3 {binval3, sizeof(binval3)};
405 vector<OCByteString> vect1 {s1, s2, s3};
407 uint8_t binval4[] = {0xC, 0xD, 0xE, 0xF};
408 OCByteString s4 {binval4, sizeof(binval4)};
409 uint8_t binval5[] = {0x11, 0x12, 0x13, 0x14};
410 OCByteString s5 {binval5, sizeof(binval5)};
411 uint8_t binval6[] = {0x15, 0x16, 0x17, 0x18};
412 OCByteString s6 {binval6, sizeof(binval6)};
413 vector<OCByteString> vect2 {s4, s5, s6};
415 vector<vector<OCByteString>> vect {vect1, vect2};
417 rep.setValue(AttrName, vect);
419 const char *expected =
421 "\\x1\\x2\\x3\\x4 \\x5\\x6\\x7\\x8 \\x9\\x0\\xa\\xb "
423 "\\xc\\xd\\xe\\xf \\x11\\x12\\x13\\x14 \\x15\\x16\\x17\\x18 "
427 EXPECT_EQ(expected, rep.getValueToString(AttrName));
428 EXPECT_EQ(expected, rep[AttrName].getValueToString());
431 TEST(OCRepresentationValueToByteString, ByteStringVectorVectorVector)
433 static const std::string AttrName = "VectorTest";
434 OCRepresentation rep;
436 uint8_t binval1[] = {0x1, 0x2, 0x3, 0x4};
437 OCByteString s1 {binval1, sizeof(binval1)};
438 uint8_t binval2[] = {0x5, 0x6, 0x7, 0x8};
439 OCByteString s2 {binval2, sizeof(binval2)};
440 uint8_t binval3[] = {0x9, 0x0, 0xA, 0xB};
441 OCByteString s3 {binval3, sizeof(binval3)};
442 vector<OCByteString> vect11 {s1, s2, s3};
444 uint8_t binval4[] = {0xC, 0xD, 0xE, 0xF};
445 OCByteString s4 {binval4, sizeof(binval4)};
446 uint8_t binval5[] = {0x11, 0x12, 0x13, 0x14};
447 OCByteString s5 {binval5, sizeof(binval5)};
448 uint8_t binval6[] = {0x15, 0x16, 0x17, 0x18};
449 OCByteString s6 {binval6, sizeof(binval6)};
450 vector<OCByteString> vect12 {s4, s5, s6};
452 uint8_t binval7[] = {0x19, 0x10, 0x1A, 0x1B};
453 OCByteString s7 {binval7, sizeof(binval7)};
454 uint8_t binval8[] = {0x1C, 0x1D, 0x1E, 0x1F};
455 OCByteString s8 {binval8, sizeof(binval8)};
456 vector<OCByteString> vect21 {s7, s8};
458 uint8_t binval9[] = {0x21, 0x22, 0x23, 0x24};
459 OCByteString s9 {binval9, sizeof(binval9)};
460 vector<OCByteString> vect22 {s9};
462 vector<vector<OCByteString>> vect1 {vect11, vect12};
463 vector<vector<OCByteString>> vect2 {vect21, vect22};
464 vector<vector<vector<OCByteString>>> vect {vect1, vect2};
465 rep.setValue(AttrName, vect);
466 static const std::string expected =
468 "\\x1\\x2\\x3\\x4 \\x5\\x6\\x7\\x8 \\x9\\x0\\xa\\xb "
470 "\\xc\\xd\\xe\\xf \\x11\\x12\\x13\\x14 \\x15\\x16\\x17\\x18 "
472 "\\x19\\x10\\x1a\\x1b \\x1c\\x1d\\x1e\\x1f "
474 "\\x21\\x22\\x23\\x24 "
477 EXPECT_EQ(expected, rep.getValueToString(AttrName));
478 EXPECT_EQ(expected, rep[AttrName].getValueToString());
481 TEST(OCRepresentationValueToString, SubRepresentationVector)
483 static const std::string AttrName = "VectorTest";
484 OCRepresentation rep;
486 OCRepresentation sub1;
487 OCRepresentation sub2;
488 vector<OCRepresentation> vect {sub1, sub2};
489 rep.setValue(AttrName, vect);
490 EXPECT_EQ("[OC::OCRepresentation OC::OCRepresentation ]", rep.getValueToString(AttrName));
491 EXPECT_EQ("[OC::OCRepresentation OC::OCRepresentation ]", rep[AttrName].getValueToString());
494 TEST(OCRepresentationValueToString, SubRepresentationVectorVector)
496 static const std::string AttrName = "VectorTest";
497 OCRepresentation rep;
499 OCRepresentation sub1;
500 OCRepresentation sub2;
501 OCRepresentation sub3;
502 OCRepresentation sub4;
503 vector<OCRepresentation> vect1 {sub1, sub2};
504 vector<OCRepresentation> vect2 {sub3, sub4};
505 vector<vector<OCRepresentation>> vect{vect1, vect2};
506 rep.setValue(AttrName, vect);
507 static const string Expected = "[[OC::OCRepresentation OC::OCRepresentation ]"
508 " [OC::OCRepresentation OC::OCRepresentation ] ]";
509 EXPECT_EQ(Expected, rep.getValueToString(AttrName));
510 EXPECT_EQ(Expected, rep[AttrName].getValueToString());
513 TEST(OCRepresentationValueToString, SubRepresentationVectorVectorVector)
515 static const std::string AttrName = "VectorTest";
516 OCRepresentation rep;
518 OCRepresentation sub1;
519 OCRepresentation sub2;
520 OCRepresentation sub3;
521 OCRepresentation sub4;
522 OCRepresentation sub5;
523 OCRepresentation sub6;
525 vector<OCRepresentation> vect11 {sub1, sub2};
526 vector<OCRepresentation> vect12 {sub3, sub4};
527 vector<vector<OCRepresentation>> vect1{vect11, vect12};
528 vector<OCRepresentation> vect21 {sub5};
529 vector<OCRepresentation> vect22 {sub6};
530 vector<vector<OCRepresentation>> vect2{vect21, vect22};
531 vector<vector<vector<OCRepresentation>>> vect{vect1, vect2};
533 rep.setValue(AttrName, vect);
534 static const string Expected =
535 "[[[OC::OCRepresentation OC::OCRepresentation ] "
536 "[OC::OCRepresentation OC::OCRepresentation ] ] "
537 "[[OC::OCRepresentation ] [OC::OCRepresentation ] ] ]";
538 EXPECT_EQ(Expected, rep.getValueToString(AttrName));
539 EXPECT_EQ(Expected, rep[AttrName].getValueToString());
542 // Subscript get/set (all types)
543 TEST(OCRepresentationSubscript, NullPtr)
545 static const std::string AttrName = "NullTest";
546 OCRepresentation rep;
547 rep[AttrName] = nullptr;
548 EXPECT_TRUE(rep.isNULL(AttrName));
550 // @todo: Re-enable this part of the unit test. MSVC can't assign to nullptr_t.
552 std::nullptr_t repout = rep[AttrName];
553 std::nullptr_t repout2;
554 repout2 = rep[AttrName];
556 EXPECT_EQ(nullptr, repout);
557 EXPECT_EQ(nullptr, repout2);
561 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
563 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
568 TEST(OCRepresentationSubscript, Integer)
570 static const std::string AttrName = "IntTest";
571 OCRepresentation rep;
573 rep[AttrName] = repsource;
574 int repout = rep[AttrName];
576 repout2 = rep[AttrName];
578 EXPECT_EQ(repsource, repout);
579 EXPECT_EQ(repsource, repout2);
582 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
584 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
589 TEST(OCRepresentationSubscript, Double)
591 static const std::string AttrName = "DoubleTest";
592 OCRepresentation rep;
593 double repsource = -5.33;
594 rep[AttrName] = repsource;
595 double repout = rep[AttrName];
597 repout2 = rep[AttrName];
599 EXPECT_EQ(repsource, repout);
600 EXPECT_EQ(repsource, repout2);
603 EXPECT_FALSE(rep.getValue<int>(AttrName, badout));
605 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
610 //Disabled this test due to older GCC v4.6 fails for this test.
611 //We will enable it when we have a fix for it.
612 TEST(OCRepresentationSubscript, DISABLED_Boolean)
614 static const std::string AttrName = "BooleanTest";
615 OCRepresentation rep;
616 bool repsource = true;
617 rep[AttrName] = repsource;
618 bool repout = rep[AttrName];
620 repout2 = rep[AttrName];
622 EXPECT_EQ(repsource, repout);
623 EXPECT_EQ(repsource, repout2);
626 rep[AttrName] = repsource;
627 repout = rep[AttrName];
629 EXPECT_EQ(repsource, repout);
632 EXPECT_FALSE(rep.getValue<int>(AttrName, badout));
634 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
639 TEST(OCRepresentationSubscript, String)
641 static const std::string AttrName = "StringTest";
642 OCRepresentation rep;
643 string repsource = "This is a string!";
644 rep[AttrName] = repsource;
645 string repout = rep[AttrName];
647 repout2 = rep[AttrName];
649 EXPECT_EQ(repsource, repout);
650 EXPECT_EQ(repsource, repout2);
653 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
657 TEST(OCRepresentationSubscript, SubRepresentation)
659 static const std::string AttrName = "SubRepresentationTest";
660 OCRepresentation rep;
661 OCRepresentation repsource;
662 repsource.setUri("This is a uri");
664 rep[AttrName] = repsource;
665 OCRepresentation repout = rep[AttrName];
666 OCRepresentation repout2;
667 repout2 = rep[AttrName];
669 //OCRepresentation doesn't overload equality, so this just compares
670 //the value we set to ensure we got the same one out;
671 EXPECT_EQ(repsource.getUri(), repout.getUri());
672 EXPECT_EQ(repsource.getUri(), repout2.getUri());
675 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
677 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
682 TEST(OCRepresentationSubscript, IntegerVector)
684 static const std::string AttrName = "VectorTest";
685 OCRepresentation rep;
686 vector<int> repsource {1,2,3,4};
687 rep[AttrName] = repsource;
688 vector<int> repout = rep[AttrName];
690 repout2 = rep[AttrName];
692 EXPECT_EQ(repsource, repout);
693 EXPECT_EQ(repsource, repout2);
696 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
698 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
703 TEST(OCRepresentationSubscript, IntegerVectorVector)
705 static const std::string AttrName = "VectorTest";
706 OCRepresentation rep;
707 vector<vector<int>> repsource {{1,2,3,4},{5,6,7,8}};
708 rep[AttrName] = repsource;
709 vector<vector<int>> repout = rep[AttrName];
710 vector<vector<int>> repout2;
711 repout2 = rep[AttrName];
713 EXPECT_EQ(repsource, repout);
714 EXPECT_EQ(repsource, repout2);
717 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
719 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
724 TEST(OCRepresentationSubscript, IntegerVectorVectorVector)
726 static const std::string AttrName = "VectorTest";
727 OCRepresentation rep;
728 vector<vector<vector<int>>> repsource {{{1,2,3,4},{5,6,7,8}},{{9,10,11},{21,13}}};
729 rep[AttrName] = repsource;
730 vector<vector<vector<int>>> repout = rep[AttrName];
731 vector<vector<vector<int>>> repout2;
732 repout2 = rep[AttrName];
734 EXPECT_EQ(repsource, repout);
735 EXPECT_EQ(repsource, repout2);
738 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
740 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
745 TEST(OCRepresentationSubscript, DoubleVector)
747 static const std::string AttrName = "VectorTest";
748 OCRepresentation rep;
749 vector<double> repsource {1.1,2.2,3.2,4.2};
750 rep[AttrName] = repsource;
751 vector<double> repout = rep[AttrName];
752 vector<double> repout2;
753 repout2 = rep[AttrName];
755 EXPECT_EQ(repsource, repout);
756 EXPECT_EQ(repsource, repout2);
759 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
761 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
766 TEST(OCRepresentationSubscript, DoubleVectorVector)
768 static const std::string AttrName = "VectorTest";
769 OCRepresentation rep;
770 vector<vector<double>> repsource {{1.1,2.2,3.2,4.3},{5.5,6.6,7.8,.8}};
771 rep[AttrName] = repsource;
772 vector<vector<double>> repout = rep[AttrName];
773 vector<vector<double>> repout2;
774 repout2 = rep[AttrName];
776 EXPECT_EQ(repsource, repout);
777 EXPECT_EQ(repsource, repout2);
780 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
782 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
787 TEST(OCRepresentationSubscript, DoubleVectorVectorVector)
789 static const std::string AttrName = "VectorTest";
790 OCRepresentation rep;
791 vector<vector<vector<double>>> repsource {{{1.1,2.5,3.5,4.4},{.5,.6,7.8,8.9}},
792 {{9.8,10.8,11.8},{2.1,1.3}}};
793 rep[AttrName] = repsource;
794 vector<vector<vector<double>>> repout = rep[AttrName];
795 vector<vector<vector<double>>> repout2;
796 repout2 = rep[AttrName];
798 EXPECT_EQ(repsource, repout);
799 EXPECT_EQ(repsource, repout2);
802 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
804 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
809 TEST(OCRepresentationSubscript, BooleanVector)
811 static const std::string AttrName = "VectorTest";
812 OCRepresentation rep;
813 vector<bool> repsource {false, false, true};
814 rep[AttrName] = repsource;
815 vector<bool> repout = rep[AttrName];
816 vector<bool> repout2;
817 repout2 = rep[AttrName];
819 EXPECT_EQ(repsource, repout);
820 EXPECT_EQ(repsource, repout2);
823 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
825 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
830 TEST(OCRepresentationSubscript, BooleanVectorVector)
832 static const std::string AttrName = "VectorTest";
833 OCRepresentation rep;
834 vector<vector<bool>> repsource {{true, true},{false, true}};
835 rep[AttrName] = repsource;
836 vector<vector<bool>> repout = rep[AttrName];
837 vector<vector<bool>> repout2;
838 repout2 = rep[AttrName];
840 EXPECT_EQ(repsource, repout);
841 EXPECT_EQ(repsource, repout2);
844 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
846 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
851 TEST(OCRepresentationSubscript, BooleanVectorVectorVector)
853 static const std::string AttrName = "VectorTest";
854 OCRepresentation rep;
855 vector<vector<vector<bool>>> repsource {{{true, true, false},{true}},
856 {{true, false, false},{false, true, true}}};
857 rep[AttrName] = repsource;
858 vector<vector<vector<bool>>> repout = rep[AttrName];
859 vector<vector<vector<bool>>> repout2;
860 repout2 = rep[AttrName];
862 EXPECT_EQ(repsource, repout);
863 EXPECT_EQ(repsource, repout2);
866 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
868 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
873 TEST(OCRepresentationSubscript, StringVector)
875 static const std::string AttrName = "VectorTest";
876 OCRepresentation rep;
877 vector<string> repsource {"str1", "str2"};
878 rep[AttrName] = repsource;
879 vector<string> repout = rep[AttrName];
880 vector<string> repout2;
881 repout2 = rep[AttrName];
883 EXPECT_EQ(repsource, repout);
884 EXPECT_EQ(repsource, repout2);
887 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
889 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
894 TEST(OCRepresentationSubscript, StringVectorVector)
896 static const std::string AttrName = "VectorTest";
897 OCRepresentation rep;
898 vector<vector<string>> repsource {{"str1", "str2"},{"str3", "str4"}};
899 rep[AttrName] = repsource;
900 vector<vector<string>> repout = rep[AttrName];
901 vector<vector<string>> repout2;
902 repout2 = rep[AttrName];
904 EXPECT_EQ(repsource, repout);
905 EXPECT_EQ(repsource, repout2);
908 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
910 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
915 TEST(OCRepresentationSubscript, StringVectorVectorVector)
917 static const std::string AttrName = "VectorTest";
918 OCRepresentation rep;
919 vector<vector<vector<string>>> repsource {{{"str1", "str2"},{"str3", "str4"}},
920 {{"str5"},{"str6"}}};
921 rep[AttrName] = repsource;
922 vector<vector<vector<string>>> repout = rep[AttrName];
923 vector<vector<vector<string>>> repout2;
924 repout2 = rep[AttrName];
926 EXPECT_EQ(repsource, repout);
927 EXPECT_EQ(repsource, repout2);
930 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
932 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
937 TEST(OCRepresentationSubscript, SubRepresentationVector)
939 static const std::string AttrName = "VectorTest";
940 OCRepresentation rep;
941 OCRepresentation inner1, inner2;
942 inner1.setUri("inner1");
943 inner2.setUri("inner2");
944 vector<OCRepresentation> repsource {inner1, inner2};
945 rep[AttrName] = repsource;
946 vector<OCRepresentation> repout = rep[AttrName];
947 vector<OCRepresentation> repout2;
948 repout2 = rep[AttrName];
950 EXPECT_EQ(2u, repout.size());
951 EXPECT_EQ(inner1.getUri(), repout[0].getUri());
952 EXPECT_EQ(inner2.getUri(), repout[1].getUri());
953 EXPECT_EQ(2u, repout2.size());
954 EXPECT_EQ(inner1.getUri(), repout2[0].getUri());
955 EXPECT_EQ(inner2.getUri(), repout2[1].getUri());
958 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
960 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
965 TEST(OCRepresentationSubscript, SubRepresentationVectorVector)
967 static const std::string AttrName = "VectorTest";
968 OCRepresentation rep;
969 OCRepresentation inner1, inner2, inner3, inner4;
970 inner1.setUri("inner1");
971 inner2.setUri("inner2");
972 inner3.setUri("inner3");
973 inner4.setUri("inner4");
975 vector<vector<OCRepresentation>> repsource {{inner1, inner2}, {inner3, inner4}};
976 rep[AttrName] = repsource;
977 vector<vector<OCRepresentation>> repout = rep[AttrName];
978 vector<vector<OCRepresentation>> repout2;
979 repout2 = rep[AttrName];
981 EXPECT_EQ(2u, repout.size());
982 EXPECT_EQ(2u, repout[0].size());
983 EXPECT_EQ(inner1.getUri(), repout[0][0].getUri());
984 EXPECT_EQ(inner2.getUri(), repout[0][1].getUri());
985 EXPECT_EQ(2u, repout.size());
986 EXPECT_EQ(2u, repout[1].size());
987 EXPECT_EQ(inner3.getUri(), repout[1][0].getUri());
988 EXPECT_EQ(inner4.getUri(), repout[1][1].getUri());
990 EXPECT_EQ(2u, repout2.size());
991 EXPECT_EQ(2u, repout2[0].size());
992 EXPECT_EQ(inner1.getUri(), repout2[0][0].getUri());
993 EXPECT_EQ(inner2.getUri(), repout2[0][1].getUri());
994 EXPECT_EQ(2u, repout2.size());
995 EXPECT_EQ(2u, repout2[1].size());
996 EXPECT_EQ(inner3.getUri(), repout2[1][0].getUri());
997 EXPECT_EQ(inner4.getUri(), repout2[1][1].getUri());
1000 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
1002 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
1007 TEST(OCRepresentationSubscript, SubRepresentationVectorVectorVector)
1009 static const std::string AttrName = "VectorTest";
1010 OCRepresentation rep;
1011 OCRepresentation inner1, inner2, inner3, inner4, inner5, inner6, inner7, inner8;
1012 inner1.setUri("inner1");
1013 inner2.setUri("inner2");
1014 inner3.setUri("inner3");
1015 inner4.setUri("inner4");
1016 inner5.setUri("inner5");
1017 inner6.setUri("inner6");
1018 inner7.setUri("inner7");
1019 inner8.setUri("inner8");
1021 vector<vector<vector<OCRepresentation>>> repsource
1022 {{{inner1, inner2},{inner3, inner4}},{{inner5, inner6},{inner7,inner8}}};
1024 rep[AttrName] = repsource;
1025 vector<vector<vector<OCRepresentation>>> repout = rep[AttrName];
1026 vector<vector<vector<OCRepresentation>>> repout2;
1027 repout2 = rep[AttrName];
1029 EXPECT_EQ(2u, repout.size());
1030 EXPECT_EQ(2u, repout[0].size());
1031 EXPECT_EQ(2u, repout[0][0].size());
1032 EXPECT_EQ(inner1.getUri(), repout[0][0][0].getUri());
1033 EXPECT_EQ(inner2.getUri(), repout[0][0][1].getUri());
1034 EXPECT_EQ(2u, repout[0][1].size());
1035 EXPECT_EQ(inner3.getUri(), repout[0][1][0].getUri());
1036 EXPECT_EQ(inner4.getUri(), repout[0][1][1].getUri());
1037 EXPECT_EQ(2u, repout[1].size());
1038 EXPECT_EQ(2u, repout[1][0].size());
1039 EXPECT_EQ(inner5.getUri(), repout[1][0][0].getUri());
1040 EXPECT_EQ(inner6.getUri(), repout[1][0][1].getUri());
1041 EXPECT_EQ(2u, repout[1][1].size());
1042 EXPECT_EQ(inner7.getUri(), repout[1][1][0].getUri());
1043 EXPECT_EQ(inner8.getUri(), repout[1][1][1].getUri());
1045 EXPECT_EQ(2u, repout2.size());
1046 EXPECT_EQ(2u, repout2[0].size());
1047 EXPECT_EQ(2u, repout2[0][0].size());
1048 EXPECT_EQ(inner1.getUri(), repout2[0][0][0].getUri());
1049 EXPECT_EQ(inner2.getUri(), repout2[0][0][1].getUri());
1050 EXPECT_EQ(2u, repout[0][1].size());
1051 EXPECT_EQ(inner3.getUri(), repout2[0][1][0].getUri());
1052 EXPECT_EQ(inner4.getUri(), repout2[0][1][1].getUri());
1053 EXPECT_EQ(2u, repout[1].size());
1054 EXPECT_EQ(2u, repout[1][0].size());
1055 EXPECT_EQ(inner5.getUri(), repout2[1][0][0].getUri());
1056 EXPECT_EQ(inner6.getUri(), repout2[1][0][1].getUri());
1057 EXPECT_EQ(2u, repout[1][1].size());
1058 EXPECT_EQ(inner7.getUri(), repout2[1][1][0].getUri());
1059 EXPECT_EQ(inner8.getUri(), repout2[1][1][1].getUri());
1062 EXPECT_FALSE(rep.getValue<double>(AttrName, badout));
1064 EXPECT_FALSE(rep.getValue<string>(AttrName, badoutstr));
1069 TEST(OCRepresentationIterator, constiterator)
1071 OCRepresentation rep;
1073 EXPECT_TRUE(rep.empty());
1074 rep.setValue("int", 8);
1075 EXPECT_FALSE(rep.empty());
1076 rep.setValue("double", 8.8);
1077 rep.setValue("bool", true);
1078 rep.setValue("string", std::string("this is a string"));
1080 EXPECT_EQ(4u, rep.size());
1081 EXPECT_FALSE(rep.empty());
1083 OCRepresentation::const_iterator itr = rep.cbegin();
1084 OCRepresentation::const_iterator endItr = rep.cend();
1085 for(;itr!=endItr;++itr);
1087 const OCRepresentation& rep2(rep);
1088 OCRepresentation::const_iterator itr2 = rep2.begin();
1089 OCRepresentation::const_iterator endItr2 = rep2.end();
1090 for(;itr2!=endItr2;++itr2);
1094 TEST(OCRepresentationIterator, constautoiterator)
1096 OCRepresentation rep;
1098 EXPECT_TRUE(rep.empty());
1099 rep.setValue("int", 8);
1100 EXPECT_FALSE(rep.empty());
1101 rep.setValue("double", 8.8);
1102 rep.setValue("bool", true);
1103 rep.setValue("string", std::string("this is a string"));
1105 EXPECT_EQ(4u, rep.size());
1106 EXPECT_FALSE(rep.empty());
1108 for(const auto& a : rep)
1113 const OCRepresentation& rep2(rep);
1114 for(const auto& a : rep2)
1119 TEST(OCRepresentationIterator, autoiterator)
1121 OCRepresentation rep;
1123 EXPECT_TRUE(rep.empty());
1124 rep.setValue("int", 8);
1125 EXPECT_FALSE(rep.empty());
1126 rep.setValue("double", 8.8);
1127 rep.setValue("bool", true);
1128 rep.setValue("string", std::string("this is a string"));
1130 EXPECT_EQ(4u, rep.size());
1131 EXPECT_FALSE(rep.empty());
1133 for(auto& cur : rep)
1135 if(cur.attrname() == "int")
1137 EXPECT_EQ("int", cur.attrname());
1138 EXPECT_EQ(AttributeType::Integer, cur.type());
1139 EXPECT_EQ(AttributeType::Integer, cur.base_type());
1140 EXPECT_EQ(0u, cur.depth());
1141 int curInt = cur.getValue<int>();
1142 EXPECT_EQ(8, curInt);
1144 if(cur.attrname() == "double")
1146 EXPECT_EQ("double", cur.attrname());
1147 EXPECT_EQ(AttributeType::Double, cur.type());
1148 EXPECT_EQ(AttributeType::Double, cur.base_type());
1149 EXPECT_EQ(0u, cur.depth());
1150 double curDouble = cur.getValue<double>();
1151 EXPECT_EQ(8.8, curDouble);
1153 if(cur.attrname() == "bool")
1155 EXPECT_EQ("bool", cur.attrname());
1156 EXPECT_EQ(AttributeType::Boolean, cur.type());
1157 EXPECT_EQ(AttributeType::Boolean, cur.base_type());
1158 EXPECT_EQ(0u, cur.depth());
1159 bool curBool = cur.getValue<bool>();
1160 EXPECT_EQ(true, curBool);
1162 if(cur.attrname() == "string")
1164 EXPECT_EQ("string", cur.attrname());
1165 EXPECT_EQ(AttributeType::String, cur.type());
1166 EXPECT_EQ(AttributeType::String, cur.base_type());
1167 EXPECT_EQ(0u, cur.depth());
1168 string curStr = cur.getValue<string>();
1169 EXPECT_EQ("this is a string", curStr);
1174 TEST(OCRepresentationIterator, iterator)
1176 OCRepresentation rep;
1177 OCRepresentation sub1;
1178 sub1.setUri("sub rep1 URI");
1179 OCRepresentation sub2;
1180 sub2.setUri("sub rep2 URI");
1181 OCRepresentation sub3;
1182 sub3.setUri("sub rep3 URI");
1183 OCRepresentation sub4;
1184 sub4.setUri("sub rep4 URI");
1185 OCRepresentation sub5;
1186 sub5.setUri("sub rep5 URI");
1187 OCRepresentation sub6;
1188 sub6.setUri("sub rep6 URI");
1191 EXPECT_TRUE(rep.empty());
1192 rep.setValue("int", 8);
1193 EXPECT_FALSE(rep.empty());
1194 rep.setValue("double", 8.8);
1195 rep.setValue("bool", true);
1196 rep.setValue("string", std::string("this is a string"));
1197 rep.setValue("rep", sub1);
1199 vector<int> intv {1,2,3,4};
1200 rep.setValue("intv", intv);
1201 vector<double> doublev {1.1,2.2,3.3,4.4};
1202 rep.setValue("doublev", doublev);
1203 vector<bool> boolv{false, false, true};
1204 rep.setValue("boolv", boolv);
1205 vector<string> strv{"abc", "def", "ghi"};
1206 rep.setValue("strv", strv);
1207 vector<OCRepresentation> repv { sub1, sub2 };
1208 rep.setValue("repv", repv);
1210 vector<vector<int>> intvv{{1,2,3},{4,5,6}};
1211 rep.setValue("intvv", intvv);
1212 vector<vector<vector<int>>> intvvv{{{1,2},{3,4}},{{5,6},{8,7}}};
1213 rep.setValue("intvvv", intvvv);
1215 vector<vector<double>> doublevv{{1.1,2.1,3},{4.4,5.4,6.4}};
1216 rep.setValue("doublevv", doublevv);
1217 vector<vector<vector<double>>> doublevvv{{{1.1,2.1},{3.1,4.1}},{{5.1,6.1},{8.1,7.1}}};
1218 rep.setValue("doublevvv", doublevvv);
1220 vector<vector<bool>> boolvv{{false, true},{true, false}};
1221 rep.setValue("boolvv", boolvv);
1222 vector<vector<vector<bool>>> boolvvv{{{true, false},{true}},{{false},{true}}};
1223 rep.setValue("boolvvv", boolvvv);
1225 vector<vector<string>> strvv{{"abc", "def"},{"wer", "qwer"}};
1226 rep.setValue("strvv", strvv);
1227 vector<vector<vector<string>>> strvvv{{{"wqr", "xcv"},{"234"}},{{"we"},{"wert"}}};
1228 rep.setValue("strvvv", strvvv);
1230 vector<vector<OCRepresentation>> repvv{{sub1, sub2},{sub3, sub4}};
1231 rep.setValue("repvv", repvv);
1232 vector<vector<vector<OCRepresentation>>> repvvv{{{sub5},{sub6}},{{sub3},{sub2}}};
1233 rep.setValue("repvvv", repvvv);
1235 EXPECT_EQ(20u, rep.size());
1236 EXPECT_FALSE(rep.empty());
1238 OCRepresentation::iterator itr= rep.begin();
1239 OCRepresentation::iterator endItr = rep.end();
1241 for(;itr!=endItr;++itr)
1243 if(itr->attrname() == "int")
1245 EXPECT_EQ("int", itr->attrname());
1246 EXPECT_EQ(AttributeType::Integer, itr->type());
1247 EXPECT_EQ(AttributeType::Integer, itr->base_type());
1248 EXPECT_EQ(0u, itr->depth());
1249 int curInt = (*itr).getValue<int>();
1250 EXPECT_EQ(8, curInt);
1252 else if (itr->attrname() == "double")
1254 EXPECT_EQ("double", itr->attrname());
1255 EXPECT_EQ(AttributeType::Double, itr->type());
1256 EXPECT_EQ(AttributeType::Double, itr->base_type());
1257 EXPECT_EQ(0u, itr->depth());
1258 double curDouble = (*itr).getValue<double>();
1259 EXPECT_EQ(8.8, curDouble);
1261 else if (itr->attrname() == "bool")
1263 EXPECT_EQ("bool", itr->attrname());
1264 EXPECT_EQ(AttributeType::Boolean, itr->type());
1265 EXPECT_EQ(AttributeType::Boolean, itr->base_type());
1266 EXPECT_EQ(0u, itr->depth());
1267 bool curBool = (*itr).getValue<bool>();
1268 EXPECT_EQ(true, curBool);
1270 else if (itr->attrname() == "string")
1272 EXPECT_EQ("string", itr->attrname());
1273 EXPECT_EQ(AttributeType::String, itr->type());
1274 EXPECT_EQ(AttributeType::String, itr->base_type());
1275 EXPECT_EQ(0u, itr->depth());
1276 string curString = (*itr).getValue<string>();
1277 EXPECT_EQ("this is a string", curString);
1279 else if (itr->attrname() == "rep")
1281 EXPECT_EQ("rep", itr->attrname());
1282 EXPECT_EQ(AttributeType::OCRepresentation, itr->type());
1283 EXPECT_EQ(AttributeType::OCRepresentation, itr->base_type());
1284 EXPECT_EQ(0u, itr->depth());
1285 OCRepresentation curRep = (*itr).getValue<OCRepresentation>();
1286 EXPECT_EQ(sub1.getUri(), curRep.getUri());
1288 else if (itr->attrname() == "intv")
1290 EXPECT_EQ("intv", itr->attrname());
1291 EXPECT_EQ(AttributeType::Vector, itr->type());
1292 EXPECT_EQ(AttributeType::Integer, itr->base_type());
1293 EXPECT_EQ(1u, itr->depth());
1294 vector<int> curv = (*itr).getValue<vector<int>>();
1295 EXPECT_EQ(intv, curv);
1297 else if (itr->attrname() == "doublev")
1299 EXPECT_EQ("doublev", itr->attrname());
1300 EXPECT_EQ(AttributeType::Vector, itr->type());
1301 EXPECT_EQ(AttributeType::Double, itr->base_type());
1302 EXPECT_EQ(1u, itr->depth());
1303 vector<double> curv = (*itr).getValue<vector<double>>();
1304 EXPECT_EQ(doublev, curv);
1306 else if (itr->attrname() == "boolv")
1308 EXPECT_EQ("boolv", itr->attrname());
1309 EXPECT_EQ(AttributeType::Vector, itr->type());
1310 EXPECT_EQ(AttributeType::Boolean, itr->base_type());
1311 EXPECT_EQ(1u, itr->depth());
1312 vector<bool> curv = (*itr).getValue<vector<bool>>();
1313 EXPECT_EQ(boolv, curv);
1315 else if (itr->attrname() == "strv")
1317 EXPECT_EQ("strv", itr->attrname());
1318 EXPECT_EQ(AttributeType::Vector, itr->type());
1319 EXPECT_EQ(AttributeType::String, itr->base_type());
1320 EXPECT_EQ(1u, itr->depth());
1321 vector<string> curv = (*itr).getValue<vector<string>>();
1322 EXPECT_EQ(strv, curv);
1324 else if (itr->attrname() == "repv")
1326 EXPECT_EQ("repv", itr->attrname());
1327 EXPECT_EQ(AttributeType::Vector, itr->type());
1328 EXPECT_EQ(AttributeType::OCRepresentation, itr->base_type());
1329 EXPECT_EQ(1u, itr->depth());
1330 vector<OCRepresentation> curv = (*itr).getValue<vector<OCRepresentation>>();
1331 EXPECT_EQ(2u, repv.size());
1332 EXPECT_EQ(sub1.getUri(), repv[0].getUri());
1333 EXPECT_EQ(sub2.getUri(), repv[1].getUri());
1335 else if (itr->attrname() == "intvv")
1337 EXPECT_EQ("intvv", itr->attrname());
1338 EXPECT_EQ(AttributeType::Vector, itr->type());
1339 EXPECT_EQ(AttributeType::Integer, itr->base_type());
1340 EXPECT_EQ(2u, itr->depth());
1341 vector<vector<int>> curv = (*itr).getValue<vector<vector<int>>>();
1342 EXPECT_EQ(intvv, curv);
1344 else if (itr->attrname() == "intvvv")
1346 EXPECT_EQ("intvvv", itr->attrname());
1347 EXPECT_EQ(AttributeType::Vector, itr->type());
1348 EXPECT_EQ(AttributeType::Integer, itr->base_type());
1349 EXPECT_EQ(3u, itr->depth());
1350 vector<vector<vector<int>>> curv = (*itr).getValue<vector<vector<vector<int>>>>();
1351 EXPECT_EQ(intvvv, curv);
1353 else if (itr->attrname() == "doublevv")
1355 EXPECT_EQ("doublevv", itr->attrname());
1356 EXPECT_EQ(AttributeType::Vector, itr->type());
1357 EXPECT_EQ(AttributeType::Double, itr->base_type());
1358 EXPECT_EQ(2u, itr->depth());
1359 vector<vector<double>> curv = (*itr).getValue<vector<vector<double>>>();
1360 EXPECT_EQ(doublevv, curv);
1362 else if (itr->attrname() == "doublevvv")
1364 EXPECT_EQ("doublevvv", itr->attrname());
1365 EXPECT_EQ(AttributeType::Vector, itr->type());
1366 EXPECT_EQ(AttributeType::Double, itr->base_type());
1367 EXPECT_EQ(3u, itr->depth());
1368 vector<vector<vector<double>>> curv =
1369 (*itr).getValue<vector<vector<vector<double>>>>();
1370 EXPECT_EQ(doublevvv, curv);
1372 else if (itr->attrname() == "boolvv")
1374 EXPECT_EQ("boolvv", itr->attrname());
1375 EXPECT_EQ(AttributeType::Vector, itr->type());
1376 EXPECT_EQ(AttributeType::Boolean, itr->base_type());
1377 EXPECT_EQ(2u, itr->depth());
1378 vector<vector<bool>> curv = (*itr).getValue<vector<vector<bool>>>();
1379 EXPECT_EQ(boolvv, curv);
1381 else if (itr->attrname() == "boolvvv")
1383 EXPECT_EQ("boolvvv", itr->attrname());
1384 EXPECT_EQ(AttributeType::Vector, itr->type());
1385 EXPECT_EQ(AttributeType::Boolean, itr->base_type());
1386 EXPECT_EQ(3u, itr->depth());
1387 vector<vector<vector<bool>>> curv = (*itr).getValue<vector<vector<vector<bool>>>>();
1388 EXPECT_EQ(boolvvv, curv);
1390 else if (itr->attrname() == "strvv")
1392 EXPECT_EQ("strvv", itr->attrname());
1393 EXPECT_EQ(AttributeType::Vector, itr->type());
1394 EXPECT_EQ(AttributeType::String, itr->base_type());
1395 EXPECT_EQ(2u, itr->depth());
1396 vector<vector<string>> curv = (*itr).getValue<vector<vector<string>>>();
1397 EXPECT_EQ(strvv, curv);
1399 else if (itr->attrname() == "strvvv")
1401 EXPECT_EQ("strvvv", itr->attrname());
1402 EXPECT_EQ(AttributeType::Vector, itr->type());
1403 EXPECT_EQ(AttributeType::String, itr->base_type());
1404 EXPECT_EQ(3u, itr->depth());
1405 vector<vector<vector<string>>> curv =
1406 (*itr).getValue<vector<vector<vector<string>>>>();
1407 EXPECT_EQ(strvvv, curv);
1409 else if (itr->attrname() == "repvv")
1411 EXPECT_EQ("repvv", itr->attrname());
1412 EXPECT_EQ(AttributeType::Vector, itr->type());
1413 EXPECT_EQ(AttributeType::OCRepresentation, itr->base_type());
1414 EXPECT_EQ(2u, itr->depth());
1415 vector<vector<OCRepresentation>> curv =
1416 (*itr).getValue<vector<vector<OCRepresentation>>>();
1417 EXPECT_EQ(2u, curv.size());
1418 EXPECT_EQ(2u, curv[0].size());
1419 EXPECT_EQ(sub1.getUri(), curv[0][0].getUri());
1420 EXPECT_EQ(sub2.getUri(), curv[0][1].getUri());
1421 EXPECT_EQ(2u, curv[1].size());
1422 EXPECT_EQ(sub3.getUri(), curv[1][0].getUri());
1423 EXPECT_EQ(sub4.getUri(), curv[1][1].getUri());
1425 else if (itr->attrname() == "repvvv")
1427 EXPECT_EQ("repvvv", itr->attrname());
1428 EXPECT_EQ(AttributeType::Vector, itr->type());
1429 EXPECT_EQ(AttributeType::OCRepresentation, itr->base_type());
1430 EXPECT_EQ(3u, itr->depth());
1431 vector<vector<vector<OCRepresentation>>> curv =
1432 (*itr).getValue<vector<vector<vector<OCRepresentation>>>>();
1433 EXPECT_EQ(2u, curv.size());
1434 EXPECT_EQ(2u, curv[0].size());
1435 EXPECT_EQ(1u, curv[0][0].size());
1436 EXPECT_EQ(sub5.getUri(), curv[0][0][0].getUri());
1437 EXPECT_EQ(1u, curv[0][1].size());
1438 EXPECT_EQ(sub6.getUri(), curv[0][1][0].getUri());
1439 EXPECT_EQ(1u, curv[1][0].size());
1440 EXPECT_EQ(sub3.getUri(), curv[1][0][0].getUri());
1441 EXPECT_EQ(1u, curv[1][1].size());
1442 EXPECT_EQ(sub2.getUri(), curv[1][1][0].getUri());
1446 EXPECT_TRUE(false) << itr->attrname();