test: add testbench for stl, windows and iconv encoding
This commit is contained in:
116
testbench/yycc/encoding/iconv.cpp
Normal file
116
testbench/yycc/encoding/iconv.cpp
Normal file
@ -0,0 +1,116 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <yycc.hpp>
|
||||
#include <yycc/encoding/iconv.hpp>
|
||||
#include "../../shared/literals.hpp"
|
||||
|
||||
#define ENC ::yycc::encoding::iconv
|
||||
|
||||
namespace yycctest::encoding::iconv {
|
||||
#if defined(YYCC_FEAT_ICONV)
|
||||
|
||||
static auto UTF_LITERALS = ::yyccshared::literals::UtfLiterals();
|
||||
static auto OTHER_LITERALS = ::yyccshared::literals::OtherLiterals();
|
||||
|
||||
TEST(EncodingIconv, CharToUtf8) {
|
||||
const auto& other_str_literals = OTHER_LITERALS.get_other_str_vec();
|
||||
const auto& u8str_literals = OTHER_LITERALS.get_u8str_vec();
|
||||
|
||||
for (size_t i = 0; i < OTHER_LITERALS.get_size(); ++i) {
|
||||
const auto& other_str_literal = other_str_literals[i];
|
||||
ENC::CharToUtf8 cv(other_str_literal.get_iconv_ident());
|
||||
|
||||
auto rv = cv.to_utf8(other_str_literal.get_other_str());
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u8str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingIconv, Utf8ToChar) {
|
||||
const auto& other_str_literals = OTHER_LITERALS.get_other_str_vec();
|
||||
const auto& u8str_literals = OTHER_LITERALS.get_u8str_vec();
|
||||
|
||||
for (size_t i = 0; i < OTHER_LITERALS.get_size(); ++i) {
|
||||
const auto& other_str_literal = other_str_literals[i];
|
||||
ENC::Utf8ToChar cv(other_str_literal.get_iconv_ident());
|
||||
|
||||
auto rv = cv.to_char(u8str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), other_str_literal.get_other_str());
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingIconv, Utf8ToWchar) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& wstr_literals = UTF_LITERALS.get_wstr_vec();
|
||||
|
||||
ENC::Utf8ToWchar cv;
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = cv.to_wchar(u8str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), wstr_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingIconv, WcharToUtf8) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& wstr_literals = UTF_LITERALS.get_wstr_vec();
|
||||
|
||||
ENC::WcharToUtf8 cv;
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = cv.to_utf8(wstr_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u8str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingIconv, Utf8ToUtf16) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& u16str_literals = UTF_LITERALS.get_u16str_vec();
|
||||
|
||||
ENC::Utf8ToUtf16 cv;
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = cv.to_utf16(u8str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u16str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingIconv, Utf16ToUtf8) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& u16str_literals = UTF_LITERALS.get_u16str_vec();
|
||||
|
||||
ENC::Utf16ToUtf8 cv;
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = cv.to_utf8(u16str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u8str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingIconv, Utf8ToUtf32) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& u32str_literals = UTF_LITERALS.get_u32str_vec();
|
||||
|
||||
ENC::Utf8ToUtf32 cv;
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = cv.to_utf32(u8str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u32str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingIconv, Utf32ToUtf8) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& u32str_literals = UTF_LITERALS.get_u32str_vec();
|
||||
|
||||
ENC::Utf32ToUtf8 cv;
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = cv.to_utf8(u32str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u8str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
}
|
56
testbench/yycc/encoding/stl.cpp
Normal file
56
testbench/yycc/encoding/stl.cpp
Normal file
@ -0,0 +1,56 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <yycc.hpp>
|
||||
#include <yycc/encoding/stl.hpp>
|
||||
#include "../../shared/literals.hpp"
|
||||
|
||||
#define ENC ::yycc::encoding::stl
|
||||
|
||||
namespace yycctest::encoding::stl {
|
||||
|
||||
static auto UTF_LITERALS = ::yyccshared::literals::UtfLiterals();
|
||||
|
||||
TEST(EncodingStl, Utf8ToUtf16) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& u16str_literals = UTF_LITERALS.get_u16str_vec();
|
||||
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = ENC::to_utf16(u8str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u16str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingStl, Utf16ToUtf8) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& u16str_literals = UTF_LITERALS.get_u16str_vec();
|
||||
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = ENC::to_utf8(u16str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u8str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingStl, Utf8ToUtf32) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& u32str_literals = UTF_LITERALS.get_u32str_vec();
|
||||
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = ENC::to_utf32(u8str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u32str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingStl, Utf32ToUtf8) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& u32str_literals = UTF_LITERALS.get_u32str_vec();
|
||||
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = ENC::to_utf8(u32str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u8str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
137
testbench/yycc/encoding/windows.cpp
Normal file
137
testbench/yycc/encoding/windows.cpp
Normal file
@ -0,0 +1,137 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <yycc.hpp>
|
||||
#include <yycc/encoding/windows.hpp>
|
||||
#include "../../shared/literals.hpp"
|
||||
|
||||
#define ENC ::yycc::encoding::windows
|
||||
|
||||
namespace yycctest::encoding::windows {
|
||||
#if defined(YYCC_OS_WINDOWS)
|
||||
|
||||
static auto UTF_LITERALS = ::yyccshared::literals::UtfLiterals();
|
||||
static auto OTHER_LITERALS = ::yyccshared::literals::OtherLiterals();
|
||||
|
||||
TEST(EncodingWindows, CharToWchar) {
|
||||
const auto& other_str_literals = OTHER_LITERALS.get_other_str_vec();
|
||||
const auto& wstr_literals = OTHER_LITERALS.get_wstr_vec();
|
||||
|
||||
for (size_t i = 0; i < OTHER_LITERALS.get_size(); ++i) {
|
||||
const auto& other_str_literal = other_str_literals[i];
|
||||
|
||||
auto rv = ENC::to_wchar(other_str_literal.get_other_str(), other_str_literal.get_windows_ident());
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), wstr_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingWindows, WcharToChar) {
|
||||
const auto& other_str_literals = OTHER_LITERALS.get_other_str_vec();
|
||||
const auto& wstr_literals = OTHER_LITERALS.get_wstr_vec();
|
||||
|
||||
for (size_t i = 0; i < OTHER_LITERALS.get_size(); ++i) {
|
||||
const auto& other_str_literal = other_str_literals[i];
|
||||
|
||||
auto rv = ENC::to_char(wstr_literals[i], other_str_literal.get_windows_ident());
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), other_str_literal.get_other_str());
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingWindows, CharToUtf8) {
|
||||
const auto& other_str_literals = OTHER_LITERALS.get_other_str_vec();
|
||||
const auto& u8str_literals = OTHER_LITERALS.get_u8str_vec();
|
||||
|
||||
for (size_t i = 0; i < OTHER_LITERALS.get_size(); ++i) {
|
||||
const auto& other_str_literal = other_str_literals[i];
|
||||
|
||||
auto rv = ENC::to_utf8(other_str_literal.get_other_str(), other_str_literal.get_windows_ident());
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u8str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingWindows, Utf8ToChar) {
|
||||
const auto& other_str_literals = OTHER_LITERALS.get_other_str_vec();
|
||||
const auto& u8str_literals = OTHER_LITERALS.get_u8str_vec();
|
||||
|
||||
for (size_t i = 0; i < OTHER_LITERALS.get_size(); ++i) {
|
||||
const auto& other_str_literal = other_str_literals[i];
|
||||
|
||||
auto rv = ENC::to_char(u8str_literals[i], other_str_literal.get_windows_ident());
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), other_str_literal.get_other_str());
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingWindows, Utf8ToWchar) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& wstr_literals = UTF_LITERALS.get_wstr_vec();
|
||||
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = ENC::to_wchar(u8str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), wstr_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingWindows, WcharToUtf8) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& wstr_literals = UTF_LITERALS.get_wstr_vec();
|
||||
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = ENC::to_utf8(wstr_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u8str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(YYCC_STL_MSSTL)
|
||||
|
||||
TEST(EncodingWindows, Utf8ToUtf16) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& u16str_literals = UTF_LITERALS.get_u16str_vec();
|
||||
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = ENC::to_utf16(u8str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u16str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingWindows, Utf16ToUtf8) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& u16str_literals = UTF_LITERALS.get_u16str_vec();
|
||||
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = ENC::to_utf8(u16str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u8str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingWindows, Utf8ToUtf32) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& u32str_literals = UTF_LITERALS.get_u32str_vec();
|
||||
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = ENC::to_utf32(u8str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u32str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(EncodingWindows, Utf32ToUtf8) {
|
||||
const auto& u8str_literals = UTF_LITERALS.get_u8str_vec();
|
||||
const auto& u32str_literals = UTF_LITERALS.get_u32str_vec();
|
||||
|
||||
for (size_t i = 0; i < UTF_LITERALS.get_size(); ++i) {
|
||||
auto rv = ENC::to_utf8(u32str_literals[i]);
|
||||
ASSERT_TRUE(rv.has_value());
|
||||
EXPECT_EQ(rv.value(), u8str_literals[i]);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
} // namespace yycctest::encoding::windows
|
Reference in New Issue
Block a user