Add test for challenge 1 (hex to base64)

This commit is contained in:
Dimitri Lozeve 2020-06-04 10:53:27 +02:00
parent 2fb3ea46fc
commit 067ad59444
4 changed files with 35 additions and 17 deletions

View file

@ -10,7 +10,7 @@ int main(int argc, char *argv[argc + 1]) {
unsigned char buf[512] = {0};
size_t len = hex_to_bytes(buf, argv[1]);
unsigned char out[512] = {'\0'};
char out[512] = {'\0'};
bytes_to_base64(out, buf, len);
printf("%s\n", out);

View file

@ -1,7 +1,7 @@
#define MUNIT_ENABLE_ASSERT_ALIASES
#include "munit.h"
#include <stdlib.h>
#include "utils.h"
#include <stdlib.h>
static MunitResult test_hex_to_byte(const MunitParameter params[], void *data) {
(void)params;
@ -14,18 +14,38 @@ static MunitResult test_hex_to_byte(const MunitParameter params[], void *data) {
return MUNIT_OK;
}
static MunitResult test_hex_to_base64(const MunitParameter params[],
void *data) {
(void)params;
(void)data;
const char *input = "49276d206b696c6c696e6720796f757220627261696e206c696b6520"
"6120706f69736f6e6f7573206d757368726f6f6d";
unsigned char buf[512] = {0};
size_t len = hex_to_bytes(buf, input);
assert_size(len, ==, 48);
char out[512] = {'\0'};
bytes_to_base64(out, buf, len);
assert_size(strlen(out), ==, 64);
assert_string_equal(
out, "SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t");
return MUNIT_OK;
}
static MunitTest test_suite_tests[] = {
{"/hex_to_byte", test_hex_to_byte, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL},
{"/hex_to_byte", test_hex_to_byte, NULL, NULL, MUNIT_TEST_OPTION_NONE,
NULL},
{"/hex_to_base64", test_hex_to_base64, NULL, NULL, MUNIT_TEST_OPTION_NONE,
NULL},
{NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL}};
static const MunitSuite test_suite = {
(char*) "",
test_suite_tests,
NULL,
1,
MUNIT_SUITE_OPTION_NONE
};
static const MunitSuite test_suite = {(char *)"", test_suite_tests, NULL, 1,
MUNIT_SUITE_OPTION_NONE};
int main(int argc, char* argv[MUNIT_ARRAY_PARAM(argc + 1)]) {
int main(int argc, char *argv[MUNIT_ARRAY_PARAM(argc + 1)]) {
return munit_suite_main(&test_suite, NULL, argc, argv);
}

View file

@ -36,9 +36,8 @@ size_t hex_to_bytes(unsigned char *out, const char hex[static 1]) {
return strlen(hex) / 2 + strlen(hex) % 2;
}
unsigned char *bytes_to_base64(unsigned char *out,
const unsigned char in[static 1], size_t len) {
static const unsigned char base64_table[65] =
char *bytes_to_base64(char *out, const unsigned char in[static 1], size_t len) {
static const char base64_table[65] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
for (size_t i = 0; i < len - 2; i += 3) {

View file

@ -5,8 +5,7 @@
unsigned char hex_to_byte(const char c);
size_t hex_to_bytes(unsigned char *out, const char hex[static 1]);
unsigned char *bytes_to_base64(unsigned char *out,
const unsigned char in[static 1], size_t len);
char *bytes_to_base64(char *out, const unsigned char in[static 1], size_t len);
double frequency_score(unsigned char *buf, size_t len);
unsigned int hamming(const char *s1, const char *s2);