Add test for JSON serialization over string
This commit is contained in:
1 parent
2dcda90c7b
commit
26252fedf5
1 file changed
+90
@@ -173,10 +173,100 @@ static void test_out_fill(void)
|
||||
my2_clear(el2);
|
||||
}
|
||||
|
||||
static void test_out_str_empty(void)
|
||||
{
|
||||
m_serial_read_t in;
|
||||
m_serial_write_t out;
|
||||
m_serial_return_code_t ret;
|
||||
my2_t el1, el2;
|
||||
my2_init(el1);
|
||||
my2_init(el2);
|
||||
|
||||
string_t f;
|
||||
string_init(f);
|
||||
m_serial_str_json_write_init(out, f);
|
||||
ret = my2_out_serial(out, el1);
|
||||
assert (ret == M_SERIAL_OK_DONE);
|
||||
m_serial_str_json_write_clear(out);
|
||||
|
||||
static const char expected[] = "{ \"activated\":false,\"data\":{ \"vala\":0,\"valb\":0.000000,\"valc\":false,\"vald\":\"\",\"vale\":[],\"valf\":{},\"valg\":[],\"valh\":{},\"vali\":0}";
|
||||
assert (string_equal_str_p(f, expected) == 0);
|
||||
|
||||
m_serial_str_json_read_init(in, string_get_cstr(f) );
|
||||
ret = my2_in_serial(el2, in);
|
||||
assert (ret == M_SERIAL_OK_DONE);
|
||||
const char *end = m_serial_str_json_read_clear(in);
|
||||
assert (*end == 0);
|
||||
|
||||
assert (my2_equal_p (el1, el2));
|
||||
|
||||
my2_clear(el1);
|
||||
my2_clear(el2);
|
||||
string_clear(f);
|
||||
}
|
||||
|
||||
static void test_out_str_fill(void)
|
||||
{
|
||||
m_serial_read_t in;
|
||||
m_serial_write_t out;
|
||||
m_serial_return_code_t ret;
|
||||
my2_t el1, el2;
|
||||
my2_init(el1);
|
||||
my2_init(el2);
|
||||
|
||||
string_t f;
|
||||
string_init(f);
|
||||
string_init_set_str(f,
|
||||
"{\n"
|
||||
" \"activated\":false,\n"
|
||||
"\"data\": {\n"
|
||||
" \"valb\": -2.300000 , \n"
|
||||
"\"vale\": [1,2,3],\n"
|
||||
"\"valg\": [1,2,3,4,5,6],\n"
|
||||
"\"valh\": { \"jane\": 3, \"steeve\": -4 },\n"
|
||||
"\"valf\": { \"is_bool\": true },\n"
|
||||
" \"vala\":1742,\n"
|
||||
" \"vald\": \"This is a test\",\n"
|
||||
"\"vali\": 3,"
|
||||
" \"valc\": true } }\n");
|
||||
|
||||
m_serial_str_json_read_init(in, string_get_cstr(f) );
|
||||
ret = my2_in_serial(el2, in);
|
||||
assert (ret == M_SERIAL_OK_DONE);
|
||||
const char *end = m_serial_str_json_read_clear(in);
|
||||
assert (*end == '\n');
|
||||
string_clean(f);
|
||||
|
||||
m_serial_str_json_write_init(out, f);
|
||||
ret = my2_out_serial(out, el2);
|
||||
assert (ret == M_SERIAL_OK_DONE);
|
||||
m_serial_str_json_write_clear(out);
|
||||
|
||||
// In function of the precise hashing (different between 64 bits & 32 bits), both strings are possible:
|
||||
static const char expected[] = "{ \"activated\":false,\"data\":{ \"vala\":1742,\"valb\":-2.300000,\"valc\":true,\"vald\":\"This is a test\",\"vale\":[1,2,3],\"valf\":{\"is_bool\":true},\"valg\":[1,2,3,4,5,6],\"valh\":{\"steeve\":-4,\"jane\":3},\"vali\":3}}";
|
||||
static const char expected2[] = "{ \"activated\":false,\"data\":{ \"vala\":1742,\"valb\":-2.300000,\"valc\":true,\"vald\":\"This is a test\",\"vale\":[1,2,3],\"valf\":{\"is_bool\":true},\"valg\":[1,2,3,4,5,6],\"valh\":{\"jane\":3,\"steeve\":-4},\"vali\":3}}";
|
||||
assert(string_equal_str_p(f, expected) || string_equal_str_p(f, expected2) );
|
||||
|
||||
m_serial_str_json_read_init(in, string_get_cstr(f) );
|
||||
ret = my2_in_serial(el1, in);
|
||||
assert (ret == M_SERIAL_OK_DONE);
|
||||
end = m_serial_str_json_read_clear(in);
|
||||
assert (*end == 0);
|
||||
|
||||
assert (my2_equal_p (el1, el2));
|
||||
|
||||
my2_clear(el1);
|
||||
my2_clear(el2);
|
||||
string_clear(f);
|
||||
}
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
test_out_empty();
|
||||
test_out_fill();
|
||||
test_out_str_empty();
|
||||
test_out_str_fill();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user