Added simple 5bits to 8 and reverse encoder, with test

This commit is contained in:
Erik Ekman 2008-12-11 19:26:11 +00:00
parent 9d8e9a7d18
commit 458b5af003
3 changed files with 36 additions and 0 deletions

View file

@ -70,6 +70,27 @@ base32_blksize_enc()
return BLKSIZE_ENC;
}
int
b32_5to8(int in)
{
return cb32[in & 31];
}
int
b32_8to5(int in)
{
int i;
int c;
if (!reverse_init) {
for (i = 0; i < 32; i++) {
c = cb32[i];
rev32[(int) c] = i;
}
reverse_init = 1;
}
return rev32[in];
}
static int
base32_encode(char *buf, size_t *buflen, const void *data, size_t size)
{

View file

@ -19,4 +19,6 @@
struct encoder *get_base32_encoder(void);
int b32_5to8(int);
int b32_8to5(int);
#endif

View file

@ -77,6 +77,18 @@ START_TEST(test_base32_decode)
}
END_TEST
START_TEST(test_base32_5to8_8to5)
{
int i;
int c;
for (i = 0; i < 32; i++) {
c = b32_5to8(i);
fail_unless(b32_8to5(c) == i);
}
}
END_TEST
TCase *
test_base32_create_tests()
{
@ -85,6 +97,7 @@ test_base32_create_tests()
tc = tcase_create("Base32");
tcase_add_test(tc, test_base32_encode);
tcase_add_test(tc, test_base32_decode);
tcase_add_test(tc, test_base32_5to8_8to5);
return tc;
}