Ed Tanous | 5464029 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 1 | #include <libcper/base64.h> |
| 2 | |
| 3 | #include <stdio.h> |
| 4 | #include <stdlib.h> |
| 5 | #include <assert.h> |
| 6 | #include <string.h> |
| 7 | |
Ed Tanous | 3e72806 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 8 | const char *good_encode_outputs[] = { |
| 9 | "Zg==", "Zm8=", "Zm9v", "Zm9vYg==", "Zm9vYmE=", "Zm9vYmFy", |
| 10 | }; |
| 11 | const char *good_encode_inputs[] = { |
| 12 | "f", "fo", "foo", "foob", "fooba", "foobar", |
| 13 | }; |
| 14 | |
Ed Tanous | 5464029 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 15 | void test_base64_encode_good() |
| 16 | { |
| 17 | int32_t encoded_len = 0; |
Ed Tanous | 3e72806 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 18 | for (long unsigned int i = 0; |
| 19 | i < sizeof(good_encode_inputs) / sizeof(good_encode_inputs[0]); |
| 20 | i++) { |
| 21 | const char *data = good_encode_inputs[i]; |
| 22 | char *encoded = base64_encode((unsigned char *)data, |
| 23 | strlen(data), &encoded_len); |
| 24 | assert((size_t)encoded_len == strlen(good_encode_outputs[i])); |
| 25 | assert(memcmp(encoded, good_encode_outputs[i], encoded_len) == |
| 26 | 0); |
| 27 | free(encoded); |
| 28 | } |
Ed Tanous | 5464029 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 29 | } |
| 30 | |
Ed Tanous | 3e72806 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 31 | const char *good_decode_inputs[] = { |
| 32 | "Zg==", "Zg", "Zm8=", "Zm8", "Zm9v", |
| 33 | }; |
| 34 | const char *good_decode_outputs[] = { |
| 35 | "f", "f", "fo", "fo", "foo", |
| 36 | }; |
| 37 | |
Ed Tanous | 5464029 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 38 | void test_base64_decode_good() |
| 39 | { |
Ed Tanous | 3e72806 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 40 | for (long unsigned int i = 0; |
| 41 | i < sizeof(good_decode_inputs) / sizeof(good_decode_inputs[0]); |
| 42 | i++) { |
| 43 | int32_t decoded_len = 0; |
| 44 | const char *data = good_decode_inputs[i]; |
| 45 | UINT8 *decoded = |
| 46 | base64_decode(data, strlen(data), &decoded_len); |
| 47 | assert(decoded != NULL); |
| 48 | assert((size_t)decoded_len == strlen(good_decode_outputs[i])); |
| 49 | assert(memcmp(decoded, good_decode_outputs[i], decoded_len) == |
| 50 | 0); |
| 51 | free(decoded); |
| 52 | } |
Ed Tanous | 5464029 | 2025-03-17 20:55:20 -0700 | [diff] [blame] | 53 | } |