#include "kana_conv.h" #include "util.h" #include using SVec = std::vector; using namespace std::string_view_literals; TEST_CASE("Hiragana to katakana", "[hiragana_to_katakana]") { REQUIRE(hiragana_to_katakana("あいうえお") == "アイウエオ"); REQUIRE(hiragana_to_katakana("お前はもう死んでいる。") == "オ前ハモウ死ンデイル。"); REQUIRE(katakana_to_hiragana("イマリ") == "いまり"); REQUIRE(katakana_to_hiragana("ニャ〜") == "にゃ〜"); REQUIRE( katakana_to_hiragana("
オープンソース形態素解析エンジンです。Test 😀") == "
おーぷんそーす形態素解析えんじんです。Test 😀" ); } TEST_CASE("Trim string", "[strtrim]") { REQUIRE(strtrim(" あいうえお ") == "あいうえお"); } TEST_CASE("Iterate chars", "[iterate]") { auto const test_case = "あいうえおabcdeабвгд"sv; auto const ref_vec = SVec{ "あ", "い", "う", "え", "お", "a", "b", "c", "d", "e", "а", "б", "в", "г", "д" }; auto test_vec = SVec{}; std::ranges::copy(iter_unicode_chars(test_case), std::back_inserter(test_vec)); REQUIRE(test_vec == ref_vec); } TEST_CASE("half to full", "[convert]") { std::string from = "ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ヲ ン ァ ィ ゥ ェ ォ ッ ャ ュ ョ"; std::string const to = "ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ " "ラ リ ル レ ロ ワ ヲ ン ァ ィ ゥ ェ ォ ッ ャ ュ ョ"; half_to_full(from); REQUIRE(from == to); } TEST_CASE("JpSet", "[JpSet]") { JpSet set = { "キサマ", "きさま" }; REQUIRE(set.size() == 1); }