aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt8
-rw-r--r--test/win/CMakeLists.txt6
-rw-r--r--test/win/string.cpp30
3 files changed, 44 insertions, 0 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644
index 00000000..d41e3467
--- /dev/null
+++ b/test/CMakeLists.txt
@@ -0,0 +1,8 @@
+find_package(GTest CONFIG REQUIRED)
+
+include(GoogleTest)
+
+add_subdirectory(win)
+
+add_library(cru_test_base INTERFACE)
+target_link_libraries(cru_test_base INTERFACE GTest::gtest GTest::gtest_main)
diff --git a/test/win/CMakeLists.txt b/test/win/CMakeLists.txt
new file mode 100644
index 00000000..343b40fe
--- /dev/null
+++ b/test/win/CMakeLists.txt
@@ -0,0 +1,6 @@
+add_executable(cru_test_win_base
+ string.cpp
+)
+target_link_libraries(cru_test_win_base PRIVATE cru_win_base cru_test_base)
+
+gtest_discover_tests(cru_test_win_base)
diff --git a/test/win/string.cpp b/test/win/string.cpp
new file mode 100644
index 00000000..4e25f8c0
--- /dev/null
+++ b/test/win/string.cpp
@@ -0,0 +1,30 @@
+#include "cru/win/string.hpp"
+
+#include <gtest/gtest.h>
+
+using cru::platform::win::k_code_point_end;
+
+TEST(WinString, Utf8ShouldWork) {
+ using cru::platform::win::Utf8Iterator;
+ std::string_view text = "aπ你🤣!";
+ Utf8Iterator i{text};
+ ASSERT_EQ(i.Next(), 0x0061);
+ ASSERT_EQ(i.Next(), 0x03C0);
+ ASSERT_EQ(i.Next(), 0x4F60);
+ ASSERT_EQ(i.Next(), 0x1F923);
+ ASSERT_EQ(i.Next(), 0x0021);
+ ASSERT_EQ(i.Next(), k_code_point_end);
+}
+
+TEST(WinString, Utf16ShouldWork) {
+ using cru::platform::win::Utf16Iterator;
+ std::wstring_view text = L"aπ你🤣!";
+ Utf16Iterator i{text};
+ ASSERT_EQ(i.Next(), 0x0061);
+ ASSERT_EQ(i.Next(), 0x03C0);
+ ASSERT_EQ(i.Next(), 0x4F60);
+ ASSERT_EQ(i.Next(), 0x1F923);
+ ASSERT_EQ(i.Next(), 0x0021);
+ ASSERT_EQ(i.Next(), k_code_point_end);
+}
+