aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2013-03-28 03:13:38 -0700
committerLev Walkin <vlm@lionet.info>2013-03-28 03:13:38 -0700
commit7f35fd8cf10a5cf3b3350cea9be0522882a941fd (patch)
tree17d5569a6edb182e2a8302112051b111ea20de12
parentbbc78f6872766aeb669aef543390c33f56a5f72b (diff)
more PER tests
-rw-r--r--skeletons/tests/check-PER.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/skeletons/tests/check-PER.c b/skeletons/tests/check-PER.c
index f21398b4..9fc02589 100644
--- a/skeletons/tests/check-PER.c
+++ b/skeletons/tests/check-PER.c
@@ -1,6 +1,8 @@
#include <stdio.h>
#include <assert.h>
+#define EMIT_ASN_DEBUG 1
+#include <per_support.c>
#include <per_support.h>
static void
@@ -69,6 +71,58 @@ check_per_decoding() {
z = per_get_few_bits(&pos, 24);
assert(z == 14443711);
+ pos.buffer = "\001";
+ pos.nboff = 7;
+ pos.nbits = 7;
+ z = per_get_few_bits(&pos, 1);
+ assert(pos.nboff == 7);
+ assert(pos.nbits == 7);
+ assert(z == -1);
+
+ pos.buffer = "\001";
+ pos.nboff = 7;
+ pos.nbits = 8;
+ z = per_get_few_bits(&pos, 1);
+ assert(pos.nboff == 8);
+ assert(pos.nbits == 8);
+ assert(z == 1);
+
+ pos.buffer = "\000";
+ pos.nboff = 7;
+ pos.nbits = 8;
+ z = per_get_few_bits(&pos, 1);
+ assert(pos.nboff == 8);
+ assert(pos.nbits == 8);
+ assert(z == 0);
+ z = per_get_few_bits(&pos, 1);
+ assert(pos.nboff == 8);
+ assert(pos.nbits == 8);
+ assert(z == -1);
+
+ pos.buffer = "\000";
+ pos.nboff = 7;
+ pos.nbits = 9;
+ z = per_get_few_bits(&pos, 1);
+ assert(pos.nboff == 8);
+ assert(pos.nbits == 9);
+ assert(z == 0);
+ z = per_get_few_bits(&pos, 1);
+ assert(pos.nboff == 1);
+ assert(pos.nbits == 1);
+ assert(z == 0);
+
+ pos.buffer = "\001";
+ pos.nboff = 7;
+ pos.nbits = 9;
+ z = per_get_few_bits(&pos, 1);
+ assert(pos.nboff == 8);
+ assert(pos.nbits == 9);
+ assert(z == 1);
+ z = per_get_few_bits(&pos, 1);
+ assert(pos.nboff == 1);
+ assert(pos.nbits == 1);
+ assert(z == 0);
+
/* Get full 31-bit range */
pos.buffer = buf;
pos.nboff = 7;