435 lines
18 KiB
C++
435 lines
18 KiB
C++
#include "TestSuite.h"
|
|
#include "../Source/JSONNode.h"
|
|
|
|
#ifdef JSON_COMMENTS
|
|
void TestSuite::TestComments(void){
|
|
UnitTest::SetPrefix("TestComments.cpp - Comments");
|
|
#ifdef JSON_READ_PRIORITY
|
|
#ifdef JSON_LIBRARY
|
|
|
|
JSONNODE * one = json_new(JSON_NULL);
|
|
json_set_i(one, 15);
|
|
JSONNODE * two = json_new(JSON_NULL);
|
|
json_set_i(two, 15);
|
|
assertTrue(json_equal(one, two));
|
|
json_set_comment(one, JSON_TEXT("Number"));
|
|
assertTrue(json_equal(one, two));
|
|
json_delete(one);
|
|
json_delete(two);
|
|
|
|
JSONNODE * test = json_parse(JSON_TEXT("#one line comment\n{\"hello\":\"world\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 1);
|
|
json_char * res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
test = json_parse(JSON_TEXT("//one line comment\n{\"hello\":\"world\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 1);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
test = json_parse(JSON_TEXT("/*one line comment*/{\"hello\":\"world\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 1);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
test = json_parse(JSON_TEXT("#one line comment\n#another\n{\"hello\":\"world\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 1);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment\nanother"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
test = json_parse(JSON_TEXT("//one line comment\n//another\n{\"hello\":\"world\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 1);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment\nanother"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
test = json_parse(JSON_TEXT("/*one line comment*//*another*/{\"hello\":\"world\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 1);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment\nanother"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
test = json_parse(JSON_TEXT("#one line comment\n{#comment\n\"hello\":\"world\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 1);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("comment"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
test = json_parse(JSON_TEXT("//one line comment\n{//comment\n\"hello\":\"world\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 1);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("comment"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
test = json_parse(JSON_TEXT("/*one line comment*/{/*comment*/\"hello\":\"world\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 1);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("comment"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
|
|
test = json_parse(JSON_TEXT("#one line comment\n#another\n{#comment\n#comment2\n\"hello\":\"world\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 1);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment\nanother"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("comment\ncomment2"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
test = json_parse(JSON_TEXT("//one line comment\n//another\n{//comment\n//comment2\n\"hello\":\"world\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 1);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment\nanother"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("comment\ncomment2"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
test = json_parse(JSON_TEXT("/*one line comment*//*another*/{/*comment*//*comment2*/\"hello\":\"world\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 1);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment\nanother"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("comment\ncomment2"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
test = json_parse(JSON_TEXT("/*one line comment*//*another*/{/*comment*//*comment2*/\"hello\":\"world\", #comment\n\"hi\" : \"mars\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 2);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment\nanother"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("comment\ncomment2"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 1));
|
|
assertCStringSame(res, JSON_TEXT("mars"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 1));
|
|
assertCStringSame(res, JSON_TEXT("hi"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 1));
|
|
assertCStringSame(res, JSON_TEXT("comment"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
|
|
test = json_parse(JSON_TEXT("/*one line comment*//*another*/{/*comment*//*comment2*/\"hello\":\"world\", #comment\n\"hi\" : \"mars\", //comment 2\n\"and\" : \"pluto\"}"));
|
|
assertEquals(json_type(test), JSON_NODE);
|
|
assertEquals(json_size(test), 3);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("one line comment\nanother"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("comment\ncomment2"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 1));
|
|
assertCStringSame(res, JSON_TEXT("mars"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 1));
|
|
assertCStringSame(res, JSON_TEXT("hi"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 1));
|
|
assertCStringSame(res, JSON_TEXT("comment"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 2));
|
|
assertCStringSame(res, JSON_TEXT("pluto"));
|
|
json_free(res);
|
|
res = json_name(json_at(test, 2));
|
|
assertCStringSame(res, JSON_TEXT("and"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 2));
|
|
assertCStringSame(res, JSON_TEXT("comment 2"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
test = json_parse(JSON_TEXT("#array\n [#one\n\"hello\", //two\n\"world\", /*three*/\"mars\"]\r\n"));
|
|
assertEquals(json_type(test), JSON_ARRAY);
|
|
assertEquals(json_size(test), 3);
|
|
res = json_get_comment(test);
|
|
assertCStringSame(res, JSON_TEXT("array"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("hello"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 0));
|
|
assertCStringSame(res, JSON_TEXT("one"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 1));
|
|
assertCStringSame(res, JSON_TEXT("world"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 1));
|
|
assertCStringSame(res, JSON_TEXT("two"));
|
|
json_free(res);
|
|
res = json_as_string(json_at(test, 2));
|
|
assertCStringSame(res, JSON_TEXT("mars"));
|
|
json_free(res);
|
|
res = json_get_comment(json_at(test, 2));
|
|
assertCStringSame(res, JSON_TEXT("three"));
|
|
json_free(res);
|
|
json_delete(test);
|
|
|
|
|
|
#else
|
|
JSONNode one;
|
|
one = 15;
|
|
JSONNode two;
|
|
two = 15;
|
|
assertEquals(one, two);
|
|
one.set_comment(JSON_TEXT("Number"));
|
|
assertEquals(one, two);
|
|
|
|
JSONNode test = libjson::parse(JSON_TEXT("#one line comment\n{\"hello\":\"world\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment"));
|
|
|
|
test = libjson::parse(JSON_TEXT("//one line comment\n{\"hello\":\"world\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment"));
|
|
|
|
test = libjson::parse(JSON_TEXT("/*one line comment*/{\"hello\":\"world\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment"));
|
|
|
|
test = libjson::parse(JSON_TEXT("#one line comment\n#another\n{\"hello\":\"world\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment\nanother"));
|
|
|
|
test = libjson::parse(JSON_TEXT("//one line comment\n//another\n{\"hello\":\"world\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment\nanother"));
|
|
|
|
test = libjson::parse(JSON_TEXT("/*one line comment*//*another*/{\"hello\":\"world\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment\nanother"));
|
|
|
|
|
|
test = libjson::parse(JSON_TEXT("#one line comment\n{#comment\n\"hello\":\"world\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment"));
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test[0].get_comment(), JSON_TEXT("comment"));
|
|
|
|
test = libjson::parse(JSON_TEXT("//one line comment\n{//comment\n\"hello\":\"world\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment"));
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test[0].get_comment(), JSON_TEXT("comment"));
|
|
|
|
test = libjson::parse(JSON_TEXT("/*one line comment*/{/*comment*/\"hello\":\"world\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment"));
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test[0].get_comment(), JSON_TEXT("comment"));
|
|
|
|
test = libjson::parse(JSON_TEXT("#one line comment\n#another\n{#comment\n#comment2\n\"hello\":\"world\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment\nanother"));
|
|
assertEquals(test[0].get_comment(), JSON_TEXT("comment\ncomment2"));
|
|
|
|
test = libjson::parse(JSON_TEXT("//one line comment\n//another\n{//comment\n//comment2\n\"hello\":\"world\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment\nanother"));
|
|
assertEquals(test[0].get_comment(), JSON_TEXT("comment\ncomment2"));
|
|
|
|
test = libjson::parse(JSON_TEXT("/*one line comment*//*another*/{/*comment*//*comment2*/\"hello\":\"world\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 1);
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment\nanother"));
|
|
assertEquals(test[0].get_comment(), JSON_TEXT("comment\ncomment2"));
|
|
|
|
|
|
test = libjson::parse(JSON_TEXT("/*one line comment*//*another*/{/*comment*//*comment2*/\"hello\":\"world\", #comment\n\"hi\" : \"mars\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 2);
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test[1].name(), JSON_TEXT("hi"));
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test[1], JSON_TEXT("mars"));
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment\nanother"));
|
|
assertEquals(test[0].get_comment(), JSON_TEXT("comment\ncomment2"));
|
|
assertEquals(test[1].get_comment(), JSON_TEXT("comment"));
|
|
|
|
test = libjson::parse(JSON_TEXT("/*one line comment*//*another*/{/*comment*//*comment2*/\"hello\":\"world\", #comment\n\"hi\" : \"mars\", //comment 2\n\"and\" : \"pluto\"}"));
|
|
assertEquals(test.type(), JSON_NODE);
|
|
assertEquals(test.size(), 3);
|
|
assertEquals(test[0].name(), JSON_TEXT("hello"));
|
|
assertEquals(test[1].name(), JSON_TEXT("hi"));
|
|
assertEquals(test[2].name(), JSON_TEXT("and"));
|
|
assertEquals(test[0], JSON_TEXT("world"));
|
|
assertEquals(test[1], JSON_TEXT("mars"));
|
|
assertEquals(test[2], JSON_TEXT("pluto"));
|
|
assertEquals(test.get_comment(), JSON_TEXT("one line comment\nanother"));
|
|
assertEquals(test[0].get_comment(), JSON_TEXT("comment\ncomment2"));
|
|
assertEquals(test[1].get_comment(), JSON_TEXT("comment"));
|
|
assertEquals(test[2].get_comment(), JSON_TEXT("comment 2"));
|
|
|
|
test = libjson::parse(JSON_TEXT("#array\n [#one\n\"hello\", //two\n\"world\", /*three*/\"mars\"]\r\n"));
|
|
assertEquals(test.type(), JSON_ARRAY);
|
|
assertEquals(test.get_comment(), JSON_TEXT("array"));
|
|
assertEquals(test.size(), 3);
|
|
assertEquals(test[0], JSON_TEXT("hello"));
|
|
assertEquals(test[0].get_comment(), JSON_TEXT("one"));
|
|
assertEquals(test[1], JSON_TEXT("world"));
|
|
assertEquals(test[1].get_comment(), JSON_TEXT("two"));
|
|
assertEquals(test[2], JSON_TEXT("mars"));
|
|
assertEquals(test[2].get_comment(), JSON_TEXT("three"));
|
|
#endif
|
|
#endif
|
|
}
|
|
#endif
|