test-numpack.c revision a6050e85dfaa9af0a7b4e059c198df6dc0133388
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen/* Copyright (c) 2013-2014 Dovecot authors, see the included COPYING file */
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainenstatic struct test {
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen { 0xffffffff, { 0xff, 0xff, 0xff, 0xff, 0xf }, 5 },
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen { 0, { 0 }, 1 },
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen { 0xdeadbeefcafe, { 0xfe, 0x95, 0xbf, 0xf7, 0xdb, 0xd5, 0x37 }, 7 },
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen { 0xffffffffffffffff, { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1 }, 10 },
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen { 0xfffffffe, { 0xfe, 0xff, 0xff, 0xff, 0xf }, 5 },
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainenstatic struct fail {
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen { { 0 }, 0 }, /* has no termination byte */
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen { { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 }, 10 }, /* ditto*/
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 2 }, 10 }, /* overflow */
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f }, 11 }, /* ditto */
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen buffer_t *buf = buffer_create_dynamic(pool_datastack_create(), 32);
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen unsigned int i;
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen test_assert_idx(buf->used == enc_tests[i].output_size, i);
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen test_assert_idx(memcmp(buf->data, enc_tests[i].output,
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen test_assert_idx(numpack_decode(&p, end, &num) == 0, i);
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen test_assert_idx(num == enc_tests[i].input, i);
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen p = dec_fails[i].input; end = p + dec_fails[i].input_size;
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen test_assert_idx(numpack_decode(&p, end, &num) == -1, i);
39ee82dad4d4fa61e3ed074d191afc6a9b82e249Timo Sirainen test_assert_idx(p == dec_fails[i].input && num == magic, i);