note description: "Summary description for {SERIALIZATION_TESTS}." author: "" date: "$Date$" revision: "$Revision$" class SERIALIZATION_TESTS inherit CO_TEST_CASE create default_create, make_default feature test_string_serialization local msg: TEST_TEST_STRING_MESSAGE json: STRING do create msg.make ("one", "two", "three") json:= msg.serialize assert("Equal", json.is_equal ("{%"message%":%"one%",%"value1%":%"two%",%"value2%":%"three%"}")) end test_string_serialization_2 local msg: TEST_TEST_STRING_MESSAGE json: STRING do create msg.make ("one: %"ONE%"", "two: 'TWO'", "three: %"THREE%"") json:= msg.serialize assert("Equal", json.is_equal ("{%"message%":%"one: \%"ONE\%"%",%"value1%":%"two: 'TWO'%",%"value2%":%"three: \%"THREE\%"%"}")) end test_string_deserialize_2 local l_msg: TEST_TEST_STRING_MESSAGE l_expected: STRING l_tokenizer: A_JSON_TOKENIZER do l_expected:= "{%"message%":%"one: \%"ONE\%"%",%"value1%":%"two: 'TWO'%",%"value2%":%"three: \%"THREE\%"%"}" create l_tokenizer.make (l_expected) create l_msg.make_from_tokenizer (l_tokenizer) assert("Equal", l_expected.is_equal (l_msg.serialize)) end test_integer local msg: TEST_TEST_INTEGER_MESSAGE json: STRING do create msg.make (1, 2, 3) json:= msg.serialize assert("Equal", json.is_equal ("{%"value0%":1,%"value1%":2,%"value2%":3}")) end test_double local msg: TEST_TEST_DOUBLE_MESSAGE json: STRING do create msg.make(1.1, 0.25, 0.9) json:= msg.serialize -- see http://aranea.origo.ethz.ch/node/49 assert("Equal", json.is_equal ("{%"value0%":1.1000000000000001,%"value1%":0.25,%"value2%":0.90000000000000002}")) end test_boolean local msg: TEST_TEST_BOOLEAN_MESSAGE json: STRING do create msg.make(true) json:= msg.serialize assert("Equal", json.is_equal ("{%"value0%":true}")) end test_binary local msg: TEST_TEST_BINARY_MESSAGE json: STRING value: MANAGED_POINTER data: ARRAY [NATURAL_8] i: NATURAL_8 do create data.make (1, 10) from i:= 1 until i > 10 loop data.put (i, i) i:= i + 1 end create value.make_from_array (data) create msg.make (value, value) json:= msg.serialize assert("Equal", json.is_equal ("{%"value0%":%"AQIDBAUGBwgJCg==%",%"value1%":%"AQIDBAUGBwgJCg==%"}")) end test_list local msg: TEST_TEST_LIST_MESSAGE json: STRING value: A_SEQUENCE_VALUE [A_INTEGER_VALUE] array: ARRAY [A_INTEGER_VALUE] i: INTEGER do create array.make (1, 10) from i:= 1 until i > 10 loop array.put (i, i) i:= i + 1 end create value.make_from_array (array) create msg.make (value, value, value) json:= msg.serialize assert("Equal", json.is_equal ("{%"value0%":[1,2,3,4,5,6,7,8,9,10],%"value1%":[1,2,3,4,5,6,7,8,9,10],%"value2%":[1,2,3,4,5,6,7,8,9,10]}")) end test_map local msg: TEST_TEST_MAP_MESSAGE json: STRING value: A_MAP_VALUE [A_INTEGER_VALUE] i: INTEGER table: DS_HASH_TABLE[A_INTEGER_VALUE, A_STRING_VALUE] do create table.make_default from i:= 1 until i > 10 loop table.put (i, i.out) i:= i + 1 end create value.make (table) create msg.make (value, value, value) create msg.make (value, value, value) json:= msg.serialize assert("Equal", json.is_equal ("{%"value0%":{%"1%":1,%"2%":2,%"3%":3,%"4%":4,%"5%":5,%"6%":6,%"7%":7,%"8%":8,%"9%":9,%"10%":10},%"value1%":{%"1%":1,%"2%":2,%"3%":3,%"4%":4,%"5%":5,%"6%":6,%"7%":7,%"8%":8,%"9%":9,%"10%":10},%"value2%":{%"1%":1,%"2%":2,%"3%":3,%"4%":4,%"5%":5,%"6%":6,%"7%":7,%"8%":8,%"9%":9,%"10%":10}}")) end test_any_simple local msg: TEST_TEST_ANY_MESSAGE json: STRING value1: A_SEQUENCE_VALUE [A_ANY_VALUE] list: DS_ARRAYED_LIST [A_ANY_VALUE] value2: A_MAP_VALUE [A_ANY_VALUE] map: DS_HASH_TABLE [A_ANY_VALUE, A_STRING_VALUE] byte: MANAGED_POINTER data: ARRAY [NATURAL_8] do create data.make (1, 3) data.put (0, 1) data.put (1, 2) data.put (2, 3) create byte.make_from_array (data) create list.make_default list.put_last (create {A_ANY_VALUE}.make(create {A_STRING_VALUE}.make ("1"))) list.put_last (create {A_ANY_VALUE}.make(create {A_INTEGER_VALUE}.make (1))) list.put_last (create {A_ANY_VALUE}.make(create {A_DOUBLE_VALUE}.make(1.0))) list.put_last (create {A_ANY_VALUE}.make(create {A_BINARY_VALUE}.make (byte))) list.put_last (create {A_ANY_VALUE}.make(create {A_BOOLEAN_VALUE}.make(true))) create value1.make_from_linear (list) create map.make_default map.put_last (create {A_ANY_VALUE}.make(create {A_STRING_VALUE}.make ("1")), "0") map.put_last (create {A_ANY_VALUE}.make(create {A_INTEGER_VALUE}.make (1)), "1") map.put_last (create {A_ANY_VALUE}.make(create {A_DOUBLE_VALUE}.make(1.0)), "2") map.put_last (create {A_ANY_VALUE}.make(create {A_BINARY_VALUE}.make (byte)), "3") map.put_last (create {A_ANY_VALUE}.make(create {A_BOOLEAN_VALUE}.make(true)), "4") create value2.make (map) create msg.make(create {A_ANY_VALUE}.make(create {A_STRING_VALUE}.make ("1")), value1, value2) json:= msg.serialize assert("Equal", json.is_equal ("{%"value0%":[%"STRING%",%"1%"],%"value1%":[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]],%"value2%":{%"0%":[%"STRING%",%"1%"],%"1%":[%"INTEGER%",1],%"2%":[%"DOUBLE%",1],%"3%":[%"BINARY%",%"AAEC%"],%"4%":[%"BOOLEAN%",true]}}")) end test_deserialize_any local l_msg: TEST_TEST_ANY_MESSAGE l_tokenizer: A_JSON_TOKENIZER l_expected: STRING do l_expected:= "{%"value0%":[%"STRING%",%"1%"],%"value1%":[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]],%"value2%":{%"0%":[%"STRING%",%"1%"],%"1%":[%"INTEGER%",1],%"2%":[%"DOUBLE%",1],%"3%":[%"BINARY%",%"AAEC%"],%"4%":[%"BOOLEAN%",true]}}" create l_tokenizer.make (l_expected) create l_msg.make_from_tokenizer (l_tokenizer) assert("Equal", l_expected.is_equal (l_msg.serialize)) end test_any_complex local msg: TEST_TEST_ANY_MESSAGE json: STRING value0: A_SEQUENCE_VALUE [A_ANY_VALUE] list: DS_ARRAYED_LIST [A_ANY_VALUE] value1: A_SEQUENCE_VALUE [A_ANY_VALUE] value2: A_MAP_VALUE [A_ANY_VALUE] map: DS_HASH_TABLE [A_ANY_VALUE, A_STRING_VALUE] byte: MANAGED_POINTER data: ARRAY [NATURAL_8] do create data.make (1, 3) data.put (0, 1) data.put (1, 2) data.put (2, 3) create byte.make_from_array (data) create list.make_default list.put_last (create {A_ANY_VALUE}.make(create {A_STRING_VALUE}.make ("1"))) list.put_last (create {A_ANY_VALUE}.make(create {A_INTEGER_VALUE}.make (1))) list.put_last (create {A_ANY_VALUE}.make(create {A_DOUBLE_VALUE}.make(1.0))) list.put_last (create {A_ANY_VALUE}.make(create {A_BINARY_VALUE}.make (byte))) list.put_last (create {A_ANY_VALUE}.make(create {A_BOOLEAN_VALUE}.make(true))) create value0.make_from_linear (list) create list.make_default list.put_last (create {A_ANY_VALUE}.make(value0)) list.put_last (create {A_ANY_VALUE}.make(value0)) create value1.make_from_linear (list) create map.make_default map.put_last (create {A_ANY_VALUE}.make(value0), "0") map.put_last (create {A_ANY_VALUE}.make(value1), "1") map.put_last (create {A_ANY_VALUE}.make(create {A_MAP_VALUE [A_ANY_VALUE]}.make (map.cloned_object)), "2") create value2.make (map) create msg.make(create {A_ANY_VALUE}.make(value0), value1, value2) json:= msg.serialize assert("Equal", json.is_equal ("{%"value0%":[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]],%"value1%":[[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]],[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]]],%"value2%":{%"0%":[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]],%"1%":[%"SEQUENCE%",[[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]],[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]]]],%"2%":[%"MAP%",{%"0%":[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]],%"1%":[%"SEQUENCE%",[[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]],[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]]]]}]}}")) end test_deserialize_any_complex local l_msg: TEST_TEST_ANY_MESSAGE l_tokenizer: A_JSON_TOKENIZER l_expected: STRING do l_expected:= "{%"value0%":[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]],%"value1%":[[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]],[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]]],%"value2%":{%"0%":[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]],%"1%":[%"SEQUENCE%",[[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]],[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]]]],%"2%":[%"MAP%",{%"0%":[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]],%"1%":[%"SEQUENCE%",[[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]],[%"SEQUENCE%",[[%"STRING%",%"1%"],[%"INTEGER%",1],[%"DOUBLE%",1],[%"BINARY%",%"AAEC%"],[%"BOOLEAN%",true]]]]]}]}}" create l_tokenizer.make (l_expected) create l_msg.make_from_tokenizer (l_tokenizer) assert("Equal", l_expected.is_equal (l_msg.serialize)) end invariant invariant_clause: True -- Your invariant here end