Browse Source

Tests: Add Unicode tests for CharacterType block properties

thankyouverycool 3 years ago
parent
commit
5658524aa3
1 changed files with 37 additions and 0 deletions
  1. 37 0
      Tests/LibUnicode/TestUnicodeCharacterTypes.cpp

+ 37 - 0
Tests/LibUnicode/TestUnicodeCharacterTypes.cpp

@@ -579,6 +579,43 @@ TEST_CASE(script)
     }
 }
 
+TEST_CASE(block)
+{
+    auto block = [](StringView name) {
+        auto block = Unicode::block_from_string(name);
+        VERIFY(block.has_value());
+        return *block;
+    };
+
+    auto no_block = block("No_Block"sv);
+    auto block_nb = block("NB"sv);
+    EXPECT_EQ(no_block, block_nb);
+
+    auto block_basic_latin = block("Basic_Latin"sv);
+    auto block_ascii = block("ASCII"sv);
+    EXPECT_EQ(block_basic_latin, block_ascii);
+
+    auto block_greek_coptic = block("Greek_And_Coptic"sv);
+    auto block_greek = block("Greek"sv);
+    EXPECT_EQ(block_greek_coptic, block_greek);
+
+    auto block_variation = block("Variation_Selectors_Supplement"sv);
+    auto block_vs_sup = block("VS_Sup"sv);
+    EXPECT_EQ(block_variation, block_vs_sup);
+
+    for (u32 code_point = 0x0000; code_point <= 0x007F; ++code_point)
+        EXPECT(Unicode::code_point_has_block(code_point, block_basic_latin));
+
+    for (u32 code_point = 0xE0100; code_point <= 0xE01EF; ++code_point)
+        EXPECT(Unicode::code_point_has_block(code_point, block_variation));
+
+    for (u32 code_point = 0x0000; code_point <= 0x007F; ++code_point)
+        EXPECT_EQ("Basic Latin"sv, Unicode::code_point_block_display_name(code_point).value());
+
+    for (u32 code_point = 0x0370; code_point <= 0x03FF; ++code_point)
+        EXPECT_EQ("Greek and Coptic"sv, Unicode::code_point_block_display_name(code_point).value());
+}
+
 TEST_CASE(script_extension)
 {
     auto script = [](StringView name) {