[autobuild] allow sendfile() in cross-compile (fixes #2836)
[lighttpd.git] / src / test_base64.c
blob9f2037b83b7671a76cc43d528c5dd074edafaa60
1 #include "first.h"
3 #include "base64.h"
5 static const base64_charset encs[] = { BASE64_STANDARD, BASE64_URL };
6 static buffer *check;
8 inline
9 static void check_base64 (char *out, const size_t out_sz, const char *in, const size_t in_len, const base64_charset enc) {
10 force_assert(out_sz == li_to_base64_no_padding(out, out_sz, (const unsigned char *)in, in_len, enc));
12 buffer_reset(check);
13 force_assert(NULL != buffer_append_base64_decode(check, out, out_sz, enc));
14 force_assert(buffer_is_equal_string(check, in, in_len));
17 static void check_all_len_0 (const base64_charset enc) {
18 check_base64(NULL, 0, "", 0, enc);
21 static void check_all_len_1 (const base64_charset enc) {
22 unsigned int c1;
23 for (c1 = 0; c1 < 256; ++c1) {
24 unsigned char in[] = { c1 };
25 char out[2] = { 0, 0 };
26 check_base64(out, sizeof(out), (char *)in, sizeof(in), enc);
30 static void check_all_len_2 (const base64_charset enc) {
31 unsigned int c1, c2;
32 for (c1 = 0; c1 < 256; ++c1) for (c2 = 0; c2 < 256; ++c2) {
33 unsigned char in[] = { c1, c2 };
34 char out[3] = { 0, 0, 0 };
35 check_base64(out, sizeof(out), (char *)in, sizeof(in), enc);
39 static void check_all_len_3 (const base64_charset enc) {
40 unsigned int c1, c2, c3;
41 for (c1 = 0; c1 < 256; ++c1) for (c2 = 0; c2 < 256; ++c2) for (c3 = 0; c3 < 256; ++c3) {
42 unsigned char in[] = { c1, c2, c3 };
43 char out[4] = { 0, 0, 0, 0 };
44 check_base64(out, sizeof(out), (char *)in, sizeof(in), enc);
48 int main() {
49 check = buffer_init();
51 for (unsigned int enc = 0; enc < sizeof(encs)/sizeof(*encs); ++enc) {
52 check_all_len_0(encs[enc]);
53 check_all_len_1(encs[enc]);
54 check_all_len_2(encs[enc]);
55 check_all_len_3(encs[enc]);
58 buffer_free(check);
59 return 0;