From 628a5d040e0884aeaa688a989b1e8888125e9f93 Mon Sep 17 00:00:00 2001 From: icex2 Date: Sun, 17 Jan 2021 00:50:54 +0100 Subject: [PATCH] util/base64: Add tests --- cmake/src/test/util/CMakeLists.txt | 1 + cmake/src/test/util/base64/CMakeLists.txt | 11 +++++ src/test/util/base64/main.c | 58 +++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 cmake/src/test/util/base64/CMakeLists.txt create mode 100644 src/test/util/base64/main.c diff --git a/cmake/src/test/util/CMakeLists.txt b/cmake/src/test/util/CMakeLists.txt index 2466eca..f6bb890 100644 --- a/cmake/src/test/util/CMakeLists.txt +++ b/cmake/src/test/util/CMakeLists.txt @@ -1,2 +1,3 @@ +add_subdirectory(base64) add_subdirectory(mem) add_subdirectory(str) \ No newline at end of file diff --git a/cmake/src/test/util/base64/CMakeLists.txt b/cmake/src/test/util/base64/CMakeLists.txt new file mode 100644 index 0000000..5771cd2 --- /dev/null +++ b/cmake/src/test/util/base64/CMakeLists.txt @@ -0,0 +1,11 @@ +project(test-util-base64) +message(STATUS "Project " ${PROJECT_NAME}) + +set(SRC ${PT_ROOT_TEST}/util/base64) + +set(SOURCE_FILES + ${SRC}/main.c) + +add_executable(${PROJECT_NAME} ${SOURCE_FILES}) + +target_link_libraries(${PROJECT_NAME} cmocka test-util util) diff --git a/src/test/util/base64/main.c b/src/test/util/base64/main.c new file mode 100644 index 0000000..6a2d288 --- /dev/null +++ b/src/test/util/base64/main.c @@ -0,0 +1,58 @@ +#include +#include + +#include "test-util/mem.h" + +#include "util/base64.h" +#include "util/mem.h" + +static int setup(void** state) +{ + test_util_mem_install_mem_interface(); + + return 0; +} + +static void test_base64_encode(void** state) +{ + const char* exp_str = "dGhpcyBpcyBhIHRlc3Qgc3RyaW5nIHdpdGggc3R1ZmYgKiYjJDEyMzIxOiJ9e3wrXygp"; + + const char* str = "this is a test string with stuff *&#$12321:\"}{|+_()"; + size_t len = strlen(str); + + size_t out_len = 0; + + uint8_t* out_data = util_base64_encode((const uint8_t*) str, len, &out_len); + + assert_int_equal(out_len, strlen(exp_str)); + assert_string_equal(out_data, exp_str); + + util_xfree((void**) &out_data); +} + +static void test_base64_decode(void** state) +{ + const char* exp_str = "this is a test string with stuff *&#$12321:\"}{|+_()"; + + const char* str = "dGhpcyBpcyBhIHRlc3Qgc3RyaW5nIHdpdGggc3R1ZmYgKiYjJDEyMzIxOiJ9e3wrXygp"; + size_t len = strlen(str); + + size_t out_len = 0; + + uint8_t* out_data = util_base64_decode((const uint8_t*) str, len, &out_len); + + assert_int_equal(out_len, strlen(exp_str)); + assert_string_equal(out_data, exp_str); + + util_xfree((void**) &out_data); +} + +int main(int argc, char* argv[]) +{ + const struct CMUnitTest tests[] ={ + cmocka_unit_test_setup(test_base64_encode, setup), + cmocka_unit_test_setup(test_base64_decode, setup), + }; + + return cmocka_run_group_tests(tests, NULL, NULL); +} \ No newline at end of file