51 lines
1.9 KiB
C++
51 lines
1.9 KiB
C++
#include "kana_conv.h"
|
||
#include "util.h"
|
||
#include <catch2/catch_test_macros.hpp>
|
||
|
||
using SVec = std::vector<std::string_view>;
|
||
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("<div>オープンソース形態素解析エンジンです。Test 😀")
|
||
== "<div>おーぷんそーす形態素解析えんじんです。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);
|
||
}
|