more PER tests
diff --git a/skeletons/tests/check-PER.c b/skeletons/tests/check-PER.c
index f21398b..9fc0258 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 @@
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;