diff options
Diffstat (limited to 'utf/tst/test_utf16.cc')
| -rw-r--r-- | utf/tst/test_utf16.cc | 81 |
1 files changed, 31 insertions, 50 deletions
diff --git a/utf/tst/test_utf16.cc b/utf/tst/test_utf16.cc index c17982e..3b3c03c 100644 --- a/utf/tst/test_utf16.cc +++ b/utf/tst/test_utf16.cc @@ -2,156 +2,137 @@ #include "utf_error.hh" +#include <array> #include <gtest/gtest.h> TEST(utf16be, sanity) { - std::string_view str("\x00\x24", 2); size_t offset = 0; - auto ret = utf::read16be(str, offset); + auto ret = utf::read16be(std::array<uint8_t, 2>({0x00, 0x24}), offset); EXPECT_EQ('$', ret); EXPECT_EQ(2, offset); - str = "\x20\xAC"; offset = 0; - ret = utf::read16be(str, offset); + ret = utf::read16be(std::array<uint8_t, 2>({0x20, 0xAC}), offset); EXPECT_EQ(0x20AC, ret); EXPECT_EQ(2, offset); - str = "\xD8\x01\xDC\x37"; offset = 0; - ret = utf::read16be(str, offset); + ret = utf::read16be(std::array<uint8_t, 4>({0xD8, 0x01, 0xDC, 0x37}), offset); EXPECT_EQ(0x10437, ret); EXPECT_EQ(4, offset); - str = "\xD8\x52\xDF\x62"; offset = 0; - ret = utf::read16be(str, offset); + ret = utf::read16be(std::array<uint8_t, 4>({0xD8, 0x52, 0xDF, 0x62}), offset); EXPECT_EQ(0x24B62, ret); EXPECT_EQ(4, offset); } TEST(utf16le, sanity) { - std::string_view str("\x24\x00", 2); size_t offset = 0; - auto ret = utf::read16le(str, offset); + auto ret = utf::read16le(std::array<uint8_t, 2>({0x24, 0x00}), offset); EXPECT_EQ('$', ret); EXPECT_EQ(2, offset); - str = "\xAC\x20"; offset = 0; - ret = utf::read16le(str, offset); + ret = utf::read16le(std::array<uint8_t, 2>({0xAC, 0x20}), offset); EXPECT_EQ(0x20AC, ret); EXPECT_EQ(2, offset); - str = "\x01\xD8\x37\xDC"; offset = 0; - ret = utf::read16le(str, offset); + ret = utf::read16le(std::array<uint8_t, 4>({0x01, 0xD8, 0x37, 0xDC}), offset); EXPECT_EQ(0x10437, ret); EXPECT_EQ(4, offset); - str = "\x52\xD8\x62\xDF"; offset = 0; - ret = utf::read16le(str, offset); + ret = utf::read16le(std::array<uint8_t, 4>({0x52, 0xD8, 0x62, 0xDF}), offset); EXPECT_EQ(0x24B62, ret); EXPECT_EQ(4, offset); } TEST(utf16be, bom) { - std::string_view str("\xFE\xFF\x20\xAC"); + std::array<uint8_t, 4> data({0xFE, 0xFF, 0x20, 0xAC}); size_t offset = 0; - auto ret = utf::read16be(str, offset); + auto ret = utf::read16be(data, offset); EXPECT_EQ(0xFEFF, ret); - ret = utf::read16be(str, offset); + ret = utf::read16be(data, offset); EXPECT_EQ(0x20AC, ret); - ret = utf::read16be(str, offset); + ret = utf::read16be(data, offset); EXPECT_EQ(utf::NEED_MORE, ret); - EXPECT_EQ(str.size(), offset); + EXPECT_EQ(data.size(), offset); } TEST(utf16le, bom) { - std::string_view str("\xFF\xFE\xAC\x20"); + std::array<uint8_t, 4> data({0xFF, 0xFE, 0xAC, 0x20}); size_t offset = 0; - auto ret = utf::read16le(str, offset); + auto ret = utf::read16le(data, offset); EXPECT_EQ(0xFEFF, ret); - ret = utf::read16le(str, offset); + ret = utf::read16le(data, offset); EXPECT_EQ(0x20AC, ret); - ret = utf::read16le(str, offset); + ret = utf::read16le(data, offset); EXPECT_EQ(utf::NEED_MORE, ret); - EXPECT_EQ(str.size(), offset); + EXPECT_EQ(data.size(), offset); } TEST(utf16be, invalid) { - std::string_view str("\xD8"); size_t offset = 0; - auto ret = utf::read16be(str, offset); + auto ret = utf::read16be(std::array<uint8_t, 1>({0xD8}), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = ""; offset = 0; - ret = utf::read16be(str, offset); + ret = utf::read16be(std::array<uint8_t, 0>(), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = "\xD8\x01"; offset = 0; - ret = utf::read16be(str, offset); + ret = utf::read16be(std::array<uint8_t, 2>({0xD8, 0x01}), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = "\xD8\x01\xDC"; offset = 0; - ret = utf::read16be(str, offset); + ret = utf::read16be(std::array<uint8_t, 3>({0xD8, 0x01, 0xDC}), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = "\xDC\x37\xD8\x01"; offset = 0; - ret = utf::read16be(str, offset); + ret = utf::read16be(std::array<uint8_t, 4>({0xDC, 0x37, 0xD8, 0x01}), offset); EXPECT_EQ(utf::INVALID, ret); EXPECT_EQ(0, offset); - str = "\xD8\x01\xD8\x01"; offset = 0; - ret = utf::read16be(str, offset); + ret = utf::read16be(std::array<uint8_t, 4>({0xD8, 0x01, 0xD8, 0x01}), offset); EXPECT_EQ(utf::INVALID, ret); EXPECT_EQ(0, offset); } TEST(utf16le, invalid) { - std::string_view str("\x01"); size_t offset = 0; - auto ret = utf::read16le(str, offset); + auto ret = utf::read16le(std::array<uint8_t, 1>({0x01}), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = ""; offset = 0; - ret = utf::read16le(str, offset); + ret = utf::read16le(std::array<uint8_t, 0>(), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = "\x01\xD8"; offset = 0; - ret = utf::read16le(str, offset); + ret = utf::read16le(std::array<uint8_t, 2>({0x01, 0xD8}), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = "\x01\xD8\x37"; offset = 0; - ret = utf::read16le(str, offset); + ret = utf::read16le(std::array<uint8_t, 3>({0x01, 0xD8, 0x37}), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = "\x37\xDC\x01\xD8"; offset = 0; - ret = utf::read16le(str, offset); + ret = utf::read16le(std::array<uint8_t, 4>({0x37, 0xDC, 0x01, 0xD8}), offset); EXPECT_EQ(utf::INVALID, ret); EXPECT_EQ(0, offset); - str = "\x01\xD8\x01\xD8"; offset = 0; - ret = utf::read16le(str, offset); + ret = utf::read16le(std::array<uint8_t, 4>({0x01, 0xD8, 0x01, 0xD8}), offset); EXPECT_EQ(utf::INVALID, ret); EXPECT_EQ(0, offset); } |
