1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
3 #include "base/array.hpp"
4 #include "base/objectlock.hpp"
5 #include "base/json.hpp"
6 #include <BoostTestTargetConfig.h>
8 using namespace icinga;
10 BOOST_AUTO_TEST_SUITE(base_array)
12 BOOST_AUTO_TEST_CASE(construct)
14 Array::Ptr array = new Array();
16 BOOST_CHECK(array->GetLength() == 0);
19 BOOST_AUTO_TEST_CASE(getset)
21 Array::Ptr array = new Array();
25 BOOST_CHECK(array->GetLength() == 3);
26 BOOST_CHECK(array->Get(0) == 7);
27 BOOST_CHECK(array->Get(1) == 2);
28 BOOST_CHECK(array->Get(2) == 5);
31 BOOST_CHECK(array->Get(1) == 9);
34 BOOST_CHECK(array->GetLength() == 2);
35 BOOST_CHECK(array->Get(1) == 5);
38 BOOST_AUTO_TEST_CASE(resize)
40 Array::Ptr array = new Array();
42 BOOST_CHECK(array->GetLength() == 2);
43 BOOST_CHECK(array->Get(0) == Empty);
44 BOOST_CHECK(array->Get(1) == Empty);
47 BOOST_AUTO_TEST_CASE(insert)
49 Array::Ptr array = new Array();
53 BOOST_CHECK(array->GetLength() == 2);
54 BOOST_CHECK(array->Get(1) == 22);
57 BOOST_CHECK(array->GetLength() == 3);
58 BOOST_CHECK(array->Get(0) == 33);
59 BOOST_CHECK(array->Get(1) == 11);
62 BOOST_CHECK(array->GetLength() == 4);
63 BOOST_CHECK(array->Get(0) == 33);
64 BOOST_CHECK(array->Get(1) == 44);
65 BOOST_CHECK(array->Get(2) == 11);
68 BOOST_AUTO_TEST_CASE(remove)
70 Array::Ptr array = new Array();
76 ObjectLock olock(array);
77 auto it = array->Begin();
81 BOOST_CHECK(array->GetLength() == 2);
82 BOOST_CHECK(array->Get(0) == 2);
85 BOOST_CHECK(array->GetLength() == 0);
88 BOOST_AUTO_TEST_CASE(unique)
90 Array::Ptr array = new Array();
99 ObjectLock olock(array);
100 result = array->Unique();
103 BOOST_CHECK(result->GetLength() == 2);
106 BOOST_CHECK(result->Get(0) == "group1");
107 BOOST_CHECK(result->Get(1) == "group2");
109 BOOST_AUTO_TEST_CASE(foreach)
111 Array::Ptr array = new Array();
116 ObjectLock olock(array);
120 for (const Value& item : array) {
121 BOOST_CHECK(n != 0 || item == 7);
122 BOOST_CHECK(n != 1 || item == 2);
123 BOOST_CHECK(n != 2 || item == 5);
129 BOOST_AUTO_TEST_CASE(clone)
131 Array::Ptr array = new Array();
136 Array::Ptr clone = array->ShallowClone();
138 BOOST_CHECK(clone->GetLength() == 3);
139 BOOST_CHECK(clone->Get(0) == 7);
140 BOOST_CHECK(clone->Get(1) == 2);
141 BOOST_CHECK(clone->Get(2) == 5);
144 BOOST_AUTO_TEST_CASE(json)
146 Array::Ptr array = new Array();
151 String json = JsonEncode(array);
152 BOOST_CHECK(json.GetLength() > 0);
154 Array::Ptr deserialized = JsonDecode(json);
155 BOOST_CHECK(deserialized);
156 BOOST_CHECK(deserialized->GetLength() == 3);
157 BOOST_CHECK(deserialized->Get(0) == 7);
158 BOOST_CHECK(deserialized->Get(1) == 2);
159 BOOST_CHECK(deserialized->Get(2) == 5);
162 BOOST_AUTO_TEST_SUITE_END()