From 78796d03ac341da53e9c8b7f8d69cc3c0a949c14 Mon Sep 17 00:00:00 2001 From: Sverker Eriksson Date: Thu, 6 Mar 2014 16:17:09 +0100 Subject: erl_interface: test decode/encode of maps --- .../ei_decode_encode_test.c | 28 +++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'lib/erl_interface/test/ei_decode_encode_SUITE_data') diff --git a/lib/erl_interface/test/ei_decode_encode_SUITE_data/ei_decode_encode_test.c b/lib/erl_interface/test/ei_decode_encode_SUITE_data/ei_decode_encode_test.c index 9a50aef7b6..1ef17d4161 100644 --- a/lib/erl_interface/test/ei_decode_encode_SUITE_data/ei_decode_encode_test.c +++ b/lib/erl_interface/test/ei_decode_encode_SUITE_data/ei_decode_encode_test.c @@ -166,6 +166,20 @@ struct Type nil_type = { my_encode_nil, my_x_encode_nil }; +int my_encode_map_header(char *buf, int *index, union my_obj* obj) +{ + return ei_encode_map_header(buf, index, obj->arity); +} +int my_x_encode_map_header(ei_x_buff* x, union my_obj* obj) +{ + return ei_x_encode_map_header(x, (long)obj->arity); +} + +struct Type map_type = { + "map_header", "arity", (decodeFT*)ei_decode_map_header, + my_encode_map_header, my_x_encode_map_header +}; + #define BUFSZ 2000 @@ -225,7 +239,7 @@ void decode_encode(struct Type** tv, int nobj) return; } - if (t != &tuple_type && t != &list_type) { + if (t != &tuple_type && t != &list_type && t != &map_type) { size2 = 0; err = ei_skip_term(inp, &size2); if (err != 0) { @@ -442,7 +456,19 @@ TESTCASE(test_ei_decode_encode) struct Type* list[] = { &list_type, &my_atom_type, &fun_type }; decode_encode(list, 3); } + decode_encode_one(&map_type); /* #{} */ + { /* #{atom => atom}*/ + struct Type* map[] = { &map_type, &my_atom_type, &my_atom_type }; + decode_encode(map, 3); + } + { /* #{atom => atom, atom => pid, port => ref }*/ + struct Type* map[] = { &map_type, + &my_atom_type, &my_atom_type, &port_type, + &my_atom_type, &pid_type, &ref_type + }; + decode_encode(map, 7); + } report(1); } -- cgit v1.2.3