X-Git-Url: https://git.toastfreeware.priv.at/debian/iodine.git/blobdiff_plain/6235fca1d72ece180338b30bb26afa938618cf26..2662615bea0bc61afc36ec018f0bf515c3991778:/tests/base32.c diff --git a/tests/base32.c b/tests/base32.c index a3f95bb..9ff0cf7 100644 --- a/tests/base32.c +++ b/tests/base32.c @@ -24,14 +24,18 @@ #include "base32.h" #include "test.h" +#define TUPLES 5 + static struct tuple { char *a; char *b; -} testpairs[] = { +} testpairs[TUPLES] = { { "iodinetestingtesting", "nfxwi0lomv0gk21unfxgo3dfon0gs1th" }, { "abc123", "mfrggmjsgm" }, - { NULL, NULL } + { "test", "orsxg3a" }, + { "tst", "orzxi" }, + { "", "" }, }; START_TEST(test_base32_encode) @@ -40,18 +44,14 @@ START_TEST(test_base32_encode) char buf[4096]; struct encoder *b32; int val; - int i; b32 = get_base32_encoder(); - for (i = 0; testpairs[i].a != NULL; i++) { - len = sizeof(buf); - val = b32->encode(buf, &len, testpairs[i].a, strlen(testpairs[i].a)); + len = sizeof(buf); + val = b32->encode(buf, &len, testpairs[_i].a, strlen(testpairs[_i].a)); - fail_unless(val > 0, strerror(errno)); - fail_unless(strcmp(buf, testpairs[i].b) == 0, - "'%s' != '%s'", buf, testpairs[i].b); - } + fail_unless(strcmp(buf, testpairs[_i].b) == 0, + "'%s' != '%s'", buf, testpairs[_i].b); } END_TEST @@ -61,19 +61,15 @@ START_TEST(test_base32_decode) char buf[4096]; struct encoder *b32; int val; - int i; b32 = get_base32_encoder(); - for (i = 0; testpairs[i].a != NULL; i++) { - len = sizeof(buf); - val = b32->decode(buf, &len, testpairs[i].b, strlen(testpairs[i].b)); + len = sizeof(buf); + val = b32->decode(buf, &len, testpairs[_i].b, strlen(testpairs[_i].b)); - fail_unless(val > 0, strerror(errno)); - fail_unless(buf != NULL, "buf == NULL"); - fail_unless(strcmp(buf, testpairs[i].a) == 0, - "'%s' != '%s'", buf, testpairs[i].a); - } + fail_unless(buf != NULL, "buf == NULL"); + fail_unless(strcmp(buf, testpairs[_i].a) == 0, + "'%s' != '%s'", buf, testpairs[_i].a); } END_TEST @@ -89,15 +85,58 @@ START_TEST(test_base32_5to8_8to5) } END_TEST +START_TEST(test_base32_blksize) +{ + size_t rawlen; + size_t enclen; + char *rawbuf; + char *encbuf; + struct encoder *b32; + int i; + int val; + + b32 = get_base32_encoder(); + + rawlen = b32->blocksize_raw(); + enclen = b32->blocksize_encoded(); + + rawbuf = malloc(rawlen + 16); + encbuf = malloc(enclen + 16); + + for (i = 0; i < rawlen; i++) { + rawbuf[i] = 'A'; + } + rawbuf[i] = 0; + + val = b32->encode(encbuf, &enclen, rawbuf, rawlen); + + fail_unless(rawlen == 5, "raw length was %d not 5", rawlen); + fail_unless(enclen == 5, "encoded %d bytes, not 5", enclen); + fail_unless(val == 8, "encoded string %s was length %d", encbuf, val); + + memset(rawbuf, 0, rawlen + 16); + + enclen = val; + val = b32->decode(rawbuf, &rawlen, encbuf, enclen); + + fail_unless(rawlen == 5, "raw length was %d not 5", rawlen); + fail_unless(val == 5, "val was not 5 but %d", val); + for (i = 0; i < rawlen; i++) { + fail_unless(rawbuf[i] == 'A'); + } +} +END_TEST + TCase * test_base32_create_tests() { TCase *tc; tc = tcase_create("Base32"); - tcase_add_test(tc, test_base32_encode); - tcase_add_test(tc, test_base32_decode); + tcase_add_loop_test(tc, test_base32_encode, 0, TUPLES); + tcase_add_loop_test(tc, test_base32_decode, 0, TUPLES); tcase_add_test(tc, test_base32_5to8_8to5); + tcase_add_test(tc, test_base32_blksize); return tc; }