From 7bd27b4da8eec2a0872d9cb86ef3e9f800a27a82 Mon Sep 17 00:00:00 2001 From: Norihiro Kamae Date: Sat, 18 Mar 2023 17:39:21 +0900 Subject: [PATCH] test: Add a test for os_get_path_extension --- test/cmocka/CMakeLists.txt | 7 +++++ test/cmocka/test_os_path.c | 54 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 test/cmocka/test_os_path.c diff --git a/test/cmocka/CMakeLists.txt b/test/cmocka/CMakeLists.txt index d31da02b3..8b6a6f115 100644 --- a/test/cmocka/CMakeLists.txt +++ b/test/cmocka/CMakeLists.txt @@ -21,3 +21,10 @@ target_include_directories(test_bitstream PRIVATE ${CMOCKA_INCLUDE_DIR}) target_link_libraries(test_bitstream PRIVATE OBS::libobs ${CMOCKA_LIBRARIES}) add_test(test_bitstream ${CMAKE_CURRENT_BINARY_DIR}/test_bitstream) + +# OS path test +add_executable(test_os_path test_os_path.c) +target_include_directories(test_os_path PRIVATE ${CMOCKA_INCLUDE_DIR}) +target_link_libraries(test_os_path PRIVATE OBS::libobs ${CMOCKA_LIBRARIES}) + +add_test(test_os_path ${CMAKE_CURRENT_BINARY_DIR}/test_os_path) diff --git a/test/cmocka/test_os_path.c b/test/cmocka/test_os_path.c new file mode 100644 index 000000000..5385f4632 --- /dev/null +++ b/test/cmocka/test_os_path.c @@ -0,0 +1,54 @@ +#include +#include +#include +#include + +#include + +struct testcase { + const char *path; + const char *ext; +}; + +static void run_testcases(struct testcase *testcases) +{ + for (size_t i = 0; testcases[i].path; i++) { + const char *path = testcases[i].path; + + const char *ext = os_get_path_extension(path); + + printf("path: '%s' ext: '%s'\n", path, ext); + if (testcases[i].ext) + assert_string_equal(ext, testcases[i].ext); + else + assert_ptr_equal(ext, testcases[i].ext); + } +} + +static void os_get_path_extension_test(void **state) +{ + UNUSED_PARAMETER(state); + + static struct testcase testcases[] = { + {"/home/user/a.txt", ".txt"}, + {"C:\\Users\\user\\Documents\\video.mp4", ".mp4"}, + {"./\\", NULL}, + {".\\/", NULL}, + {"/.\\", NULL}, + {"/\\.", "."}, + {"\\/.", "."}, + {"\\./", NULL}, + {"", NULL}, + {NULL, NULL}}; + + run_testcases(testcases); +} + +int main() +{ + const struct CMUnitTest tests[] = { + cmocka_unit_test(os_get_path_extension_test), + }; + + return cmocka_run_group_tests(tests, NULL, NULL); +}