diff --git a/build-aux/syntax-check.mk b/build-aux/syntax-check.mk index 1fa8bc6a90..17cae3f23e 100644 --- a/build-aux/syntax-check.mk +++ b/build-aux/syntax-check.mk @@ -1362,7 +1362,7 @@ exclude_file_name_regexp--sc_avoid_strcase = ^tools/(vsh\.h|nss/libvirt_nss_(lea exclude_file_name_regexp--sc_avoid_write = ^src/libvirt-stream\.c$$ exclude_file_name_regexp--sc_gettext_init = \ - ^((tests|examples)/|tools/virt-login-shell.c) + ^((tests|examples)/|tools/virt-login-shell\.c$$|scripts/rpcgen/tests/test_demo\.c$$) exclude_file_name_regexp--sc_copyright_usage = \ ^COPYING(|\.LESSER)$$ @@ -1391,7 +1391,7 @@ exclude_file_name_regexp--sc_prohibit_close = \ (\.p[yl]$$|\.spec\.in$$|^docs/|^(src/util/vir(file|event)\.c|src/libvirt-stream\.c|tests/(vir.+mock\.c|commandhelper\.c|qemusecuritymock\.c)|tools/nss/libvirt_nss_(leases|macs)\.c)|tools/virt-qemu-qmp-proxy$$) exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \ - (^tests/(nodedevmdevctl|viracpi|virhostcpu|virpcitest|virstoragetest|qemunbdkit)data/|docs/js/.*\.js|docs/fonts/.*\.woff|\.diff|tests/virconfdata/no-newline\.conf$$) + ((^tests/(nodedevmdevctl|viracpi|virhostcpu|virpcitest|virstoragetest|qemunbdkit)data/|docs/js/.*\.js|docs/fonts/.*\.woff|\.diff|tests/virconfdata/no-newline\.conf$$)|\.bin) exclude_file_name_regexp--sc_prohibit_fork_wrappers = \ (^(src/(util/(vircommand|virdaemon)|lxc/lxc_controller)|tests/testutils)\.c$$) @@ -1436,10 +1436,10 @@ exclude_file_name_regexp--sc_prohibit_xmlURI = ^src/util/viruri\.c$$ exclude_file_name_regexp--sc_prohibit_return_as_function = \.py$$ exclude_file_name_regexp--sc_require_config_h = \ - ^(examples/c/.*/.*\.c|tools/virsh-edit\.c|tests/virmockstathelpers\.c|scripts/rpcgen/tests/demo\.c)$$ + ^(examples/c/.*/.*\.c|tools/virsh-edit\.c|tests/virmockstathelpers\.c|scripts/rpcgen/tests/(test_)?demo\.c)$$ exclude_file_name_regexp--sc_require_config_h_first = \ - ^(examples/|tools/virsh-edit\.c$$|tests/virmockstathelpers.c) + ^(examples/|tools/virsh-edit\.c$$|tests/virmockstathelpers\.c$$|scripts/rpcgen/tests/test_demo\.c$$) exclude_file_name_regexp--sc_trailing_blank = \ /sysinfodata/.*\.data|/virhostcpudata/.*\.cpuinfo$$ @@ -1506,6 +1506,9 @@ exclude_file_name_regexp--sc_header-ifdef = \ exclude_file_name_regexp--sc_black = \ ^tools/|src/|tests/|ci/|run\.in|scripts/[^/]*\.py +exclude_file_name_regexp--sc_spacing-check = \ + ^scripts/rpcgen/tests/test_demo\.[ch]$$ + ## -------------- ## ## Implementation ## ## -------------- ## diff --git a/scripts/rpcgen/tests/demo.x b/scripts/rpcgen/tests/demo.x index ec69913f3d..7260ad08df 100644 --- a/scripts/rpcgen/tests/demo.x +++ b/scripts/rpcgen/tests/demo.x @@ -74,7 +74,6 @@ struct TestStructAllTypes { bool sb; float sf; double sd; -/* quadruple sq; */ int *ip; int ifa[TestConstDec]; diff --git a/scripts/rpcgen/tests/meson.build b/scripts/rpcgen/tests/meson.build index 953a3dbede..075b5a82cf 100644 --- a/scripts/rpcgen/tests/meson.build +++ b/scripts/rpcgen/tests/meson.build @@ -3,3 +3,19 @@ rpcgen_tests = files([ 'test_lexer.py', 'test_parser.py', ]) + + +test_demo = executable( + 'test_demo', + [ 'test_demo.c' ], + c_args: cc_flags_relaxed_frame_limit, + dependencies: [ + xdr_dep, glib_dep + ], +) + +test( + 'test_demo', + test_demo, + workdir: meson.current_source_dir(), +) diff --git a/scripts/rpcgen/tests/test_demo.c b/scripts/rpcgen/tests/test_demo.c new file mode 100644 index 0000000000..e42374866e --- /dev/null +++ b/scripts/rpcgen/tests/test_demo.c @@ -0,0 +1,790 @@ +#include +#include +#include +#include + +#include "demo.h" +#include "demo.c" + +static void test_xdr(xdrproc_t proc, void *vorig, void *vnew, const char *testname, bool fail) +{ + XDR xdr; + /* 128kb is big enough for any of our test data */ + size_t buflen = 128 * 1000; + g_autofree char *buf = g_new0(char, buflen); + g_autofree char *expfile = g_strdup_printf("test_demo_%s.bin", testname); + g_autofree char *expected = NULL; + size_t explen; + size_t actlen; + g_autoptr(GError) err = NULL; + bool_t ret; + + /* Step 1: serialize the vorig and compare to the data in test .bin files */ + xdrmem_create(&xdr, buf, buflen, XDR_ENCODE); + + ret = !!proc(&xdr, vorig); + g_assert_cmpint(ret, ==, !fail); + + if (fail) + goto cleanup; + + actlen = xdr_getpos(&xdr); + + if (getenv("VIR_TEST_REGENERATE_OUTPUT")) { + g_file_set_contents(expfile, buf, actlen, NULL); + } + + g_file_get_contents(expfile, &expected, &explen, &err); + if (err != NULL) { + g_printerr("%s\n", err->message); + abort(); + } + + g_assert_cmpint(explen, ==, actlen); + + g_assert_cmpint(memcmp(buf, expected, actlen), ==, 0); + + xdr_destroy(&xdr); + + /* Step 2: de-serialize the state to create a new object */ + xdrmem_create(&xdr, buf, buflen, XDR_DECODE); + + ret = !!proc(&xdr, vnew); + g_assert_cmpint(ret, ==, true); + + actlen = xdr_getpos(&xdr); + g_assert_cmpint(explen, ==, actlen); + + xdr_destroy(&xdr); + + /* Step 3: serialize the new object again to prove we + * round-tripped the original object */ + memset(buf, 0, buflen); + + xdrmem_create(&xdr, buf, buflen, XDR_ENCODE); + + ret = !!proc(&xdr, vnew); + g_assert_cmpint(ret, ==, true); + + actlen = xdr_getpos(&xdr); + + g_assert_cmpint(explen, ==, actlen); + + g_assert_cmpint(memcmp(buf, expected, actlen), ==, 0); + xdr_destroy(&xdr); + + /* Step 4: free mem from the new object only; the orig + * was on the stack so leave untouched */ + xdrmem_create(&xdr, buf, buflen, XDR_FREE); + + ret = !!proc(&xdr, vnew); + g_assert_cmpint(ret, ==, true); + + cleanup: + xdr_destroy(&xdr); +} + +static void test_enum(void) +{ + TestEnum vorig = TEST_ENUM_TWO; + TestEnum vnew = 0; + + test_xdr((xdrproc_t)xdr_TestEnum, &vorig, &vnew, "enum", false); +} + +static void test_struct(void) +{ + TestStruct vorig = { + .c1 = 'a', .c2 = 'b', + }; + TestStruct vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestStruct, &vorig, &vnew, "struct", false); +} + +static void test_union_case(void) +{ + TestUnion vorig = { + .type = 20, .TestUnion_u = { .i1 = 1729 }, + }; + TestUnion vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestUnion, &vorig, &vnew, "union_case", false); +} + +static void test_union_default(void) +{ + TestUnion vorig = { + .type = 87539319, .TestUnion_u = { .i3 = 1729 }, + }; + TestUnion vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestUnion, &vorig, &vnew, "union_default", false); +} + +static void test_union_void_default_case(void) +{ + TestUnionVoidDefault vorig = { + .type = 21, .TestUnionVoidDefault_u = { .i1 = 1729 }, + }; + TestUnionVoidDefault vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestUnionVoidDefault, &vorig, &vnew, "union_void_default_case", false); +} + +static void test_union_void_default_default(void) +{ + TestUnionVoidDefault vorig = { + .type = 87539319 + }; + TestUnionVoidDefault vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestUnionVoidDefault, &vorig, &vnew, "union_void_default_default", false); +} + +static void test_union_no_default_case(void) +{ + TestUnionNoDefault vorig = { + .type = 22, .TestUnionNoDefault_u = { .i1 = 1729 }, + }; + TestUnionNoDefault vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestUnionNoDefault, &vorig, &vnew, "union_no_default_case", false); +} + +static void test_union_no_default_default(void) +{ + TestUnionNoDefault vorig = { + .type = 87539319, + }; + TestUnionNoDefault vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestUnionNoDefault, &vorig, &vnew, "union_no_default_default", true); +} + +static void test_int_scalar(void) +{ + TestIntScalar vorig = 1729; + TestIntScalar vnew = 0; + + test_xdr((xdrproc_t)xdr_TestIntScalar, &vorig, &vnew, "int_scalar", false); +} + +static void test_int_pointer_set(void) +{ + int vorigp = 1729; + TestIntPointer vorig = &vorigp; + TestIntPointer vnew = NULL; + + test_xdr((xdrproc_t)xdr_TestIntPointer, &vorig, &vnew, "int_pointer_set", false); +} + +static void test_int_pointer_null(void) +{ + TestIntPointer vorig = NULL; + TestIntPointer vnew = NULL; + + test_xdr((xdrproc_t)xdr_TestIntPointer, &vorig, &vnew, "int_pointer_null", false); +} + +static void test_int_fixed_array(void) +{ + TestIntFixedArray vorig = { 1729, 0, 87539319 }; + TestIntFixedArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestIntFixedArray, + vorig, vnew, "int_fixed_array", false); +} + +static void test_int_variable_array_set(void) +{ + TestIntVariableArray vorig = { + .TestIntVariableArray_len = 3, + .TestIntVariableArray_val = (int[]) { 1729, 0, 87539319 } + }; + TestIntVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestIntVariableArray, + &vorig, &vnew, "int_variable_array_set", false); +} + +static void test_int_variable_array_overflow(void) +{ + TestIntVariableArray vorig = { + .TestIntVariableArray_len = 6, + .TestIntVariableArray_val = (int[]) { 1729, 0, 87539319, 0, 1729 } + }; + TestIntVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestIntVariableArray, + &vorig, &vnew, "int_variable_array_overflow", true); +} + +static void test_int_variable_array_empty(void) +{ + TestIntVariableArray vorig = { + .TestIntVariableArray_len = 0, + .TestIntVariableArray_val = (int[]) {0}, + }; + TestIntVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestIntVariableArray, + &vorig, &vnew, "int_variable_array_empty", false); +} + +static void test_string_variable_array_set(void) +{ + TestStringVariableArray vorig = (TestStringVariableArray) "taxis"; + TestStringVariableArray vnew = NULL; + + test_xdr((xdrproc_t)xdr_TestStringVariableArray, + &vorig, &vnew, "string_variable_array_set", false); +} + +static void test_string_variable_array_empty(void) +{ + TestStringVariableArray vorig = (TestStringVariableArray)""; + TestStringVariableArray vnew = NULL; + + test_xdr((xdrproc_t)xdr_TestStringVariableArray, + &vorig, &vnew, "string_variable_array_empty", false); +} + +static void test_opaque_fixed_array(void) +{ + TestOpaqueFixedArray vorig = { 0xca, 0xfe, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78 }; + TestOpaqueFixedArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestOpaqueFixedArray, vorig, vnew, "opaque_fixed_array", false); +} + +static void test_opaque_variable_array_set(void) +{ + TestOpaqueVariableArray vorig = { + .TestOpaqueVariableArray_len = 3, + .TestOpaqueVariableArray_val = (char[]) { 0xca, 0xfe, 0x12 }, + }; + TestOpaqueVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestOpaqueVariableArray, + &vorig, &vnew, "opaque_variable_array_set", false); +} + +static void test_opaque_variable_array_overflow(void) +{ + TestOpaqueVariableArray vorig = { + .TestOpaqueVariableArray_len = 12, + .TestOpaqueVariableArray_val = (char[]) { + 0xca, 0xfe, 0x12, 0xca, 0xfe, 0x12, + 0xca, 0xfe, 0x12, 0xca, 0xfe, 0x12, + }, + }; + TestOpaqueVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestOpaqueVariableArray, + &vorig, &vnew, "opaque_variable_array_overflow", true); +} + +static void test_opaque_variable_array_empty(void) +{ + TestOpaqueVariableArray vorig = { + .TestOpaqueVariableArray_len = 0, + .TestOpaqueVariableArray_val = (char[]) {0}, + }; + TestOpaqueVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestOpaqueVariableArray, + &vorig, &vnew, "opaque_variable_array_empty", false); +} + +static void test_enum_scalar(void) +{ + TestEnumScalar vorig = TEST_ENUM_TWO; + TestEnumScalar vnew = 0; + + test_xdr((xdrproc_t)xdr_TestEnumScalar, + &vorig, &vnew, "enum_scalar", false); +} + +static void test_enum_pointer_set(void) +{ + TestEnum vorigp = TEST_ENUM_TWO; + TestEnumPointer vorig = &vorigp; + TestEnumPointer vnew = NULL; + + test_xdr((xdrproc_t)xdr_TestEnumPointer, + &vorig, &vnew, "enum_pointer_set", false); +} + +static void test_enum_pointer_null(void) +{ + TestEnumPointer vorig = NULL; + TestEnumPointer vnew = NULL; + + test_xdr((xdrproc_t)xdr_TestEnumPointer, + &vorig, &vnew, "enum_pointer_null", false); +} + +static void test_enum_fixed_array(void) +{ + TestEnumFixedArray vorig = { + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE + }; + TestEnumFixedArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestEnumFixedArray, vorig, vnew, "enum_fixed_array", false); +} + +static void test_enum_variable_array_set(void) +{ + TestEnumVariableArray vorig = { + .TestEnumVariableArray_len = 3, + .TestEnumVariableArray_val = (TestEnum[]) { + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, + }, + }; + TestEnumVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestEnumVariableArray, + &vorig, &vnew, "enum_variable_array_set", false); +} + +static void test_enum_variable_array_overflow(void) +{ + TestEnumVariableArray vorig = { + .TestEnumVariableArray_len = 16, + .TestEnumVariableArray_val = (TestEnum[]) { + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + } + }; + TestEnumVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestEnumVariableArray, + &vorig, &vnew, "enum_variable_array_overflow", true); +} + +static void test_enum_variable_array_empty(void) +{ + TestEnumVariableArray vorig = { + .TestEnumVariableArray_len = 0, + .TestEnumVariableArray_val = (TestEnum[]) {0}, + }; + TestEnumVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestEnumVariableArray, + &vorig, &vnew, "enum_variable_array_empty", false); +} + +#define TEST_STRUCT_INIT (TestStruct) { .c1 = 0xca, .c2 = 0xfe } +#define TEST_STRUCT_INIT_ALT (TestStruct) { .c1 = 0x09, .c2 = 0x07 } + +static void test_struct_scalar(void) +{ + TestStructScalar vorig = TEST_STRUCT_INIT; + TestStructScalar vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestStructScalar, + &vorig, &vnew, "struct_scalar", false); +} + +static void test_struct_pointer_set(void) +{ + TestStruct vorigp = TEST_STRUCT_INIT; + TestStructPointer vorig = &vorigp; + TestStructPointer vnew = NULL; + + test_xdr((xdrproc_t)xdr_TestStructPointer, + &vorig, &vnew, "struct_pointer_set", false); +} + +static void test_struct_pointer_null(void) +{ + TestStructPointer vorig = NULL; + TestStructPointer vnew = NULL; + + test_xdr((xdrproc_t)xdr_TestStructPointer, + &vorig, &vnew, "struct_pointer_null", false); +} + +static void test_struct_fixed_array(void) +{ + TestStructFixedArray vorig = { + TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, + TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT_ALT + }; + TestStructFixedArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestStructFixedArray, vorig, vnew, "struct_fixed_array", false); +} + +static void test_struct_variable_array_set(void) +{ + TestStructVariableArray vorig = { + .TestStructVariableArray_len = 3, + .TestStructVariableArray_val = (TestStruct[]) { + TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT_ALT, + }, + }; + TestStructVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestStructVariableArray, + &vorig, &vnew, "struct_variable_array_set", false); +} + +static void test_struct_variable_array_overflow(void) +{ + TestStructVariableArray vorig = { + .TestStructVariableArray_len = 20, + .TestStructVariableArray_val = (TestStruct[]) { + TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, + } + }; + TestStructVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestStructVariableArray, + &vorig, &vnew, "struct_variable_array_overflow", true); +} + +static void test_struct_variable_array_empty(void) +{ + TestStructVariableArray vorig = { + .TestStructVariableArray_len = 0, + .TestStructVariableArray_val = (TestStruct[]) {}, + }; + TestStructVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestStructVariableArray, + &vorig, &vnew, "struct_variable_array_empty", false); +} + +#define TEST_UNION_INIT (TestUnion) { .type = 20, .TestUnion_u = { .i1 = 1729 } } +#define TEST_UNION_INIT_ALT (TestUnion) { .type = 1729, .TestUnion_u = { .i3 = 87539319 } } + +static void test_union_scalar(void) +{ + TestUnionScalar vorig = TEST_UNION_INIT; + TestUnionScalar vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestUnionScalar, + &vorig, &vnew, "union_scalar", false); +} + +static void test_union_pointer_set(void) +{ + TestUnion vorigp = TEST_UNION_INIT; + TestUnionPointer vorig = &vorigp; + TestUnionPointer vnew = NULL; + + test_xdr((xdrproc_t)xdr_TestUnionPointer, + &vorig, &vnew, "union_pointer_set", false); +} + +static void test_union_pointer_null(void) +{ + TestUnionPointer vorig = NULL; + TestUnionPointer vnew = NULL; + + test_xdr((xdrproc_t)xdr_TestUnionPointer, + &vorig, &vnew, "union_pointer_null", false); +} + +static void test_union_fixed_array(void) +{ + TestUnionFixedArray vorig = { + TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT_ALT, + TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, + TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT_ALT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT_ALT + }; + TestUnionFixedArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestUnionFixedArray, vorig, vnew, "union_fixed_array", false); +} + +static void test_union_variable_array_set(void) +{ + TestUnionVariableArray vorig = { + .TestUnionVariableArray_len = 3, + .TestUnionVariableArray_val = (TestUnion[]) { + TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT_ALT, + }, + }; + TestUnionVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestUnionVariableArray, + &vorig, &vnew, "union_variable_array_set", false); +} + +static void test_union_variable_array_overflow(void) +{ + TestUnionVariableArray vorig = { + .TestUnionVariableArray_len = 24, + .TestUnionVariableArray_val = (TestUnion[]) { + TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, + } + }; + TestUnionVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestUnionVariableArray, + &vorig, &vnew, "union_variable_array_overflow", true); +} + +static void test_union_variable_array_empty(void) +{ + TestUnionVariableArray vorig = { + .TestUnionVariableArray_len = 0, + .TestUnionVariableArray_val = (TestUnion[]) {}, + }; + TestUnionVariableArray vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestUnionVariableArray, + &vorig, &vnew, "union_variable_array_empty", false); +} + +static void test_struct_all_types(void) +{ + int ip = 1729; + TestEnum ep = TEST_ENUM_TWO; + TestStruct sp = TEST_STRUCT_INIT; + TestUnion up = TEST_UNION_INIT; + TestStructAllTypes vorig = { + .sc = 'x', + .suc = 'y', + .ss = -7, + .sus = 14, + .si = -1729, + .sui = 1729, + .sh = -87539319, + .suh = -87539319, + .sb = true, + .sf = 0.1729, + .sd = 8753.9319, + .ip = &ip, + .ifa = { 1, 2, 3 }, + .iva = { + .iva_len = 3, + .iva_val = (int[]) { 7, 8, 9 }, + }, + .stva = (char *)"hello", + .ofa = { + 0x1, 0x2, 0x3, 0xff, 0xff, 0xff, 0xff, 0x1, + 0x1, 0x2, 0x3, 0xff, 0xff, 0xff, 0xff, 0x1, + 0x1, 0x2, 0x3, 0xff, 0xff, 0xff, 0xff, 0x1, + 0x1, 0x2, 0x3, 0xff, 0xff, 0xff, 0xff, 0x1, + 0xff, + }, + .ova = { + .ova_len = 3, + .ova_val = (char[]) { 0x1, 0xca, 0xfe }, + }, + .e1 = TEST_ENUM_ONE, + .e2 = TEST_ENUM_TWO, + .ep = &ep, + .efa = { + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, + }, + .eva = { + .eva_len = 3, + .eva_val = (TestEnum[]) { + TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + }, + }, + .s = TEST_STRUCT_INIT, + .sp = &sp, + .sfa = { + TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, + TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, + TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, + TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT, + }, + .sva = { + .sva_len = 3, + .sva_val = (TestStruct[]) { + TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, + }, + }, + .u = TEST_UNION_INIT, + .up = &up, + .ufa = { + TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT_ALT, + TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, + TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT_ALT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT_ALT, + TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, + TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT_ALT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT_ALT, + TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, + TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT_ALT, + }, + .uva = { + .uva_len = 3, + .uva_val = (TestUnion[]) { + TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT_ALT, + }, + }, + .tis = 1729, + .tip = &ip, + .tifa = { 1, 2, 3 }, + .tiva = { + .TestIntVariableArray_len = 3, + .TestIntVariableArray_val = (int[]) { 7, 8, 9 }, + }, + .tstva = (char *)"hello", + .tofa = { + 0x1, 0x2, 0x3, 0xff, 0xff, 0xff, 0xff, 0x1, + 0xff, + }, + .tova = { + .TestOpaqueVariableArray_len = 3, + .TestOpaqueVariableArray_val = (char[]) { 0x1, 0xca, 0xfe }, + }, + .tes = TEST_ENUM_ONE, + .tep = &ep, + .tefa = { + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + TEST_ENUM_ONE, + }, + .teva = { + .TestEnumVariableArray_len = 3, + .TestEnumVariableArray_val = (TestEnum[]) { + TEST_ENUM_TWO, TEST_ENUM_ONE, TEST_ENUM_TWO, + }, + }, + .tss = TEST_STRUCT_INIT, + .tsp = &sp, + .tsfa = { + TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, + TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, TEST_STRUCT_INIT, + TEST_STRUCT_INIT, + }, + .tsva = { + .TestStructVariableArray_len = 3, + .TestStructVariableArray_val = (TestStruct[]) { + TEST_STRUCT_INIT, TEST_STRUCT_INIT_ALT, TEST_STRUCT_INIT, + }, + }, + .tu = TEST_UNION_INIT, + .tup = &up, + .tufa = { + TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT_ALT, + TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, + TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT_ALT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT, + TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT, TEST_UNION_INIT_ALT, + TEST_UNION_INIT_ALT, + }, + .tuva = { + .TestUnionVariableArray_len = 3, + .TestUnionVariableArray_val = (TestUnion[]) { + TEST_UNION_INIT, TEST_UNION_INIT_ALT, TEST_UNION_INIT_ALT, + }, + }, + }; + TestStructAllTypes vnew = {0}; + + test_xdr((xdrproc_t)xdr_TestStructAllTypes, + &vorig, &vnew, "test_struct_all_types", false); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + + g_test_set_nonfatal_assertions(); + + g_test_add_func("/xdr/enum", test_enum); + + g_test_add_func("/xdr/struct", test_struct); + + g_test_add_func("/xdr/union/case", test_union_case); + g_test_add_func("/xdr/union/default", test_union_default); + g_test_add_func("/xdr/union-void-default/case", test_union_void_default_case); + g_test_add_func("/xdr/union-void-default/default", test_union_void_default_default); + g_test_add_func("/xdr/union-no-default/case", test_union_no_default_case); + g_test_add_func("/xdr/union-no-default/default", test_union_no_default_default); + + g_test_add_func("/xdr/int-scalar", test_int_scalar); + g_test_add_func("/xdr/int-pointer/set", test_int_pointer_set); + g_test_add_func("/xdr/int-pointer/null", test_int_pointer_null); + g_test_add_func("/xdr/int-fixed-array", test_int_fixed_array); + g_test_add_func("/xdr/int-variable-array/set", test_int_variable_array_set); + g_test_add_func("/xdr/int-variable-array/overflow", test_int_variable_array_overflow); + g_test_add_func("/xdr/int-variable-array/empty", test_int_variable_array_empty); + + g_test_add_func("/xdr/string-variable-array/set", test_string_variable_array_set); + g_test_add_func("/xdr/string-variable-array/empty", test_string_variable_array_empty); + + g_test_add_func("/xdr/opaque-fixed-array", test_opaque_fixed_array); + g_test_add_func("/xdr/opaque-variable-array/set", test_opaque_variable_array_set); + g_test_add_func("/xdr/opaque-variable-array/overflow", test_opaque_variable_array_overflow); + g_test_add_func("/xdr/opaque-variable-array/empty", test_opaque_variable_array_empty); + + g_test_add_func("/xdr/enum-scalar", test_enum_scalar); + g_test_add_func("/xdr/enum-pointer/set", test_enum_pointer_set); + g_test_add_func("/xdr/enum-pointer/null", test_enum_pointer_null); + g_test_add_func("/xdr/enum-fixed-array", test_enum_fixed_array); + g_test_add_func("/xdr/enum-variable-array/set", test_enum_variable_array_set); + g_test_add_func("/xdr/enum-variable-array/overflow", test_enum_variable_array_overflow); + g_test_add_func("/xdr/enum-variable-array/empty", test_enum_variable_array_empty); + + g_test_add_func("/xdr/struct-scalar", test_struct_scalar); + g_test_add_func("/xdr/struct-pointer/set", test_struct_pointer_set); + g_test_add_func("/xdr/struct-pointer/null", test_struct_pointer_null); + g_test_add_func("/xdr/struct-fixed-array", test_struct_fixed_array); + g_test_add_func("/xdr/struct-variable-array/set", test_struct_variable_array_set); + g_test_add_func("/xdr/struct-variable-array/overflow", test_struct_variable_array_overflow); + g_test_add_func("/xdr/struct-variable-array/empty", test_struct_variable_array_empty); + + g_test_add_func("/xdr/union-scalar", test_union_scalar); + g_test_add_func("/xdr/union-pointer/set", test_union_pointer_set); + g_test_add_func("/xdr/union-pointer/null", test_union_pointer_null); + g_test_add_func("/xdr/union-fixed-array", test_union_fixed_array); + g_test_add_func("/xdr/union-variable-array/set", test_union_variable_array_set); + g_test_add_func("/xdr/union-variable-array/overflow", test_union_variable_array_overflow); + g_test_add_func("/xdr/union-variable-array/empty", test_union_variable_array_empty); + + g_test_add_func("/xdr/struct-all-types", test_struct_all_types); + + return g_test_run(); +} diff --git a/scripts/rpcgen/tests/test_demo_enum.bin b/scripts/rpcgen/tests/test_demo_enum.bin new file mode 100644 index 0000000000..b6a8ef3e7c Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_enum.bin differ diff --git a/scripts/rpcgen/tests/test_demo_enum_fixed_array.bin b/scripts/rpcgen/tests/test_demo_enum_fixed_array.bin new file mode 100644 index 0000000000..869e8134ac Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_enum_fixed_array.bin differ diff --git a/scripts/rpcgen/tests/test_demo_enum_pointer_null.bin b/scripts/rpcgen/tests/test_demo_enum_pointer_null.bin new file mode 100644 index 0000000000..593f4708db Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_enum_pointer_null.bin differ diff --git a/scripts/rpcgen/tests/test_demo_enum_pointer_set.bin b/scripts/rpcgen/tests/test_demo_enum_pointer_set.bin new file mode 100644 index 0000000000..dc4fb37fcd Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_enum_pointer_set.bin differ diff --git a/scripts/rpcgen/tests/test_demo_enum_scalar.bin b/scripts/rpcgen/tests/test_demo_enum_scalar.bin new file mode 100644 index 0000000000..b6a8ef3e7c Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_enum_scalar.bin differ diff --git a/scripts/rpcgen/tests/test_demo_enum_variable_array_empty.bin b/scripts/rpcgen/tests/test_demo_enum_variable_array_empty.bin new file mode 100644 index 0000000000..593f4708db Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_enum_variable_array_empty.bin differ diff --git a/scripts/rpcgen/tests/test_demo_enum_variable_array_set.bin b/scripts/rpcgen/tests/test_demo_enum_variable_array_set.bin new file mode 100644 index 0000000000..63c1429462 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_enum_variable_array_set.bin differ diff --git a/scripts/rpcgen/tests/test_demo_int_fixed_array.bin b/scripts/rpcgen/tests/test_demo_int_fixed_array.bin new file mode 100644 index 0000000000..4e19f58a90 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_int_fixed_array.bin differ diff --git a/scripts/rpcgen/tests/test_demo_int_pointer_null.bin b/scripts/rpcgen/tests/test_demo_int_pointer_null.bin new file mode 100644 index 0000000000..593f4708db Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_int_pointer_null.bin differ diff --git a/scripts/rpcgen/tests/test_demo_int_pointer_set.bin b/scripts/rpcgen/tests/test_demo_int_pointer_set.bin new file mode 100644 index 0000000000..7574dc886a Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_int_pointer_set.bin differ diff --git a/scripts/rpcgen/tests/test_demo_int_scalar.bin b/scripts/rpcgen/tests/test_demo_int_scalar.bin new file mode 100644 index 0000000000..53ae788bb2 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_int_scalar.bin differ diff --git a/scripts/rpcgen/tests/test_demo_int_variable_array_empty.bin b/scripts/rpcgen/tests/test_demo_int_variable_array_empty.bin new file mode 100644 index 0000000000..593f4708db Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_int_variable_array_empty.bin differ diff --git a/scripts/rpcgen/tests/test_demo_int_variable_array_set.bin b/scripts/rpcgen/tests/test_demo_int_variable_array_set.bin new file mode 100644 index 0000000000..2ef627b63f Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_int_variable_array_set.bin differ diff --git a/scripts/rpcgen/tests/test_demo_opaque_fixed_array.bin b/scripts/rpcgen/tests/test_demo_opaque_fixed_array.bin new file mode 100644 index 0000000000..c60ee0612b Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_opaque_fixed_array.bin differ diff --git a/scripts/rpcgen/tests/test_demo_opaque_variable_array_empty.bin b/scripts/rpcgen/tests/test_demo_opaque_variable_array_empty.bin new file mode 100644 index 0000000000..593f4708db Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_opaque_variable_array_empty.bin differ diff --git a/scripts/rpcgen/tests/test_demo_opaque_variable_array_set.bin b/scripts/rpcgen/tests/test_demo_opaque_variable_array_set.bin new file mode 100644 index 0000000000..6970f11f81 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_opaque_variable_array_set.bin differ diff --git a/scripts/rpcgen/tests/test_demo_string_variable_array_empty.bin b/scripts/rpcgen/tests/test_demo_string_variable_array_empty.bin new file mode 100644 index 0000000000..593f4708db Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_string_variable_array_empty.bin differ diff --git a/scripts/rpcgen/tests/test_demo_string_variable_array_set.bin b/scripts/rpcgen/tests/test_demo_string_variable_array_set.bin new file mode 100644 index 0000000000..78e2905497 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_string_variable_array_set.bin differ diff --git a/scripts/rpcgen/tests/test_demo_struct.bin b/scripts/rpcgen/tests/test_demo_struct.bin new file mode 100644 index 0000000000..17d90c3c94 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_struct.bin differ diff --git a/scripts/rpcgen/tests/test_demo_struct_fixed_array.bin b/scripts/rpcgen/tests/test_demo_struct_fixed_array.bin new file mode 100644 index 0000000000..f0e786ddea Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_struct_fixed_array.bin differ diff --git a/scripts/rpcgen/tests/test_demo_struct_pointer_null.bin b/scripts/rpcgen/tests/test_demo_struct_pointer_null.bin new file mode 100644 index 0000000000..593f4708db Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_struct_pointer_null.bin differ diff --git a/scripts/rpcgen/tests/test_demo_struct_pointer_set.bin b/scripts/rpcgen/tests/test_demo_struct_pointer_set.bin new file mode 100644 index 0000000000..5728147932 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_struct_pointer_set.bin differ diff --git a/scripts/rpcgen/tests/test_demo_struct_scalar.bin b/scripts/rpcgen/tests/test_demo_struct_scalar.bin new file mode 100644 index 0000000000..0e6959d56a --- /dev/null +++ b/scripts/rpcgen/tests/test_demo_struct_scalar.bin @@ -0,0 +1 @@ +ÿÿÿÊÿÿÿþ \ No newline at end of file diff --git a/scripts/rpcgen/tests/test_demo_struct_variable_array_empty.bin b/scripts/rpcgen/tests/test_demo_struct_variable_array_empty.bin new file mode 100644 index 0000000000..593f4708db Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_struct_variable_array_empty.bin differ diff --git a/scripts/rpcgen/tests/test_demo_struct_variable_array_set.bin b/scripts/rpcgen/tests/test_demo_struct_variable_array_set.bin new file mode 100644 index 0000000000..a9406a21cf Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_struct_variable_array_set.bin differ diff --git a/scripts/rpcgen/tests/test_demo_test_struct_all_types.bin b/scripts/rpcgen/tests/test_demo_test_struct_all_types.bin new file mode 100644 index 0000000000..5ee4ee5a6d Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_test_struct_all_types.bin differ diff --git a/scripts/rpcgen/tests/test_demo_union_case.bin b/scripts/rpcgen/tests/test_demo_union_case.bin new file mode 100644 index 0000000000..b7ca515883 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_union_case.bin differ diff --git a/scripts/rpcgen/tests/test_demo_union_default.bin b/scripts/rpcgen/tests/test_demo_union_default.bin new file mode 100644 index 0000000000..7acf7d7ef0 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_union_default.bin differ diff --git a/scripts/rpcgen/tests/test_demo_union_fixed_array.bin b/scripts/rpcgen/tests/test_demo_union_fixed_array.bin new file mode 100644 index 0000000000..c666f3a1d6 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_union_fixed_array.bin differ diff --git a/scripts/rpcgen/tests/test_demo_union_no_default_case.bin b/scripts/rpcgen/tests/test_demo_union_no_default_case.bin new file mode 100644 index 0000000000..6dbd9a934f Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_union_no_default_case.bin differ diff --git a/scripts/rpcgen/tests/test_demo_union_pointer_null.bin b/scripts/rpcgen/tests/test_demo_union_pointer_null.bin new file mode 100644 index 0000000000..593f4708db Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_union_pointer_null.bin differ diff --git a/scripts/rpcgen/tests/test_demo_union_pointer_set.bin b/scripts/rpcgen/tests/test_demo_union_pointer_set.bin new file mode 100644 index 0000000000..01dc9dabe8 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_union_pointer_set.bin differ diff --git a/scripts/rpcgen/tests/test_demo_union_scalar.bin b/scripts/rpcgen/tests/test_demo_union_scalar.bin new file mode 100644 index 0000000000..b7ca515883 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_union_scalar.bin differ diff --git a/scripts/rpcgen/tests/test_demo_union_variable_array_empty.bin b/scripts/rpcgen/tests/test_demo_union_variable_array_empty.bin new file mode 100644 index 0000000000..593f4708db Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_union_variable_array_empty.bin differ diff --git a/scripts/rpcgen/tests/test_demo_union_variable_array_set.bin b/scripts/rpcgen/tests/test_demo_union_variable_array_set.bin new file mode 100644 index 0000000000..3edd18c105 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_union_variable_array_set.bin differ diff --git a/scripts/rpcgen/tests/test_demo_union_void_default_case.bin b/scripts/rpcgen/tests/test_demo_union_void_default_case.bin new file mode 100644 index 0000000000..b5f6c99ca5 Binary files /dev/null and b/scripts/rpcgen/tests/test_demo_union_void_default_case.bin differ diff --git a/scripts/rpcgen/tests/test_demo_union_void_default_default.bin b/scripts/rpcgen/tests/test_demo_union_void_default_default.bin new file mode 100644 index 0000000000..d7e8f43f03 --- /dev/null +++ b/scripts/rpcgen/tests/test_demo_union_void_default_default.bin @@ -0,0 +1 @@ +7¾w \ No newline at end of file