|
@@ -41,22 +41,23 @@ const struct {
|
|
{}
|
|
{}
|
|
};
|
|
};
|
|
|
|
|
|
-typedef typeof(((jose_hook_alg_t *) NULL)->comp.inf) comp_func_t;
|
|
|
|
-
|
|
|
|
static void
|
|
static void
|
|
-test(const jose_hook_alg_t *a, comp_func_t func, bool iter,
|
|
|
|
- const uint8_t *i, size_t il,
|
|
|
|
- const uint8_t *o, size_t ol)
|
|
|
|
|
|
+test(const jose_hook_alg_t *a, bool iter,
|
|
|
|
+ const uint8_t *i, size_t il)
|
|
{
|
|
{
|
|
jose_io_auto_t *b = NULL;
|
|
jose_io_auto_t *b = NULL;
|
|
|
|
+ jose_io_auto_t *c = NULL;
|
|
jose_io_auto_t *z = NULL;
|
|
jose_io_auto_t *z = NULL;
|
|
- void *buf = NULL;
|
|
|
|
- size_t len = 0;
|
|
|
|
|
|
+ void *buf1 = NULL;
|
|
|
|
+ void *buf2 = NULL;
|
|
|
|
+ size_t blen = 0;
|
|
|
|
+ size_t clen = 0;
|
|
|
|
|
|
- b = jose_io_malloc(NULL, &buf, &len);
|
|
|
|
|
|
+ /* Test compression first. */
|
|
|
|
+ b = jose_io_malloc(NULL, &buf1, &blen);
|
|
assert(b);
|
|
assert(b);
|
|
|
|
|
|
- z = func(a, NULL, b);
|
|
|
|
|
|
+ z = a->comp.def(a, NULL, b);
|
|
assert(z);
|
|
assert(z);
|
|
|
|
|
|
if (iter) {
|
|
if (iter) {
|
|
@@ -68,8 +69,26 @@ test(const jose_hook_alg_t *a, comp_func_t func, bool iter,
|
|
|
|
|
|
assert(z->done(z));
|
|
assert(z->done(z));
|
|
|
|
|
|
- assert(len == ol);
|
|
|
|
- assert(memcmp(buf, o, ol) == 0);
|
|
|
|
|
|
+ /* Test decompression now. */
|
|
|
|
+ c = jose_io_malloc(NULL, &buf2, &clen);
|
|
|
|
+ assert(b);
|
|
|
|
+
|
|
|
|
+ z = a->comp.inf(a, NULL, c);
|
|
|
|
+ assert(z);
|
|
|
|
+
|
|
|
|
+ if (iter) {
|
|
|
|
+ uint8_t *m = buf1;
|
|
|
|
+ for (size_t j = 0; j < blen; j++)
|
|
|
|
+ assert(z->feed(z, &m[j], 1));
|
|
|
|
+ } else {
|
|
|
|
+ assert(z->feed(z, buf1, blen));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ assert(z->done(z));
|
|
|
|
+
|
|
|
|
+ /* Compare the final output with the original input. */
|
|
|
|
+ assert(clen == il);
|
|
|
|
+ assert(memcmp(buf2, i, il) == 0);
|
|
}
|
|
}
|
|
|
|
|
|
int
|
|
int
|
|
@@ -93,20 +112,10 @@ main(int argc, char *argv[])
|
|
assert(jose_b64_dec_buf(tests[i].def, strlen(tests[i].def),
|
|
assert(jose_b64_dec_buf(tests[i].def, strlen(tests[i].def),
|
|
tst_def, sizeof(tst_def)) == sizeof(tst_def));
|
|
tst_def, sizeof(tst_def)) == sizeof(tst_def));
|
|
|
|
|
|
- test(a, a->comp.def, false,
|
|
|
|
- tst_inf, sizeof(tst_inf),
|
|
|
|
- tst_def, sizeof(tst_def));
|
|
|
|
-
|
|
|
|
- test(a, a->comp.inf, false,
|
|
|
|
- tst_def, sizeof(tst_def),
|
|
|
|
|
|
+ test(a, false,
|
|
tst_inf, sizeof(tst_inf));
|
|
tst_inf, sizeof(tst_inf));
|
|
|
|
|
|
- test(a, a->comp.def, true,
|
|
|
|
- tst_inf, sizeof(tst_inf),
|
|
|
|
- tst_def, sizeof(tst_def));
|
|
|
|
-
|
|
|
|
- test(a, a->comp.inf, true,
|
|
|
|
- tst_def, sizeof(tst_def),
|
|
|
|
|
|
+ test(a, true,
|
|
tst_inf, sizeof(tst_inf));
|
|
tst_inf, sizeof(tst_inf));
|
|
}
|
|
}
|
|
|
|
|