gd-tools/tests/tests_main.cpp
2024-02-04 14:24:04 -04:00

51 lines
1.9 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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);
}