diff options
author | Björn Gustavsson <bjorn@erlang.org> | 2019-05-14 08:15:59 +0200 |
---|---|---|
committer | Björn Gustavsson <bjorn@erlang.org> | 2019-05-29 16:31:06 +0200 |
commit | 3d7b35dcc7852ec735f39a66566f80f8dad65701 (patch) | |
tree | 8a1cfb20b9e0438799db042ad6aa5dbb34001cfc /lib/erl_interface/test | |
parent | f53097e9f856281e7d8d89dc42716fb77b26e36e (diff) | |
download | erlang-3d7b35dcc7852ec735f39a66566f80f8dad65701.tar.gz |
Teach ei_print_term() to print maps
Diffstat (limited to 'lib/erl_interface/test')
-rw-r--r-- | lib/erl_interface/test/ei_print_SUITE.erl | 16 | ||||
-rw-r--r-- | lib/erl_interface/test/ei_print_SUITE_data/ei_print_test.c | 76 |
2 files changed, 74 insertions, 18 deletions
diff --git a/lib/erl_interface/test/ei_print_SUITE.erl b/lib/erl_interface/test/ei_print_SUITE.erl index c75ce55a7d..9d88a28102 100644 --- a/lib/erl_interface/test/ei_print_SUITE.erl +++ b/lib/erl_interface/test/ei_print_SUITE.erl @@ -26,7 +26,7 @@ -export([all/0, suite/0, init_per_testcase/2, - atoms/1, tuples/1, lists/1, strings/1]). + atoms/1, tuples/1, lists/1, strings/1, maps/1]). -import(runner, [get_term/1]). @@ -36,8 +36,8 @@ suite() -> [{ct_hooks,[ts_install_cth]}]. -all() -> - [atoms, tuples, lists, strings]. +all() -> + [atoms, tuples, lists, strings, maps]. init_per_testcase(Case, Config) -> runner:init_per_testcase(?MODULE, Case, Config). @@ -142,3 +142,13 @@ strings(Config) when is_list(Config) -> runner:recv_eot(P), ok. + +maps(Config) -> + P = runner:start(Config, ?maps), + + {term, "#{}"} = get_term(P), + {term, "#{key => value}"} = get_term(P), + {term, "#{key => value, another_key => {ok, 42}}"} = get_term(P), + + runner:recv_eot(P), + ok. diff --git a/lib/erl_interface/test/ei_print_SUITE_data/ei_print_test.c b/lib/erl_interface/test/ei_print_SUITE_data/ei_print_test.c index 80be3016e6..685596e34a 100644 --- a/lib/erl_interface/test/ei_print_SUITE_data/ei_print_test.c +++ b/lib/erl_interface/test/ei_print_SUITE_data/ei_print_test.c @@ -29,39 +29,54 @@ */ static void -send_printed3(char* format, char* p1, char* p2, int fl) +send_printed_buf(ei_x_buff* x) { char* b = NULL; - char fn[100], * tmp = getenv("temp"); + char fn[256]; + char *tmp = getenv("temp"); FILE* f; int n, index = 0, ver; - ei_x_buff x; - ei_x_new(&x); - if (fl) { - ei_x_format(&x, format, *(float*)p1, *(float*)p2); - } else { - ei_x_format(&x, format, p1, p2); - } #ifdef VXWORKS tmp = "."; #else - if (tmp == NULL) tmp = "/tmp"; + if (tmp == NULL) { + tmp = "/tmp"; + } #endif strcpy(fn, tmp); strcat(fn, "/ei_print_test.txt"); f = fopen(fn, "w+"); - ei_decode_version(x.buff, &index, &ver); - n = ei_print_term(f, x.buff, &index); + ei_decode_version(x->buff, &index, &ver); + n = ei_print_term(f, x->buff, &index); fseek(f, 0, SEEK_SET); b = malloc(n+1); fread(b, 1, n, f); b[n] = '\0'; fclose(f); - x.index = 0; - ei_x_format(&x, "~s", b); - send_bin_term(&x); + x->index = 0; + ei_x_format(x, "~s", b); + send_bin_term(x); free(b); +} + + +static void +send_printed3(char* format, char* p1, char* p2, int fl) +{ + char* b = NULL; + char fn[100], * tmp = getenv("temp"); + FILE* f; + int n, index = 0, ver; + ei_x_buff x; + + ei_x_new(&x); + if (fl) { + ei_x_format(&x, format, *(float*)p1, *(float*)p2); + } else { + ei_x_format(&x, format, p1, p2); + } + send_printed_buf(&x); ei_x_free(&x); } @@ -184,4 +199,35 @@ TESTCASE(strings) report(1); } +TESTCASE(maps) +{ + ei_x_buff x; + + ei_init(); + + ei_x_new_with_version(&x); + ei_x_encode_map_header(&x, 0); + send_printed_buf(&x); + ei_x_free(&x); + + ei_x_new_with_version(&x); + ei_x_encode_map_header(&x, 1); + ei_x_encode_atom(&x, "key"); + ei_x_encode_atom(&x, "value"); + send_printed_buf(&x); + ei_x_free(&x); + + ei_x_new_with_version(&x); + ei_x_encode_map_header(&x, 2); + ei_x_encode_atom(&x, "key"); + ei_x_encode_atom(&x, "value"); + ei_x_encode_atom(&x, "another_key"); + ei_x_encode_tuple_header(&x, 2); + ei_x_encode_atom(&x, "ok"); + ei_x_encode_long(&x, 42L); + send_printed_buf(&x); + ei_x_free(&x); + + report(1); +} |