/* * Copyright (c) 2021, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include static void compare_to_ascii(auto& old_function, auto& new_function) { i64 result1 = 0; i64 result2 = 0; for (u32 i = 0; i < 0x80; ++i) { EXPECT_EQ(result1 = old_function(i), result2 = new_function(i)); if (result1 != result2) dbgln("Function input value was {}.", i); } } TEST_CASE(to_unicode_lowercase) { compare_to_ascii(tolower, Unicode::to_unicode_lowercase); EXPECT_EQ(Unicode::to_unicode_lowercase(0x03c9u), 0x03c9u); // "ω" to "ω" EXPECT_EQ(Unicode::to_unicode_lowercase(0x03a9u), 0x03c9u); // "Ω" to "ω" // Code points encoded by ranges in UnicodeData.txt EXPECT_EQ(Unicode::to_unicode_lowercase(0x3400u), 0x3400u); EXPECT_EQ(Unicode::to_unicode_lowercase(0x3401u), 0x3401u); EXPECT_EQ(Unicode::to_unicode_lowercase(0x3402u), 0x3402u); EXPECT_EQ(Unicode::to_unicode_lowercase(0x4dbfu), 0x4dbfu); } TEST_CASE(to_unicode_uppercase) { compare_to_ascii(toupper, Unicode::to_unicode_uppercase); EXPECT_EQ(Unicode::to_unicode_uppercase(0x03c9u), 0x03a9u); // "ω" to "Ω" EXPECT_EQ(Unicode::to_unicode_uppercase(0x03a9u), 0x03a9u); // "Ω" to "Ω" // Code points encoded by ranges in UnicodeData.txt EXPECT_EQ(Unicode::to_unicode_uppercase(0x3400u), 0x3400u); EXPECT_EQ(Unicode::to_unicode_uppercase(0x3401u), 0x3401u); EXPECT_EQ(Unicode::to_unicode_uppercase(0x3402u), 0x3402u); EXPECT_EQ(Unicode::to_unicode_uppercase(0x4dbfu), 0x4dbfu); }