#define MUNIT_ENABLE_ASSERT_ALIASES #include "munit.h" #include "utils.h" #include #include static MunitResult test_hex_to_byte(const MunitParameter params[], void *data) { (void)params; (void)data; assert_uchar(hex_to_byte('0'), ==, 0); assert_uchar(hex_to_byte('a'), ==, 10); assert_uchar(hex_to_byte('f'), ==, 15); 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 MunitResult test_frequency_score(const MunitParameter params[], void *data) { (void)params; (void)data; // Non-printable characters should return INFINITY. assert(isfinite(frequency_score("YELLOW SUBMARINE", 16))); assert(isinf(frequency_score("\0x07", 1))); assert(isinf(frequency_score("YELLOW\0x07 SUBMARINE", 17))); // Teh frequency score should be case-insensitive. assert_double_equal(frequency_score("YELLOW SUBMARINE", 16), frequency_score("yellow submarine", 16), 12); // E is more frequent than Z. assert_double(frequency_score("eee", 3), <, frequency_score("zzz", 3)); // Space is more frequent than anything. assert_double(frequency_score(" ", 3), <, frequency_score("eee", 3)); return MUNIT_OK; } static MunitResult test_hamming(const MunitParameter params[], void *data) { (void)params; (void)data; assert_int(hamming("this is a test", "wokka wokka!!!"), ==, 37); return MUNIT_OK; } static MunitTest test_suite_tests[] = { {"/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}, {"/frequency_score", test_frequency_score, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL}, {"/hamming", test_hamming, 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}; int main(int argc, char *argv[MUNIT_ARRAY_PARAM(argc + 1)]) { return munit_suite_main(&test_suite, NULL, argc, argv); }