12 32 | ((2 << 6) + 2), /* [2], constructed */
14 32 | ((2 << 6) + 3), /* [3], constructed */
16 32 | ((2 << 6) + 4), /* [4], constructed */
18 0 | ((2 << 6) + 6), /* [6], primitive */
24 32 | ((2 << 6) + 0), /* [0], constructed */
27 32 | ((2 << 6) + 1), /* [1], constructed */
29 32 | ((2 << 6) + 4), /* [4], constructed */
31 0 | ((2 << 6) + 6), /* [6], primitive */
36 32 | ((2 << 6) + 2), /* [2], constructed */
38 32 | ((2 << 6) + 4), /* [4], constructed */
40 0 | ((2 << 6) + 6), /* [6], primitive */
45 32 | ((2 << 6) + 3), /* [3], constructed */
47 0 | ((2 << 6) + 6), /* [6], primitive */
55 check_1(int is_ok, uint8_t *buf, size_t size, size_t consumed) {
56 asn_TYPE_descriptor_t *td = &asn_DEF_T1;
60 tp = memset(&t, 0, sizeof(t));
62 fprintf(stderr, "Buf %p\n", buf);
63 rval = ber_decode(0, td, (void **)&tp, buf, size);
64 fprintf(stderr, "Returned code %d, consumed %zd\n",
65 (int)rval.code, rval.consumed);
68 assert(rval.code == RC_OK);
69 assert(rval.consumed == consumed);
71 if(rval.code == RC_OK) {
73 assert(rval.consumed <= consumed);
78 check_2(int is_ok, uint8_t *buf, size_t size, size_t consumed) {
79 asn_TYPE_descriptor_t *td = &asn_DEF_T;
83 tp = memset(&t, 0, sizeof(t));
85 fprintf(stderr, "Buf %p\n", buf);
86 rval = ber_decode(0, td, (void **)&tp, buf, size);
87 fprintf(stderr, "Returned code %d, consumed %zd\n",
88 (int)rval.code, rval.consumed);
91 assert(rval.code == RC_OK);
92 assert(rval.consumed == consumed);
94 if(rval.code == RC_OK) {
96 assert(rval.consumed <= consumed);
98 ASN_STRUCT_RESET(*td, tp);
102 main(int ac, char **av) {
104 (void)ac; /* Unused argument */
105 (void)av; /* Unused argument */
107 check_1(1, buf1, sizeof(buf1), sizeof(buf1));
108 check_1(0, buf1, sizeof(buf1) - 1, sizeof(buf1) - 1);
110 check_2(1, buf2, sizeof(buf2), sizeof(buf2));
111 check_2(0, buf2, sizeof(buf2) - 1, sizeof(buf2) - 1);