aboutsummaryrefslogtreecommitdiffstats
path: root/c_test/encode_decode.c
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2023-02-25 21:01:03 +0000
committerGravatar Peter McGoron 2023-02-25 21:01:03 +0000
commit09d636c02cdbb13d10f1435d918cc36116715fc4 (patch)
treec7099a6c49ffa4521e144c5ed5a19186d08ec1ec /c_test/encode_decode.c
parentget rid of unused lablen (diff)
export creole_decode; add db test
Diffstat (limited to 'c_test/encode_decode.c')
-rw-r--r--c_test/encode_decode.c179
1 files changed, 4 insertions, 175 deletions
diff --git a/c_test/encode_decode.c b/c_test/encode_decode.c
index 835305c..2366049 100644
--- a/c_test/encode_decode.c
+++ b/c_test/encode_decode.c
@@ -11,188 +11,17 @@ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
#include <string.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
-#include "../creole.c"
-
-#if 0
-struct seq {
- creole_word max;
- unsigned encode_to;
- unsigned high_bits;
-
- unsigned char minbuf[7];
- unsigned char maxbuf[7];
-};
-
-void bprint(unsigned char c) {
- int i;
-
- for (i = 0; i < 8; i++) {
- printf("%u", (c >> (7 - i)) & 1);
- }
-}
-
-void bprintb(unsigned char *b, int len) {
- while (len-- > 0) {
- bprint(*b++);
- printf(" ");
- }
-}
-
-static void encode_byte_seq(struct seq *s) {
- creole_word i = 0;
- int j;
- unsigned char buf[7];
-
- for (;;) {
-
- assert(creole_encode(i, s->encode_to, s->high_bits,
- buf) == 1);
- if (memcmp(s->minbuf, buf, s->encode_to) != 0) {
- printf("0x%X ", i);
- bprintb(s->minbuf, s->encode_to);
- printf("|");
- bprintb(buf, s->encode_to);
- printf("\n");
- abort();
- }
-
- if (i == s->max)
- break;
- i++;
-
- for (j = s->encode_to - 1; j > 0; j--) {
- if (s->minbuf[j] == 0xBF) {
- s->minbuf[j] = 0x80;
- } else {
- s->minbuf[j]++;
- break;
- }
- }
-
- if (j == 0)
- s->minbuf[0]++;
- }
- assert(memcmp(s->maxbuf, s->minbuf, s->encode_to) == 0);
-}
-
-static void encode_1(void) {
- struct seq s;
-
- s.max = 0x7F;
- s.encode_to = 1;
- s.high_bits = 0;
- s.minbuf[0] = 0x00;
- s.maxbuf[0] = 0x7F;
-
- encode_byte_seq(&s);
-}
-
-static void encode_2(unsigned high_bits) {
- struct seq s;
- s.high_bits = high_bits;
-
- memset(s.maxbuf, 0xBF, sizeof(s.maxbuf));
- memset(s.minbuf, 0x80, sizeof(s.minbuf));
- s.max = 0x7F;
- s.encode_to = 2;
- s.maxbuf[0] = s.minbuf[0] = 0xC0 | (high_bits << 1);
- s.maxbuf[0] = 0xC1 | (high_bits << 1);
- s.minbuf[1] = 0x80;
- encode_byte_seq(&s);
-}
-
-static void encode_3(unsigned high_bits) {
- struct seq s;
- s.high_bits = high_bits;
-
- memset(s.maxbuf, 0xBF, sizeof(s.maxbuf));
- memset(s.minbuf, 0x80, sizeof(s.minbuf));
- s.max = 0xFFF;
- s.encode_to = 3;
- s.minbuf[0] = 0xE0 | high_bits;
- s.maxbuf[0] = 0xE0 | high_bits;
- s.minbuf[1] = 0x80;
- encode_byte_seq(&s);
-}
-
-static void encode_4(unsigned high_bits) {
- struct seq s;
- s.high_bits = high_bits;
-
- memset(s.maxbuf, 0xBF, sizeof(s.maxbuf));
- memset(s.minbuf, 0x80, sizeof(s.minbuf));
- s.max = 0x1FFFF;
- s.encode_to = 4;
- s.maxbuf[0] = s.minbuf[0] = 0xF0 | (high_bits >> 1);
- s.minbuf[1] = 0x80 | ((high_bits & 0x1) << 5);
- s.maxbuf[1] = 0x9F | ((high_bits & 0x1) << 5);
- encode_byte_seq(&s);
-}
-
-static void encode_5(unsigned high_bits) {
- struct seq s;
- s.high_bits = high_bits;
-
- memset(s.maxbuf, 0xBF, sizeof(s.maxbuf));
- memset(s.minbuf, 0x80, sizeof(s.minbuf));
- s.max = 0x3FFFFF;
- s.encode_to = 5;
- s.maxbuf[0] = s.minbuf[0] = 0xF8 | (high_bits >> 2);
- s.minbuf[1] = 0x80 | ((high_bits & 0x3) << 4);
- s.maxbuf[1] = 0x8F | ((high_bits & 0x3) << 4);
- encode_byte_seq(&s);
-}
-
-static void encode_6(unsigned high_bits) {
- struct seq s;
- s.high_bits = high_bits;
-
- memset(s.maxbuf, 0xBF, sizeof(s.maxbuf));
- memset(s.minbuf, 0x80, sizeof(s.minbuf));
- s.max = 0x7FFFFFF;
- s.encode_to = 6;
- s.maxbuf[0] = s.minbuf[0] = 0xFC | (high_bits >> 3);
- s.minbuf[1] = 0x80 | ((high_bits & 0x7) << 3);
- s.maxbuf[1] = 0x87 | ((high_bits & 0x7) << 3);
- encode_byte_seq(&s);
-}
-
-static void encode_7(unsigned high_bits) {
- struct seq s;
- s.high_bits = high_bits;
-
- memset(s.maxbuf, 0xBF, sizeof(s.maxbuf));
- memset(s.minbuf, 0x80, sizeof(s.minbuf));
- s.max = 0xFFFFFFFF;
- s.encode_to = 7;
- s.maxbuf[0] = s.minbuf[0] = 0xFE;
- s.minbuf[1] = 0x80 | (high_bits << 2);
- s.maxbuf[1] = 0x83 | (high_bits << 2);
- encode_byte_seq(&s);
-}
-
-static void test_encode(void) {
- void (*tests[6])(unsigned) = {encode_2, encode_3, encode_4, encode_5, encode_6, encode_7};
- unsigned high_bits;
- unsigned test;
- encode_1();
-
-# pragma omp parallel for collapse(2) num_threads(8)
- for (high_bits = 0; high_bits < 16; high_bits++) {
- for (test = 0; test < 6; test++)
- tests[test](high_bits);
- }
-}
-#endif
+#include "../creole.h"
void encode_decode_byte_seq(creole_word max, unsigned encode_to, unsigned high_bits) {
unsigned char buf[7];
struct creole_reader r = {0};
- struct word w;
+ struct creole_word w;
creole_word i = 0;
for (;;) {
@@ -201,7 +30,7 @@ void encode_decode_byte_seq(creole_word max, unsigned encode_to, unsigned high_b
assert(creole_encode(i, encode_to, high_bits,
buf) == 1);
- assert(decode_seq(&r, &w) == 1);
+ assert(creole_decode(&r, &w) == 1);
assert(w.len == encode_to);
if (w.high_bits != high_bits) {
printf("high bits %u != %u\n", w.high_bits, high_bits);