浏览代码

test: Add a test for os_get_path_extension

Norihiro Kamae 2 年之前
父节点
当前提交
7bd27b4da8
共有 2 个文件被更改,包括 61 次插入0 次删除
  1. 7 0
      test/cmocka/CMakeLists.txt
  2. 54 0
      test/cmocka/test_os_path.c

+ 7 - 0
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)

+ 54 - 0
test/cmocka/test_os_path.c

@@ -0,0 +1,54 @@
+#include <stdarg.h>
+#include <stddef.h>
+#include <setjmp.h>
+#include <cmocka.h>
+
+#include <util/platform.h>
+
+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);
+}