838 lines
32 KiB
C++
838 lines
32 KiB
C++
#include "TestSuite.h"
|
|
|
|
#ifdef JSON_LIBRARY
|
|
void CreateTest(JSONNODE * test); //suppress warnings that it wasnt defined
|
|
void CreateTest(JSONNODE * test){
|
|
json_push_back(test, json_new_a(JSON_TEXT("Hi"), JSON_TEXT("World")));
|
|
json_push_back(test, json_new_a(JSON_TEXT("Hello"), JSON_TEXT("There")));
|
|
json_push_back(test, json_new_a(JSON_TEXT("Hai"), JSON_TEXT("Mars")));
|
|
json_push_back(test, json_new_a(JSON_TEXT("Hia"), JSON_TEXT("Earth")));
|
|
json_push_back(test, json_new_a(JSON_TEXT("Hey"), JSON_TEXT("Jude")));
|
|
}
|
|
#else
|
|
void CreateTest(JSONNode & test); //suppress warnings that it wasnt defined
|
|
void CreateTest(JSONNode & test){
|
|
test.push_back(JSONNode(JSON_TEXT("Hi"), JSON_TEXT("World")));
|
|
test.push_back(JSONNode(JSON_TEXT("Hello"), JSON_TEXT("There")));
|
|
test.push_back(JSONNode(JSON_TEXT("Hai"), JSON_TEXT("Mars")));
|
|
test.push_back(JSONNode(JSON_TEXT("Hia"), JSON_TEXT("Earth")));
|
|
test.push_back(JSONNode(JSON_TEXT("Hey"), JSON_TEXT("Jude")));
|
|
}
|
|
#endif
|
|
|
|
void TestSuite::TestIterators(void){
|
|
#ifdef JSON_ITERATORS
|
|
#define assertAutoCString(cone, ctwo)\
|
|
{\
|
|
json_char * _res = cone;\
|
|
assertCStringSame(_res, ctwo);\
|
|
json_free(_res);\
|
|
}
|
|
|
|
UnitTest::SetPrefix("TestIterators.cpp - Iterator");
|
|
#ifdef JSON_LIBRARY
|
|
JSONNODE * empty = json_new(JSON_NODE);
|
|
assertEquals(json_begin(empty), json_end(empty));
|
|
TestSuite::testParsingItself(empty);
|
|
|
|
assertNull(json_at(empty, 15));
|
|
assertNull(json_get(empty, JSON_TEXT("hello")));
|
|
|
|
JSONNODE * test = json_new(JSON_NODE);
|
|
json_push_back(test, json_new_i(JSON_TEXT(""), 15));
|
|
json_push_back(test, json_new_a(JSON_TEXT(""), JSON_TEXT("hello world")));
|
|
json_push_back(test, json_new_b(JSON_TEXT(""), true));
|
|
assertEquals(json_size(test), 3);
|
|
TestSuite::testParsingItself(test);
|
|
|
|
JSONNODE_ITERATOR it_test = json_begin(test);
|
|
assertEquals(json_as_int(*it_test), 15);
|
|
++it_test;
|
|
assertAutoCString(json_as_string(*it_test), JSON_TEXT("hello world"));
|
|
it_test++;
|
|
assertEquals(json_as_bool(*it_test++), true);
|
|
assertEquals(it_test, json_end(test));
|
|
|
|
unsigned int i = 0;
|
|
for(JSONNODE_ITERATOR it = json_begin(test), end = json_end(test); it != end; ++it){
|
|
++i;
|
|
}
|
|
assertEquals(i, 3);
|
|
|
|
UnitTest::SetPrefix("TestIterators.cpp - Iterator Find");
|
|
json_delete(test);
|
|
test = json_new(JSON_NODE);
|
|
CreateTest(test);
|
|
|
|
JSONNODE_ITERATOR ti = json_find(test, JSON_TEXT("bye"));
|
|
assertEquals(ti, json_end(test));
|
|
|
|
ti = json_find(test, JSON_TEXT("Hai"));
|
|
assertNotEquals(ti, json_end(test));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("Mars"));
|
|
ti = json_find(test, JSON_TEXT("Hey"));
|
|
assertNotEquals(ti, json_end(test));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("Jude"));
|
|
ti = json_find(test, JSON_TEXT("Hi"));
|
|
assertNotEquals(ti, json_end(test));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("World"));
|
|
|
|
#ifdef JSON_CASE_INSENSITIVE_FUNCTIONS
|
|
ti = json_find_nocase(test, JSON_TEXT("BYE"));
|
|
assertEquals(ti, json_end(test));
|
|
ti = json_find_nocase(test, JSON_TEXT("HAI"));
|
|
assertNotEquals(ti, json_end(test));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("Mars"));
|
|
ti = json_find_nocase(test, JSON_TEXT("HEY"));
|
|
assertNotEquals(ti, json_end(test));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("Jude"));
|
|
ti = json_find_nocase(test, JSON_TEXT("HI"));
|
|
assertNotEquals(ti, json_end(test));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("World"));
|
|
#endif
|
|
UnitTest::SetPrefix("TestIterators.cpp - Iterator Erase");
|
|
|
|
ti = json_erase(test, json_begin(test) + 3);
|
|
assertEquals(json_size(test), 4);
|
|
assertAutoCString(json_as_string(json_at(test, 0)), JSON_TEXT("World"));
|
|
assertAutoCString(json_as_string(json_at(test, 1)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test, 2)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(json_at(test, 3)), JSON_TEXT("Jude"));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("Jude"));
|
|
ti = json_erase(test, json_begin(test));
|
|
assertEquals(json_size(test), 3);
|
|
assertAutoCString(json_as_string(json_at(test, 0)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test, 1)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(json_at(test, 2)), JSON_TEXT("Jude"));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("There"));
|
|
|
|
#ifdef JSON_SAFE
|
|
ti = json_erase(test, json_end(test));
|
|
assertEquals(json_size(test), 3);
|
|
assertAutoCString(json_as_string(json_at(test, 0)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test, 1)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(json_at(test, 2)), JSON_TEXT("Jude"));
|
|
assertEquals(ti, json_end(test));
|
|
#endif
|
|
|
|
ti = json_erase(test, json_begin(test));
|
|
assertEquals(json_size(test), 2);
|
|
assertAutoCString(json_as_string(json_at(test, 0)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(json_at(test, 1)), JSON_TEXT("Jude"));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("Mars"));
|
|
|
|
ti = json_erase(test, json_begin(test));
|
|
assertEquals(json_size(test), 1);
|
|
assertAutoCString(json_as_string(json_at(test, 0)), JSON_TEXT("Jude"));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("Jude"));
|
|
|
|
ti = json_erase(test, json_begin(test));
|
|
assertEquals(json_size(test), 0);
|
|
assertEquals(ti, json_end(test));
|
|
|
|
CreateTest(test);
|
|
i = 0;
|
|
for (JSONNODE_ITERATOR it = json_begin(test); it != json_end(test); it = json_erase(test, it)){
|
|
++i;
|
|
}
|
|
assertEquals(json_size(test), 0);
|
|
assertEquals(i, 5);
|
|
|
|
|
|
UnitTest::SetPrefix("TestIterators.cpp - Iterator Bulk Erase");
|
|
CreateTest(test);
|
|
|
|
ti = json_erase_multi(test, json_begin(test), json_begin(test));
|
|
assertEquals(json_size(test), 5);
|
|
assertAutoCString(json_as_string(json_at(test, 0)), JSON_TEXT("World"));
|
|
assertAutoCString(json_as_string(json_at(test, 1)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test, 2)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(json_at(test, 3)), JSON_TEXT("Earth"));
|
|
assertAutoCString(json_as_string(json_at(test, 4)), JSON_TEXT("Jude"));
|
|
assertEquals(ti, json_begin(test));
|
|
|
|
json_erase_multi(test, json_begin(test), json_end(test));
|
|
assertEquals(json_size(test), 0);
|
|
CreateTest(test);
|
|
|
|
ti = json_erase_multi(test, json_begin(test), json_begin(test) + 1);
|
|
assertEquals(json_size(test), 4);
|
|
assertAutoCString(json_as_string(json_at(test, 0)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test, 1)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(json_at(test, 2)), JSON_TEXT("Earth"));
|
|
assertAutoCString(json_as_string(json_at(test, 3)), JSON_TEXT("Jude"));
|
|
assertEquals(ti, json_begin(test));
|
|
|
|
ti = json_erase_multi(test, json_begin(test), json_begin(test) + 2);
|
|
assertEquals(json_size(test), 2);
|
|
assertAutoCString(json_as_string(json_at(test, 0)), JSON_TEXT("Earth"));
|
|
assertAutoCString(json_as_string(json_at(test, 1)), JSON_TEXT("Jude"));
|
|
assertEquals(ti, json_begin(test));
|
|
|
|
ti = json_erase_multi(test, json_begin(test), json_end(test) - 1);
|
|
assertEquals(json_size(test), 1);
|
|
assertAutoCString(json_as_string(json_at(test, 0)), JSON_TEXT("Jude"));
|
|
assertEquals(ti, json_begin(test));
|
|
json_clear(test);
|
|
|
|
|
|
|
|
UnitTest::SetPrefix("TestIterators.cpp - Iterator Insert");
|
|
CreateTest(test);
|
|
ti = json_insert(test, json_begin(test) + 3, json_new_a(JSON_TEXT("olah"), JSON_TEXT("Pluto")));
|
|
assertEquals(json_size(test), 6);
|
|
assertAutoCString(json_as_string(json_at(test, 0)), JSON_TEXT("World"));
|
|
assertAutoCString(json_as_string(json_at(test, 1)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test, 2)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(json_at(test, 3)), JSON_TEXT("Pluto"));
|
|
assertAutoCString(json_as_string(json_at(test, 4)), JSON_TEXT("Earth"));
|
|
assertAutoCString(json_as_string(json_at(test, 5)), JSON_TEXT("Jude"));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("Pluto"));
|
|
assertEquals(ti, json_begin(test) + 3);
|
|
json_clear(test);
|
|
|
|
CreateTest(test);
|
|
ti = json_insert(test, json_begin(test), json_new_a(JSON_TEXT("olah"), JSON_TEXT("Pluto")));
|
|
assertEquals(json_size(test), 6);
|
|
assertAutoCString(json_as_string(json_at(test, 0)), JSON_TEXT("Pluto"));
|
|
assertAutoCString(json_as_string(json_at(test, 1)), JSON_TEXT("World"));
|
|
assertAutoCString(json_as_string(json_at(test, 2)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test, 3)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(json_at(test, 4)), JSON_TEXT("Earth"));
|
|
assertAutoCString(json_as_string(json_at(test, 5)), JSON_TEXT("Jude"));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("Pluto"));
|
|
assertEquals(ti, json_begin(test));
|
|
json_clear(test);
|
|
|
|
CreateTest(test);
|
|
ti = json_insert(test, json_begin(test) + 5, json_new_a(JSON_TEXT("olah"), JSON_TEXT("Pluto")));
|
|
assertEquals(json_size(test), 6);
|
|
assertAutoCString(json_as_string(json_at(test, 0)), JSON_TEXT("World"));
|
|
assertAutoCString(json_as_string(json_at(test, 1)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test, 2)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(json_at(test, 3)), JSON_TEXT("Earth"));
|
|
assertAutoCString(json_as_string(json_at(test, 4)), JSON_TEXT("Jude"));
|
|
assertAutoCString(json_as_string(json_at(test, 5)), JSON_TEXT("Pluto"));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("Pluto"));
|
|
assertEquals(ti, json_begin(test) + 5);
|
|
json_clear(test);
|
|
|
|
UnitTest::SetPrefix("TestIterators.cpp - Iterator Bulk Insert");
|
|
|
|
|
|
|
|
|
|
JSONNODE * test3 = json_new(JSON_NODE);
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
ti = json_insert_multi(test3, json_begin(test3) + 3, json_begin(test) + 1, json_begin(test) + 3);
|
|
assertEquals(json_size(test3), 7);
|
|
assertAutoCString(json_as_string(json_at(test3, 0)), JSON_TEXT("World"));
|
|
assertAutoCString(json_as_string(json_at(test3, 1)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test3, 2)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(json_at(test3, 3)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test3, 4)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(json_at(test3, 5)), JSON_TEXT("Earth"));
|
|
assertAutoCString(json_as_string(json_at(test3, 6)), JSON_TEXT("Jude"));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("There"));
|
|
assertEquals(ti, json_begin(test3) + 3);
|
|
json_clear(test);
|
|
json_clear(test3);
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
ti = json_insert_multi(test3, json_begin(test3), json_begin(test) + 1, json_begin(test) + 3);
|
|
assertEquals(json_size(test3), 7);
|
|
assertAutoCString(json_as_string(json_at(test3, 0)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test3, 1)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(json_at(test3, 2)), JSON_TEXT("World"));
|
|
assertAutoCString(json_as_string(json_at(test3, 3)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test3, 4)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(json_at(test3, 5)), JSON_TEXT("Earth"));
|
|
assertAutoCString(json_as_string(json_at(test3, 6)), JSON_TEXT("Jude"));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("There"));
|
|
assertEquals(ti, json_begin(test3));
|
|
json_clear(test);
|
|
json_clear(test3);
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
json_set_a(json_at(test3, 2), JSON_TEXT("lol"));
|
|
json_set_a(json_at(test3, 3), JSON_TEXT("lul"));
|
|
ti = json_insert_multi(test3, json_begin(test3) + 5, json_begin(test) + 1, json_begin(test) + 3);
|
|
assertEquals(json_size(test3), 7);
|
|
assertAutoCString(json_as_string(json_at(test3, 0)), JSON_TEXT("World"));
|
|
assertAutoCString(json_as_string(json_at(test3, 1)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test3, 2)), JSON_TEXT("lol"));
|
|
assertAutoCString(json_as_string(json_at(test3, 3)), JSON_TEXT("lul"));
|
|
assertAutoCString(json_as_string(json_at(test3, 4)), JSON_TEXT("Jude"));
|
|
assertAutoCString(json_as_string(json_at(test3, 5)), JSON_TEXT("There"));
|
|
assertAutoCString(json_as_string(json_at(test3, 6)), JSON_TEXT("Mars"));
|
|
assertAutoCString(json_as_string(*ti), JSON_TEXT("There"));
|
|
assertEquals(ti, json_begin(test3) + 5);
|
|
|
|
json_delete(empty);
|
|
json_delete(test);
|
|
json_delete(test3);
|
|
#else
|
|
JSONNode empty = JSONNode(JSON_NODE);
|
|
assertEquals(empty.begin(), empty.end());
|
|
assertEquals(empty.rbegin(), empty.rend());
|
|
TestSuite::testParsingItself(empty);
|
|
|
|
assertException(empty.at(15), std::out_of_range);
|
|
assertException(empty.at(JSON_TEXT("hello")), std::out_of_range);
|
|
|
|
JSONNode test = JSONNode(JSON_NODE);
|
|
test.push_back(JSONNode(JSON_TEXT(""), 15));
|
|
test.push_back(JSONNode(JSON_TEXT(""), JSON_TEXT("hello world")));
|
|
test.push_back(JSONNode(JSON_TEXT(""), true));
|
|
assertEquals(test.size(), 3);
|
|
TestSuite::testParsingItself(test);
|
|
|
|
JSONNode::iterator it_test = test.begin();
|
|
assertEquals(*it_test, 15);
|
|
++it_test;
|
|
assertEquals(*it_test, JSON_TEXT("hello world"));
|
|
it_test++;
|
|
assertEquals(*it_test++, true);
|
|
assertEquals(it_test, test.end());
|
|
|
|
unsigned int i = 0;
|
|
for(JSONNode::iterator it = test.begin(), end = test.end(); it != end; ++it){
|
|
++i;
|
|
}
|
|
assertEquals(i, 3);
|
|
|
|
|
|
|
|
UnitTest::SetPrefix("TestIterators.cpp - Const Iterator");
|
|
const JSONNode test2 = test;
|
|
assertEquals(test2.size(), 3);
|
|
|
|
JSONNode::const_iterator cit_test = test2.begin();
|
|
assertEquals(*cit_test, 15);
|
|
++cit_test;
|
|
assertEquals(*cit_test, JSON_TEXT("hello world"));
|
|
cit_test++;
|
|
assertEquals(*cit_test++, true);
|
|
assertEquals(cit_test, test2.end());
|
|
i = 0;
|
|
for(JSONNode::const_iterator it = test2.begin(), end = test2.end(); it != end; ++it){
|
|
++i;
|
|
}
|
|
assertEquals(i, 3);
|
|
|
|
|
|
|
|
UnitTest::SetPrefix("TestIterators.cpp - Reverse Iterator");
|
|
assertEquals(test.size(), 3);
|
|
|
|
JSONNode::reverse_iterator rit_test = test.rbegin();
|
|
assertEquals(*rit_test, true);
|
|
++rit_test;
|
|
assertEquals(*rit_test, JSON_TEXT("hello world"));
|
|
rit_test++;
|
|
assertEquals(*rit_test++, 15);
|
|
assertEquals(rit_test, test.rend());
|
|
i = 0;
|
|
for(JSONNode::reverse_iterator it = test.rbegin(), end = test.rend(); it != end; ++it){
|
|
++i;
|
|
}
|
|
assertEquals(i, 3);
|
|
|
|
|
|
|
|
UnitTest::SetPrefix("TestIterators.cpp - Reverse Const Iterator");
|
|
assertEquals(test2.size(), 3);
|
|
|
|
JSONNode::reverse_const_iterator rcit_test = test2.rbegin();
|
|
assertEquals(*rcit_test, true);
|
|
++rcit_test;
|
|
assertEquals(*rcit_test, JSON_TEXT("hello world"));
|
|
rcit_test++;
|
|
assertEquals(*rcit_test++, 15);
|
|
assertEquals(rcit_test, test2.rend());
|
|
i = 0;
|
|
for(JSONNode::reverse_const_iterator it = test2.rbegin(), end = test2.rend(); it != end; ++it){
|
|
++i;
|
|
}
|
|
assertEquals(i, 3);
|
|
|
|
|
|
UnitTest::SetPrefix("TestIterators.cpp - Iterator Find");
|
|
test = JSONNode();
|
|
CreateTest(test);
|
|
|
|
JSONNode::iterator ti = test.find(JSON_TEXT("bye"));
|
|
assertEquals(ti, test.end());
|
|
ti = test.find(JSON_TEXT("Hai"));
|
|
assertNotEquals(ti, test.end());
|
|
assertEquals(*ti, JSON_TEXT("Mars"));
|
|
ti = test.find(JSON_TEXT("Hey"));
|
|
assertNotEquals(ti, test.end());
|
|
assertEquals(*ti, JSON_TEXT("Jude"));
|
|
ti = test.find(JSON_TEXT("Hi"));
|
|
assertNotEquals(ti, test.end());
|
|
assertEquals(*ti, JSON_TEXT("World"));
|
|
|
|
#ifdef JSON_CASE_INSENSITIVE_FUNCTIONS
|
|
ti = test.find_nocase(JSON_TEXT("BYE"));
|
|
assertEquals(ti, test.end());
|
|
ti = test.find_nocase(JSON_TEXT("HAI"));
|
|
assertNotEquals(ti, test.end());
|
|
assertEquals(*ti, JSON_TEXT("Mars"));
|
|
ti = test.find_nocase(JSON_TEXT("HEY"));
|
|
assertNotEquals(ti, test.end());
|
|
assertEquals(*ti, JSON_TEXT("Jude"));
|
|
ti = test.find_nocase(JSON_TEXT("HI"));
|
|
assertNotEquals(ti, test.end());
|
|
assertEquals(*ti, JSON_TEXT("World"));
|
|
#endif
|
|
UnitTest::SetPrefix("TestIterators.cpp - Iterator Erase");
|
|
|
|
ti = test.erase(test.begin() + 3);
|
|
assertEquals(test.size(), 4);
|
|
assertEquals(test[0], JSON_TEXT("World"));
|
|
assertEquals(test[1], JSON_TEXT("There"));
|
|
assertEquals(test[2], JSON_TEXT("Mars"));
|
|
assertEquals(test[3], JSON_TEXT("Jude"));
|
|
assertEquals(*ti, JSON_TEXT("Jude"));
|
|
ti = test.erase(test.begin());
|
|
assertEquals(test.size(), 3);
|
|
assertEquals(test[0], JSON_TEXT("There"));
|
|
assertEquals(test[1], JSON_TEXT("Mars"));
|
|
assertEquals(test[2], JSON_TEXT("Jude"));
|
|
assertEquals(*ti, JSON_TEXT("There"));
|
|
|
|
JSONNode::reverse_iterator rti = test.rbegin();
|
|
assertEquals(*rti, JSON_TEXT("Jude"));
|
|
#ifdef JSON_SAFE
|
|
rti = test.erase(test.rend());
|
|
assertEquals(test.size(), 3);
|
|
assertEquals(test[0], JSON_TEXT("There"));
|
|
assertEquals(test[1], JSON_TEXT("Mars"));
|
|
assertEquals(test[2], JSON_TEXT("Jude"));
|
|
assertEquals(rti, test.rend());
|
|
ti = test.erase(test.end());
|
|
assertEquals(test.size(), 3);
|
|
assertEquals(test[0], JSON_TEXT("There"));
|
|
assertEquals(test[1], JSON_TEXT("Mars"));
|
|
assertEquals(test[2], JSON_TEXT("Jude"));
|
|
assertEquals(ti, test.end());
|
|
#endif
|
|
rti = test.erase(test.rbegin());
|
|
assertEquals(test.size(), 2);
|
|
assertEquals(test[0], JSON_TEXT("There"));
|
|
assertEquals(test[1], JSON_TEXT("Mars"));
|
|
assertEquals(*rti, JSON_TEXT("Mars"));
|
|
|
|
rti = test.erase(test.rbegin());
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test[0], JSON_TEXT("There"));
|
|
assertEquals(*rti, JSON_TEXT("There"));
|
|
|
|
test.erase(test.rbegin());
|
|
assertEquals(test.size(), 0);
|
|
#ifdef JSON_SAFE
|
|
test.erase(test.rend());
|
|
assertEquals(test.size(), 0);
|
|
test.erase(test.end());
|
|
assertEquals(test.size(), 0);
|
|
#endif
|
|
|
|
CreateTest(test);
|
|
i = 0;
|
|
for (JSONNode::iterator it = test.begin(); it != test.end(); it = test.erase(it)){
|
|
++i;
|
|
}
|
|
assertEquals(test.size(), 0);
|
|
assertEquals(i, 5);
|
|
|
|
CreateTest(test);
|
|
i = 0;
|
|
for (JSONNode::reverse_iterator it = test.rbegin(); it != test.rend(); it = test.erase(it)){
|
|
++i;
|
|
}
|
|
assertEquals(test.size(), 0);
|
|
assertEquals(i, 5);
|
|
|
|
UnitTest::SetPrefix("TestIterators.cpp - Iterator Bulk Erase");
|
|
CreateTest(test);
|
|
|
|
ti = test.erase(test.begin(), test.begin());
|
|
assertEquals(test.size(), 5);
|
|
assertEquals(test[0], JSON_TEXT("World"));
|
|
assertEquals(test[1], JSON_TEXT("There"));
|
|
assertEquals(test[2], JSON_TEXT("Mars"));
|
|
assertEquals(test[3], JSON_TEXT("Earth"));
|
|
assertEquals(test[4], JSON_TEXT("Jude"));
|
|
assertEquals(ti, test.begin());
|
|
|
|
test.erase(test.begin(), test.end());
|
|
assertEquals(test.size(), 0);
|
|
CreateTest(test);
|
|
|
|
ti = test.erase(test.begin(), test.begin() + 1);
|
|
assertEquals(test.size(), 4);
|
|
assertEquals(test[0], JSON_TEXT("There"));
|
|
assertEquals(test[1], JSON_TEXT("Mars"));
|
|
assertEquals(test[2], JSON_TEXT("Earth"));
|
|
assertEquals(test[3], JSON_TEXT("Jude"));
|
|
assertEquals(ti, test.begin());
|
|
|
|
ti = test.erase(test.begin(), test.begin() + 2);
|
|
assertEquals(test.size(), 2);
|
|
assertEquals(test[0], JSON_TEXT("Earth"));
|
|
assertEquals(test[1], JSON_TEXT("Jude"));
|
|
assertEquals(ti, test.begin());
|
|
|
|
ti = test.erase(test.begin(), test.end() - 1);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test[0], JSON_TEXT("Jude"));
|
|
assertEquals(ti, test.begin());
|
|
test.clear();
|
|
|
|
UnitTest::SetPrefix("TestIterators.cpp - Iterator Bulk Reverse Erase");
|
|
CreateTest(test);
|
|
|
|
rti = test.erase(test.rbegin(), test.rbegin());
|
|
assertEquals(test.size(), 5);
|
|
assertEquals(test[0], JSON_TEXT("World"));
|
|
assertEquals(test[1], JSON_TEXT("There"));
|
|
assertEquals(test[2], JSON_TEXT("Mars"));
|
|
assertEquals(test[3], JSON_TEXT("Earth"));
|
|
assertEquals(test[4], JSON_TEXT("Jude"));
|
|
assertEquals(rti, test.rbegin());
|
|
|
|
rti = test.erase(test.rbegin(), test.rend());
|
|
assertEquals(test.size(), 0);
|
|
assertEquals(rti, test.rbegin());
|
|
assertEquals(rti, test.rend());
|
|
CreateTest(test);
|
|
|
|
rti = test.erase(test.rbegin(), test.rbegin() + 1);
|
|
assertEquals(test.size(), 4);
|
|
assertEquals(test[0], JSON_TEXT("World"));
|
|
assertEquals(test[1], JSON_TEXT("There"));
|
|
assertEquals(test[2], JSON_TEXT("Mars"));
|
|
assertEquals(test[3], JSON_TEXT("Earth"));
|
|
assertEquals(rti, test.rbegin());
|
|
|
|
rti = test.erase(test.rbegin(), test.rbegin() + 2);
|
|
assertEquals(rti, test.rbegin());
|
|
assertEquals(test.size(), 2);
|
|
assertEquals(test[0], JSON_TEXT("World"));
|
|
assertEquals(test[1], JSON_TEXT("There"));
|
|
assertEquals(rti, test.rbegin());
|
|
|
|
rti = test.erase(test.rbegin(), test.rend() - 1);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test[0], JSON_TEXT("World"));
|
|
assertEquals(rti, test.rbegin());
|
|
test.clear();
|
|
|
|
UnitTest::SetPrefix("TestIterators.cpp - Iterator Insert");
|
|
CreateTest(test);
|
|
ti = test.insert(test.begin() + 3, JSONNode(JSON_TEXT("olah"), JSON_TEXT("Pluto")));
|
|
assertEquals(test.size(), 6);
|
|
assertEquals(test[0], JSON_TEXT("World"));
|
|
assertEquals(test[1], JSON_TEXT("There"));
|
|
assertEquals(test[2], JSON_TEXT("Mars"));
|
|
assertEquals(test[3], JSON_TEXT("Pluto"));
|
|
assertEquals(test[4], JSON_TEXT("Earth"));
|
|
assertEquals(test[5], JSON_TEXT("Jude"));
|
|
assertEquals(*ti, JSON_TEXT("Pluto"));
|
|
assertEquals(ti -> as_string(), JSON_TEXT("Pluto"));
|
|
assertEquals(ti, test.begin() + 3);
|
|
test.clear();
|
|
|
|
CreateTest(test);
|
|
ti = test.insert(test.begin(), JSONNode(JSON_TEXT("olah"), JSON_TEXT("Pluto")));
|
|
assertEquals(test.size(), 6);
|
|
assertEquals(test[0], JSON_TEXT("Pluto"));
|
|
assertEquals(test[1], JSON_TEXT("World"));
|
|
assertEquals(test[2], JSON_TEXT("There"));
|
|
assertEquals(test[3], JSON_TEXT("Mars"));
|
|
assertEquals(test[4], JSON_TEXT("Earth"));
|
|
assertEquals(test[5], JSON_TEXT("Jude"));
|
|
assertEquals(*ti, JSON_TEXT("Pluto"));
|
|
assertEquals(ti -> as_string(), JSON_TEXT("Pluto"));
|
|
assertEquals(ti, test.begin());
|
|
test.clear();
|
|
|
|
CreateTest(test);
|
|
ti = test.insert(test.begin() + 5, JSONNode(JSON_TEXT("olah"), JSON_TEXT("Pluto")));
|
|
assertEquals(test.size(), 6);
|
|
assertEquals(test[0], JSON_TEXT("World"));
|
|
assertEquals(test[1], JSON_TEXT("There"));
|
|
assertEquals(test[2], JSON_TEXT("Mars"));
|
|
assertEquals(test[3], JSON_TEXT("Earth"));
|
|
assertEquals(test[4], JSON_TEXT("Jude"));
|
|
assertEquals(test[5], JSON_TEXT("Pluto"));
|
|
assertEquals(*ti, JSON_TEXT("Pluto"));
|
|
assertEquals(ti -> as_string(), JSON_TEXT("Pluto"));
|
|
assertEquals(ti, test.begin() + 5);
|
|
test.clear();
|
|
|
|
CreateTest(test);
|
|
rti = test.insert(test.rbegin(), JSONNode(JSON_TEXT("olah"), JSON_TEXT("Pluto")));
|
|
assertEquals(test.size(), 6);
|
|
assertEquals(test[0], JSON_TEXT("World"));
|
|
assertEquals(test[1], JSON_TEXT("There"));
|
|
assertEquals(test[2], JSON_TEXT("Mars"));
|
|
assertEquals(test[3], JSON_TEXT("Earth"));
|
|
assertEquals(test[4], JSON_TEXT("Jude"));
|
|
assertEquals(test[5], JSON_TEXT("Pluto"));
|
|
assertEquals(*rti, JSON_TEXT("Pluto"));
|
|
assertEquals(rti, test.rbegin());
|
|
test.clear();
|
|
|
|
CreateTest(test);
|
|
rti = test.insert(test.rbegin() + 5, JSONNode(JSON_TEXT("olah"), JSON_TEXT("Pluto")));
|
|
assertEquals(test.size(), 6);
|
|
assertEquals(test[0], JSON_TEXT("Pluto"));
|
|
assertEquals(test[1], JSON_TEXT("World"));
|
|
assertEquals(test[2], JSON_TEXT("There"));
|
|
assertEquals(test[3], JSON_TEXT("Mars"));
|
|
assertEquals(test[4], JSON_TEXT("Earth"));
|
|
assertEquals(test[5], JSON_TEXT("Jude"))
|
|
assertEquals(*rti, JSON_TEXT("Pluto"));
|
|
assertEquals(rti, test.rbegin() + 5);
|
|
test.clear();
|
|
|
|
CreateTest(test);
|
|
rti = test.insert(test.rbegin() + 2, JSONNode(JSON_TEXT("olah"), JSON_TEXT("Pluto")));
|
|
assertEquals(test.size(), 6);
|
|
assertEquals(test[0], JSON_TEXT("World"));
|
|
assertEquals(test[1], JSON_TEXT("There"));
|
|
assertEquals(test[2], JSON_TEXT("Mars"));
|
|
assertEquals(test[3], JSON_TEXT("Pluto"));
|
|
assertEquals(test[4], JSON_TEXT("Earth"));
|
|
assertEquals(test[5], JSON_TEXT("Jude"));
|
|
assertEquals(*rti, JSON_TEXT("Pluto"));
|
|
assertEquals(rti, test.rbegin() + 2);
|
|
test.clear();
|
|
|
|
JSONNode test3;
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
ti = test3.insert(test3.begin() + 3, test.begin() + 1, test.begin() + 3);
|
|
assertEquals(test3.size(), 7);
|
|
assertEquals(test3[0], JSON_TEXT("World"));
|
|
assertEquals(test3[1], JSON_TEXT("There"));
|
|
assertEquals(test3[2], JSON_TEXT("Mars"));
|
|
assertEquals(test3[3], JSON_TEXT("There"));
|
|
assertEquals(test3[4], JSON_TEXT("Mars"));
|
|
assertEquals(test3[5], JSON_TEXT("Earth"));
|
|
assertEquals(test3[6], JSON_TEXT("Jude"));
|
|
assertEquals(*ti, JSON_TEXT("There"));
|
|
assertEquals(ti, test3.begin() + 3);
|
|
test.clear();
|
|
test3.clear();
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
ti = test3.insert(test3.begin(), test.begin() + 1, test.begin() + 3);
|
|
assertEquals(test3.size(), 7);
|
|
assertEquals(test3[0], JSON_TEXT("There"));
|
|
assertEquals(test3[1], JSON_TEXT("Mars"));
|
|
assertEquals(test3[2], JSON_TEXT("World"));
|
|
assertEquals(test3[3], JSON_TEXT("There"));
|
|
assertEquals(test3[4], JSON_TEXT("Mars"));
|
|
assertEquals(test3[5], JSON_TEXT("Earth"));
|
|
assertEquals(test3[6], JSON_TEXT("Jude"));
|
|
assertEquals(*ti, JSON_TEXT("There"));
|
|
assertEquals(ti, test3.begin());
|
|
test.clear();
|
|
test3.clear();
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
test3[2] = JSON_TEXT("lol");
|
|
test3[3] = JSON_TEXT("lul");
|
|
ti = test3.insert(test3.begin() + 5, test.begin() + 1, test.begin() + 3);
|
|
assertEquals(test3.size(), 7);
|
|
assertEquals(test3[0], JSON_TEXT("World"));
|
|
assertEquals(test3[1], JSON_TEXT("There"));
|
|
assertEquals(test3[2], JSON_TEXT("lol"));
|
|
assertEquals(test3[3], JSON_TEXT("lul"));
|
|
assertEquals(test3[4], JSON_TEXT("Jude"));
|
|
assertEquals(test3[5], JSON_TEXT("There"));
|
|
assertEquals(test3[6], JSON_TEXT("Mars"));
|
|
assertEquals(*ti, JSON_TEXT("There"));
|
|
assertEquals(ti, test3.begin() + 5);
|
|
test.clear();
|
|
test3.clear();
|
|
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
test3[2] = JSON_TEXT("lol");
|
|
test3[3] = JSON_TEXT("lul");
|
|
ti = test3.insert(test3.begin() + 3, test.rbegin() + 1, test.rbegin() + 3);
|
|
assertEquals(test3.size(), 7);
|
|
assertEquals(test3[0], JSON_TEXT("World"));
|
|
assertEquals(test3[1], JSON_TEXT("There"));
|
|
assertEquals(test3[2], JSON_TEXT("lol"));
|
|
assertEquals(test3[3], JSON_TEXT("Earth"));
|
|
assertEquals(test3[4], JSON_TEXT("Mars"));
|
|
assertEquals(test3[5], JSON_TEXT("lul"));
|
|
assertEquals(test3[6], JSON_TEXT("Jude"));
|
|
assertEquals(*ti, JSON_TEXT("Earth"));
|
|
assertEquals(ti, test3.begin() + 3);
|
|
test.clear();
|
|
test3.clear();
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
test3[2] = JSON_TEXT("lol");
|
|
test3[3] = JSON_TEXT("lul");
|
|
ti = test3.insert(test3.begin(), test.rbegin() + 1, test.rbegin() + 3);
|
|
assertEquals(test3.size(), 7);
|
|
assertEquals(test3[0], JSON_TEXT("Earth"));
|
|
assertEquals(test3[1], JSON_TEXT("Mars"));
|
|
assertEquals(test3[2], JSON_TEXT("World"));
|
|
assertEquals(test3[3], JSON_TEXT("There"));
|
|
assertEquals(test3[4], JSON_TEXT("lol"));
|
|
assertEquals(test3[5], JSON_TEXT("lul"));
|
|
assertEquals(test3[6], JSON_TEXT("Jude"));
|
|
assertEquals(*ti, JSON_TEXT("Earth"));
|
|
assertEquals(ti, test3.begin());
|
|
test.clear();
|
|
test3.clear();
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
test3[2] = JSON_TEXT("lol");
|
|
test3[3] = JSON_TEXT("lul");
|
|
ti = test3.insert(test3.begin() + 5, test.rbegin() + 1, test.rbegin() + 3);
|
|
assertEquals(test3.size(), 7);
|
|
assertEquals(test3[0], JSON_TEXT("World"));
|
|
assertEquals(test3[1], JSON_TEXT("There"));
|
|
assertEquals(test3[2], JSON_TEXT("lol"));
|
|
assertEquals(test3[3], JSON_TEXT("lul"));
|
|
assertEquals(test3[4], JSON_TEXT("Jude"));
|
|
assertEquals(test3[5], JSON_TEXT("Earth"));
|
|
assertEquals(test3[6], JSON_TEXT("Mars"));
|
|
assertEquals(*ti, JSON_TEXT("Earth"));
|
|
assertEquals(ti, test3.begin() + 5);
|
|
test.clear();
|
|
test3.clear();
|
|
|
|
|
|
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
test3[1] = JSON_TEXT("lol");
|
|
test3[2] = JSON_TEXT("lul");
|
|
rti = test3.insert(test3.rbegin(), test.begin() + 1, test.begin() + 3);
|
|
assertEquals(test3.size(), 7);
|
|
assertEquals(test3[0], JSON_TEXT("World"));
|
|
assertEquals(test3[1], JSON_TEXT("lol"));
|
|
assertEquals(test3[2], JSON_TEXT("lul"));
|
|
assertEquals(test3[3], JSON_TEXT("Earth"));
|
|
assertEquals(test3[4], JSON_TEXT("Jude"));
|
|
assertEquals(test3[5], JSON_TEXT("Mars"));
|
|
assertEquals(test3[6], JSON_TEXT("There"));
|
|
assertEquals(*rti, JSON_TEXT("There"));
|
|
assertEquals(rti, test3.rbegin());
|
|
test.clear();
|
|
test3.clear();
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
test3[1] = JSON_TEXT("lol");
|
|
test3[2] = JSON_TEXT("lul");
|
|
rti = test3.insert(test3.rbegin() + 3, test.begin() + 1, test.begin() + 3);
|
|
assertEquals(test3.size(), 7);
|
|
assertEquals(test3[0], JSON_TEXT("World"));
|
|
assertEquals(test3[1], JSON_TEXT("lol"));
|
|
assertEquals(test3[2], JSON_TEXT("Mars"));
|
|
assertEquals(test3[3], JSON_TEXT("There"));
|
|
assertEquals(test3[4], JSON_TEXT("lul"));
|
|
assertEquals(test3[5], JSON_TEXT("Earth"));
|
|
assertEquals(test3[6], JSON_TEXT("Jude"));
|
|
assertEquals(*rti, JSON_TEXT("There"));
|
|
assertEquals(rti, test3.rbegin() + 3);
|
|
test.clear();
|
|
test3.clear();
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
test3[1] = JSON_TEXT("lol");
|
|
test3[2] = JSON_TEXT("lul");
|
|
rti = test3.insert(test3.rbegin() + 5, test.begin() + 1, test.begin() + 3);
|
|
assertEquals(test3.size(), 7);
|
|
assertEquals(test3[0], JSON_TEXT("Mars"));
|
|
assertEquals(test3[1], JSON_TEXT("There"));
|
|
assertEquals(test3[2], JSON_TEXT("World"));
|
|
assertEquals(test3[3], JSON_TEXT("lol"));
|
|
assertEquals(test3[4], JSON_TEXT("lul"));
|
|
assertEquals(test3[5], JSON_TEXT("Earth"));
|
|
assertEquals(test3[6], JSON_TEXT("Jude"));
|
|
assertEquals(*rti, JSON_TEXT("There"));
|
|
assertEquals(rti, test3.rbegin() + 5);
|
|
test.clear();
|
|
test3.clear();
|
|
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
test3[2] = JSON_TEXT("lol");
|
|
test3[3] = JSON_TEXT("lul");
|
|
rti = test3.insert(test3.rbegin(), test.rbegin() + 1, test.rbegin() + 3);
|
|
assertEquals(test3.size(), 7);
|
|
assertEquals(test3[0], JSON_TEXT("World"));
|
|
assertEquals(test3[1], JSON_TEXT("There"));
|
|
assertEquals(test3[2], JSON_TEXT("lol"));
|
|
assertEquals(test3[3], JSON_TEXT("lul"));
|
|
assertEquals(test3[4], JSON_TEXT("Jude"));
|
|
assertEquals(test3[5], JSON_TEXT("Earth"));
|
|
assertEquals(test3[6], JSON_TEXT("Mars"));
|
|
assertEquals(*rti, JSON_TEXT("Mars"));
|
|
assertEquals(rti, test3.rbegin());
|
|
test.clear();
|
|
test3.clear();
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
test3[2] = JSON_TEXT("lol");
|
|
test3[3] = JSON_TEXT("lul");
|
|
rti = test3.insert(test3.rbegin() + 3, test.rbegin() + 1, test.rbegin() + 3);
|
|
assertEquals(test3.size(), 7);
|
|
assertEquals(test3[0], JSON_TEXT("World"));
|
|
assertEquals(test3[1], JSON_TEXT("There"));
|
|
assertEquals(test3[2], JSON_TEXT("Earth"));
|
|
assertEquals(test3[3], JSON_TEXT("Mars"));
|
|
assertEquals(test3[4], JSON_TEXT("lol"));
|
|
assertEquals(test3[5], JSON_TEXT("lul"));
|
|
assertEquals(test3[6], JSON_TEXT("Jude"));
|
|
assertEquals(*rti, JSON_TEXT("Mars"));
|
|
assertEquals(rti, test3.rbegin() + 3);
|
|
test.clear();
|
|
test3.clear();
|
|
|
|
CreateTest(test);
|
|
CreateTest(test3);
|
|
test3[2] = JSON_TEXT("lol");
|
|
test3[3] = JSON_TEXT("lul");
|
|
rti = test3.insert(test3.rbegin() + 5, test.rbegin() + 1, test.rbegin() + 3);
|
|
assertEquals(test3.size(), 7);
|
|
assertEquals(test3[0], JSON_TEXT("Earth"));
|
|
assertEquals(test3[1], JSON_TEXT("Mars"));
|
|
assertEquals(test3[2], JSON_TEXT("World"));
|
|
assertEquals(test3[3], JSON_TEXT("There"));
|
|
assertEquals(test3[4], JSON_TEXT("lol"));
|
|
assertEquals(test3[5], JSON_TEXT("lul"));
|
|
assertEquals(test3[6], JSON_TEXT("Jude"));
|
|
assertEquals(*rti, JSON_TEXT("Mars"));
|
|
assertEquals(rti, test3.rbegin() + 5);
|
|
test.clear();
|
|
test3.clear();
|
|
#endif
|
|
#endif
|
|
}
|