diff options
author | Lev Walkin <vlm@lionet.info> | 2014-02-10 09:24:39 -0800 |
---|---|---|
committer | Lev Walkin <vlm@lionet.info> | 2014-02-10 09:24:39 -0800 |
commit | 58b74eb5708d9d2f4a97ec3e2c48a9f4d5867144 (patch) | |
tree | 1110eb3eb713dad6448e460f6ac176ff9fc06790 /asn1c | |
parent | 6c52784de169a792156a4d1da1312097ff93d551 (diff) |
add signed integer tests for test 134
Diffstat (limited to 'asn1c')
-rw-r--r-- | asn1c/tests/check-134.-gen-PER.c | 86 |
1 files changed, 63 insertions, 23 deletions
diff --git a/asn1c/tests/check-134.-gen-PER.c b/asn1c/tests/check-134.-gen-PER.c index d129fe3b..be77505b 100644 --- a/asn1c/tests/check-134.-gen-PER.c +++ b/asn1c/tests/check-134.-gen-PER.c @@ -35,14 +35,16 @@ static void verify(int testNo, T_t *ti) { asn_enc_rval_t er; asn_dec_rval_t rv; - unsigned char buf[16]; + unsigned char buf[20]; T_t *to = 0; - fprintf(stderr, "%d IN: { %lu, %lu }\n", testNo, - i2ul(&ti->unsigned33), i2ul(&ti->unsigned42)); + fprintf(stderr, "%d IN: { %lu, %lu, %ld, %ld }\n", testNo, + i2ul(&ti->unsigned33), i2ul(&ti->unsigned42), + i2ul(&ti->signed33), ti->signed33ext + ); er = uper_encode_to_buffer(&asn_DEF_T, ti, buf, sizeof buf); - assert(er.encoded == 33 + 42); + assert(er.encoded >= 33 + 42 + 33 + 1 + 33); rv = uper_decode(0, &asn_DEF_T, (void *)&to, buf, sizeof buf, 0, 0); assert(rv.code == RC_OK); @@ -50,12 +52,16 @@ verify(int testNo, T_t *ti) { fprintf(stderr, "%d ENC: %2x%2x%2x%2x %2x%2x%2x%2x\n", testNo, buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7]); - fprintf(stderr, "%d OUT: { %lu, %lu } vs { %lu, %lu }\n", + fprintf(stderr, "%d OUT: { %lu, %lu, %ld, %ld } vs { %lu, %lu, %ld, %ld }\n", testNo, i2ul(&ti->unsigned33), i2ul(&ti->unsigned42), - i2ul(&to->unsigned33), i2ul(&to->unsigned42)); + i2ul(&ti->signed33), ti->signed33ext, + i2ul(&to->unsigned33), i2ul(&to->unsigned42), + i2ul(&to->signed33), to->signed33ext); assert(i2ul(&ti->unsigned33) == i2ul(&to->unsigned33)); assert(i2ul(&ti->unsigned42) == i2ul(&to->unsigned42)); + assert(i2ul(&ti->signed33) == i2ul(&to->signed33)); + assert(ti->signed33ext == to->signed33ext); xer_fprint(stderr, &asn_DEF_T, ti); xer_fprint(stderr, &asn_DEF_T, to); @@ -77,37 +83,71 @@ int main() { T_t ti; memset(&ti, 0, sizeof(ti)); - ul2i(&ti.unsigned33, 0); - ul2i(&ti.unsigned42, 0); + ul2i(&ti.unsigned33, 0); + ul2i(&ti.unsigned42, 0); + ul2i(&ti.signed33, 0); + ti.signed33ext = 0; verify(1, &ti); - ul2i(&ti.unsigned33, 1); - ul2i(&ti.unsigned42, 1); + ul2i(&ti.unsigned33, 1); + ul2i(&ti.unsigned42, 1); + ul2i(&ti.signed33, 1); + ti.signed33ext = 1; verify(2, &ti); - ul2i(&ti.unsigned33, 5000000000); - ul2i(&ti.unsigned42, 3153600000000); + ul2i(&ti.unsigned33, 5000000000); + ul2i(&ti.unsigned42, 3153600000000); + ul2i(&ti.signed33, 4000000000); + ti.signed33ext = 4000000000; verify(3, &ti); ul2i(&ti.unsigned33, -1); - ul2i(&ti.unsigned42, 0); + ul2i(&ti.unsigned42, 0); + ul2i(&ti.signed33, 0); + ti.signed33ext = 0; NO_encode(4, &ti); - ul2i(&ti.unsigned33, 0); + ul2i(&ti.unsigned33, 0); ul2i(&ti.unsigned42, -1); + ul2i(&ti.signed33, 0); + ti.signed33ext = 0; NO_encode(5, &ti); - ul2i(&ti.unsigned33, 5000000000 + 1); - ul2i(&ti.unsigned42, 0); + ul2i(&ti.unsigned33, 0); + ul2i(&ti.unsigned42, 0); + ul2i(&ti.signed33, -4000000000-1); + ti.signed33ext = 0; NO_encode(6, &ti); - ul2i(&ti.unsigned33, 0); - ul2i(&ti.unsigned42, 3153600000000 + 1); - NO_encode(7, &ti); - - ul2i(&ti.unsigned33, 5000000000 - 1); - ul2i(&ti.unsigned42, 3153600000000 - 1); - verify(8, &ti); + ul2i(&ti.unsigned33, 0); + ul2i(&ti.unsigned42, 0); + ul2i(&ti.signed33, 0); + ti.signed33ext = -4000000000-1; + verify(7, &ti); /* signed33ext is extensible */ + + ul2i(&ti.unsigned33, 5000000000 + 1); + ul2i(&ti.unsigned42, 0); + ul2i(&ti.signed33, 0); + ti.signed33ext = 0; + NO_encode(8, &ti); + + ul2i(&ti.unsigned33, 0); + ul2i(&ti.unsigned42, 3153600000000 + 1); + ul2i(&ti.signed33, 0); + ti.signed33ext = 0; + NO_encode(9, &ti); + + ul2i(&ti.unsigned33, 5000000000 - 1); + ul2i(&ti.unsigned42, 3153600000000 - 1); + ul2i(&ti.signed33, 4000000000 - 1); + ti.signed33ext = 4000000000 - 1; + verify(10, &ti); + + ul2i(&ti.unsigned33, 0); + ul2i(&ti.unsigned42, 0); + ul2i(&ti.signed33, 0); + ti.signed33ext = 4000000000 + 1; + verify(11, &ti); return 0; } |