aboutsummaryrefslogtreecommitdiffstats
path: root/asn1c
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2014-02-10 09:24:39 -0800
committerLev Walkin <vlm@lionet.info>2014-02-10 09:24:39 -0800
commit58b74eb5708d9d2f4a97ec3e2c48a9f4d5867144 (patch)
tree1110eb3eb713dad6448e460f6ac176ff9fc06790 /asn1c
parent6c52784de169a792156a4d1da1312097ff93d551 (diff)
add signed integer tests for test 134
Diffstat (limited to 'asn1c')
-rw-r--r--asn1c/tests/check-134.-gen-PER.c86
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;
}