mirror of https://gerrit.osmocom.org/asn1c
84 lines
1.8 KiB
C
84 lines
1.8 KiB
C
#undef NDEBUG
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sys/types.h>
|
|
#include <string.h>
|
|
#include <assert.h>
|
|
#include <ctype.h>
|
|
#include <errno.h>
|
|
|
|
#include <T.h>
|
|
|
|
static void
|
|
verify(int testNo, T_t *ti) {
|
|
asn_enc_rval_t er;
|
|
asn_dec_rval_t rv;
|
|
unsigned char buf[8];
|
|
T_t *to = 0;
|
|
|
|
er = uper_encode_to_buffer(&asn_DEF_T, ti, buf, sizeof buf);
|
|
fprintf(stderr, "%d IN: %d => %zd\n", testNo, ti->present, er.encoded);
|
|
assert(er.encoded >= 1);
|
|
assert(er.encoded <= (ssize_t)(8 * sizeof(buf)));
|
|
|
|
rv = uper_decode(0, &asn_DEF_T, (void *)&to, buf, sizeof buf, 0, 0);
|
|
assert(rv.code == RC_OK);
|
|
|
|
fprintf(stderr, "%d ENC: %2x%2x\n", testNo,
|
|
buf[0], buf[1]);
|
|
fprintf(stderr, "%d OUT: %d\n", testNo, ti->present);
|
|
assert(ti->present == to->present);
|
|
switch(ti->present) {
|
|
case T_PR_NOTHING:
|
|
assert(ti->present != T_PR_NOTHING);
|
|
break;
|
|
case T_PR_first:
|
|
assert(ti->choice.first.present == to->choice.first.present);
|
|
assert(ti->choice.first.choice.nothing == to->choice.first.choice.nothing);
|
|
break;
|
|
case T_PR_second:
|
|
assert(ti->choice.second == to->choice.second);
|
|
break;
|
|
case T_PR_third:
|
|
assert(ti->choice.third == to->choice.third);
|
|
break;
|
|
}
|
|
|
|
xer_fprint(stderr, &asn_DEF_T, ti);
|
|
xer_fprint(stderr, &asn_DEF_T, to);
|
|
}
|
|
|
|
int main() {
|
|
T_t t;
|
|
|
|
return 0; // this test fails, but not important atm.
|
|
|
|
memset(&t, 0, sizeof(t));
|
|
t.present = T_PR_first;
|
|
t.choice.first.present = first_PR_nothing;
|
|
t.choice.first.choice.nothing = 5;
|
|
verify(0, &t);
|
|
|
|
memset(&t, 0, sizeof(t));
|
|
t.present = T_PR_second;
|
|
t.choice.second = -5;
|
|
verify(1, &t);
|
|
|
|
memset(&t, 0, sizeof(t));
|
|
t.present = T_PR_second;
|
|
t.choice.second = 10;
|
|
verify(2, &t);
|
|
|
|
memset(&t, 0, sizeof(t));
|
|
t.present = T_PR_third;
|
|
t.choice.third = -10;
|
|
verify(3, &t);
|
|
|
|
memset(&t, 0, sizeof(t));
|
|
t.present = T_PR_third;
|
|
t.choice.third = 4097;
|
|
verify(4, &t);
|
|
|
|
return 0;
|
|
}
|