static void first_tests(void) { static const char encoded[] = "YWJjZGVm Z2hpamtsbW5vcHFyc3#R1dnd4eXp@BQkNERUZHSEl~KS0xNTk9QUVJTVFVWV1hZWjAxMjM0\r\nNTY="; B64_RC rc; size_t n = b64_decode2(encoded, strlen(encoded) - 1, NULL, 0, 0, NULL, &rc); char *dest = (char*)malloc(n); char const *badChar; size_t n2; /* Ignoring all bad content. */ n2 = b64_decode2(encoded, strlen(encoded) - 1, dest, n, 0, &badChar, &rc); if(0 == n2) { printf("Unexpected failure, when ignoring all bad characters; bad=\"%s\"\n", badChar); } else { #if 0 printf("Decoded: %.*s\n", n2, dest); #endif /* 0 */ } /* Ignoring bad whitespace. */ n2 = b64_decode2(encoded, strlen(encoded) - 1, dest, n, B64_F_STOP_ON_UNEXPECTED_WS, &badChar, &rc); if(0 == n2) { #if 0 printf("Expected failure, when stopping on bad whitespace characters; bad=\"%s\"\n", badChar); #endif /* 0 */ } else { printf("Decoded: %.*s\n", (int)n2, dest); } /* Ignoring bad whitespace. */ n2 = b64_decode2(encoded, strlen(encoded) - 1, dest, n, B64_F_STOP_ON_UNKNOWN_CHAR, &badChar, &rc); if(0 == n2) { #if 0 printf("Expected failure, when stopping on unrecognised characters; bad=\"%s\"\n", badChar); #endif /* 0 */ } else { printf("Decoded: %.*s\n", (int)n2, dest); } }
static void test_2_00() { char const enc[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ="; unsigned char bytes[10]; B64_RC rc = B64_RC_OK; size_t n = b64_decode2(enc, STLSOFT_NUM_ELEMENTS(enc) - 1u, &bytes[0], sizeof(bytes), 0, NULL, &rc); XTESTS_TEST_INTEGER_EQUAL(0u, n); XTESTS_TEST_ENUM_EQUAL(B64_RC_INSUFFICIENT_BUFFER, rc); }