From 7dd49c6293172b494c78918507242cdb55d35137 Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Sun, 21 Jan 2024 12:31:30 +0100 Subject: WIP --- utf/tst/test_utf16.cc | 81 ++++++++++++++++++++------------------------------- 1 file changed, 31 insertions(+), 50 deletions(-) (limited to 'utf/tst/test_utf16.cc') 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 #include 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({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({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({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({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({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({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({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({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 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 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({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(), 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({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({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({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({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({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(), 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({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({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({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({0x01, 0xD8, 0x01, 0xD8}), offset); EXPECT_EQ(utf::INVALID, ret); EXPECT_EQ(0, offset); } -- cgit v1.2.3-70-g09d2