5 static int test_b64decode(const void *input
, const void *correct
,
6 size_t correct_length
) {
10 length
= _isds_b64decode(input
, &output
);
12 if (length
== correct_length
) {
14 if (!memcmp(correct
, output
, length
)) {
19 FAIL_TEST("Output length matches, but content differs");
27 FAIL_TEST("Output length signals error as expected, "
28 "but content has not been deallocated");
33 /* Format as signed to get -1 as error. Big positive numbers should
34 * not occure in these tests */
35 FAIL_TEST("Output length differs: expected=%zd, got=%zd",
36 correct_length
, length
);
40 FAIL_TEST("Test could not been judged -- Internal test error");
44 static int test_b64decode_null_pointer(const void *input
,
45 size_t correct_length
) {
48 length
= _isds_b64decode(input
, NULL
);
50 if (length
== correct_length
)
53 /* Format as signed to get -1 as error. Big positive numbers should
54 * not occure in these tests */
55 FAIL_TEST("Output length differs: expected=%zd, got=%zd",
56 correct_length
, length
)
60 int main(int argc
, char **argv
) {
61 INIT_TEST("b64decode");
63 TEST("generic", test_b64decode
, "Af+qVQA=\n", "\x1\xff\xaa\x55", 5);
64 TEST("partial cycle", test_b64decode
, "MQA=\n", "1", 2);
65 TEST("1 cycle", test_b64decode
, "NDIA\n", "42", 3);
66 TEST("2 cycles", test_b64decode
, "MTIzNDUA\n", "12345", 6);
67 TEST("generic with new line", test_b64decode
, "NDIA\n", "42", 3);
68 TEST("generic without new line", test_b64decode
, "NDIA", "42", 3);
69 TEST("new line only", test_b64decode
, "\n", NULL
, 0);
70 TEST("empty string", test_b64decode
, "", NULL
, 0);
71 TEST("incomplete input", test_b64decode
, "42", "\xe3", 1);
72 TEST("NULL input", test_b64decode
, NULL
, NULL
, (size_t) -1);
73 TEST("NULL output pointer", test_b64decode_null_pointer
, "\n",