aboutsummaryrefslogtreecommitdiffstats
path: root/lib/erl_interface/test/ei_print_SUITE_data/ei_print_test.c
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2019-05-14 08:15:59 +0200
committerBjörn Gustavsson <[email protected]>2019-05-29 16:31:06 +0200
commit3d7b35dcc7852ec735f39a66566f80f8dad65701 (patch)
tree8a1cfb20b9e0438799db042ad6aa5dbb34001cfc /lib/erl_interface/test/ei_print_SUITE_data/ei_print_test.c
parentf53097e9f856281e7d8d89dc42716fb77b26e36e (diff)
downloadotp-3d7b35dcc7852ec735f39a66566f80f8dad65701.tar.gz
otp-3d7b35dcc7852ec735f39a66566f80f8dad65701.tar.bz2
otp-3d7b35dcc7852ec735f39a66566f80f8dad65701.zip
Teach ei_print_term() to print maps
Diffstat (limited to 'lib/erl_interface/test/ei_print_SUITE_data/ei_print_test.c')
-rw-r--r--lib/erl_interface/test/ei_print_SUITE_data/ei_print_test.c76
1 files changed, 61 insertions, 15 deletions
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);
+}