gd-tools/tests/tests_main.cpp

51 lines
1.9 KiB
C++
Raw Normal View History

2024-02-04 18:24:04 +00:00
#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);
}