From ed54c597b2ee07bf6038b16fcdbf30db3f35b3cf Mon Sep 17 00:00:00 2001 From: Lev Walkin <vlm@lionet.info> Date: Sun, 6 Jun 2004 07:22:03 +0000 Subject: [PATCH] test case for tag2map functionality for SEQUENCE --- asn1c/tests/check-44.c | 66 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 asn1c/tests/check-44.c diff --git a/asn1c/tests/check-44.c b/asn1c/tests/check-44.c new file mode 100644 index 00000000..a705ef51 --- /dev/null +++ b/asn1c/tests/check-44.c @@ -0,0 +1,66 @@ +#undef NDEBUG +#include <stdio.h> +#include <stdlib.h> +#include <sys/types.h> +#include <string.h> +#include <assert.h> + +#include <T.h> + +uint8_t buf1[] = { + 32 | ((3 << 6) + 1), /* [PRIVATE 1], constructed */ + 4, /* L */ + ((3 << 6) + 2), /* [PRIVATE 2], primitive */ + 0, /* L */ + ((3 << 6) + 5), /* [PRIVATE 5], primitive */ + 0, /* L */ +}; + +uint8_t buf2[] = { + 32 | ((3 << 6) + 1), /* [PRIVATE 1], constructed */ + 6, /* L */ + ((3 << 6) + 2), /* [PRIVATE 2], primitive */ + 0, /* L */ + 32 | ((3 << 6) + 9), /* [PRIVATE 9], constructed */ + 2, + ((3 << 6) + 1), /* [PRIVATE 1], primitive */ + 0, /* L */ +}; + +static void +check(int is_ok, uint8_t *buf, int size, size_t consumed) { + T_t t, *tp; + ber_dec_rval_t rval; + + tp = memset(&t, 0, sizeof(t)); + + fprintf(stderr, "Buf %p\n", buf); + rval = ber_decode(&asn1_DEF_T, (void **)&tp, buf, size); + fprintf(stderr, "Returned code %d, consumed %d\n", + (int)rval.code, (int)rval.consumed); + + if(is_ok) { + assert(rval.code == RC_OK); + assert(rval.consumed == consumed); + } else { + if(rval.code == RC_OK) { + } + assert(rval.consumed <= consumed); + } +} + +int +main(int ac, char **av) { + + (void)ac; /* Unused argument */ + (void)av; /* Unused argument */ + + check(1, buf1, sizeof(buf1), sizeof(buf1)); + check(0, buf1, sizeof(buf1) - 1, sizeof(buf1) - 1); + check(0, buf1, sizeof(buf1) - 2, sizeof(buf1) - 2); + + check(1, buf2, sizeof(buf2), sizeof(buf2)); + check(0, buf2, sizeof(buf2) - 1, sizeof(buf2)); + + return 0; +} -- GitLab