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_utf32.cc | 85 +++++++++++++++++++++++---------------------------- 1 file changed, 39 insertions(+), 46 deletions(-) (limited to 'utf/tst/test_utf32.cc') diff --git a/utf/tst/test_utf32.cc b/utf/tst/test_utf32.cc index 796b4cd..447b541 100644 --- a/utf/tst/test_utf32.cc +++ b/utf/tst/test_utf32.cc @@ -2,144 +2,137 @@ #include "utf_error.hh" +#include #include TEST(utf32be, sanity) { - std::string_view str("\x00\x00\x00\x24", 4); size_t offset = 0; - auto ret = utf::read32be(str, offset); + auto ret = utf::read32be( + std::array({0x00, 0x00, 0x00, 0x24}), offset); EXPECT_EQ('$', ret); EXPECT_EQ(4, offset); - str = std::string_view("\x00\x00\x20\xAC", 4); offset = 0; - ret = utf::read32be(str, offset); + ret = utf::read32be( + std::array({0x00, 0x00, 0x20, 0xAC}), offset); EXPECT_EQ(0x20AC, ret); EXPECT_EQ(4, offset); - str = std::string_view("\x00\x01\x04\x37", 4); offset = 0; - ret = utf::read32be(str, offset); + ret = utf::read32be( + std::array({0x00, 0x01, 0x04, 0x37}), offset); EXPECT_EQ(0x10437, ret); EXPECT_EQ(4, offset); } TEST(utf32le, sanity) { - std::string_view str("\x24\x00\x00\x00", 4); size_t offset = 0; - auto ret = utf::read32le(str, offset); + auto ret = utf::read32le( + std::array({0x24, 0x00, 0x00, 0x00}), offset); EXPECT_EQ('$', ret); EXPECT_EQ(4, offset); - str = std::string_view("\xAC\x20\x00\x00", 4); offset = 0; - ret = utf::read32le(str, offset); + ret = utf::read32le( + std::array({0xAC, 0x20, 0x00, 0x00}), offset); EXPECT_EQ(0x20AC, ret); EXPECT_EQ(4, offset); - str = std::string_view("\x37\x04\x01\x00", 4); offset = 0; - ret = utf::read32le(str, offset); + ret = utf::read32le( + std::array({0x37, 0x04, 0x01, 0x00}), offset); EXPECT_EQ(0x10437, ret); EXPECT_EQ(4, offset); } TEST(utf32be, invalid) { - std::string_view str("\xFF\xFF\xFF\xFF"); size_t offset = 0; - auto ret = utf::read32be(str, offset); + auto ret = utf::read32be( + std::array({0xFF, 0xFF, 0xFF, 0xFF}), offset); EXPECT_EQ(utf::INVALID, ret); EXPECT_EQ(0, offset); - str = std::string_view("\x00\x00\xD8\x00", 4); offset = 0; - ret = utf::read32be(str, offset); + ret = utf::read32be( + std::array({0x00, 0x00, 0xD8, 0x00}), offset); EXPECT_EQ(utf::INVALID, ret); EXPECT_EQ(0, offset); - str = ""; offset = 0; - ret = utf::read32be(str, offset); + ret = utf::read32be(std::array({}), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = std::string_view("\x00", 1); offset = 0; - ret = utf::read32be(str, offset); + ret = utf::read32be(std::array({0x00}), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = std::string_view("\x00\x00", 2); offset = 0; - ret = utf::read32be(str, offset); + ret = utf::read32be(std::array({0x00, 0x00}), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = std::string_view("\x00\x00\x00", 3); offset = 0; - ret = utf::read32be(str, offset); + ret = utf::read32be(std::array({0x00, 0x00, 0x00}), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); } TEST(utf32le, invalid) { - std::string_view str("\xFF\xFF\xFF\xFF"); size_t offset = 0; - auto ret = utf::read32le(str, offset); + auto ret = utf::read32le( + std::array({0xFF, 0xFF, 0xFF, 0xFF}), offset); EXPECT_EQ(utf::INVALID, ret); EXPECT_EQ(0, offset); - str = std::string_view("\x00\xD8\x00\x00", 4); offset = 0; - ret = utf::read32le(str, offset); + ret = utf::read32le( + std::array({0x00, 0xD8, 0x00, 0x00}), offset); EXPECT_EQ(utf::INVALID, ret); EXPECT_EQ(0, offset); - str = ""; offset = 0; - ret = utf::read32le(str, offset); + ret = utf::read32le(std::array(), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = std::string_view("\x00", 1); offset = 0; - ret = utf::read32le(str, offset); + ret = utf::read32le(std::array({0x00}), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = std::string_view("\x00\x00", 2); offset = 0; - ret = utf::read32le(str, offset); + ret = utf::read32le(std::array({0x00, 0x00}), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); - str = std::string_view("\x00\x00\x00", 3); offset = 0; - ret = utf::read32le(str, offset); + ret = utf::read32le(std::array({0x00, 0x00, 0x00}), offset); EXPECT_EQ(utf::NEED_MORE, ret); EXPECT_EQ(0, offset); } TEST(utf32be, bom) { - std::string_view str("\x00\x00\xFF\xFE\x00\x00\x20\xAC", 8); + std::array data({0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x20, 0xAC}); size_t offset = 0; - auto ret = utf::read32be(str, offset); + auto ret = utf::read32be(data, offset); EXPECT_EQ(0xFFFE, ret); - ret = utf::read32be(str, offset); + ret = utf::read32be(data, offset); EXPECT_EQ(0x20AC, ret); - ret = utf::read32be(str, offset); + ret = utf::read32be(data, offset); EXPECT_EQ(utf::NEED_MORE, ret); - EXPECT_EQ(str.size(), offset); + EXPECT_EQ(data.size(), offset); } TEST(utf32le, bom) { - std::string_view str("\xFE\xFF\x00\x00\xAC\x20\x00\x00", 8); + std::array data({0xFE, 0xFF, 0x00, 0x00, 0xAC, 0x20, 0x00, 0x00}); size_t offset = 0; - auto ret = utf::read32le(str, offset); + auto ret = utf::read32le(data, offset); EXPECT_EQ(0xFFFE, ret); - ret = utf::read32le(str, offset); + ret = utf::read32le(data, offset); EXPECT_EQ(0x20AC, ret); - ret = utf::read32le(str, offset); + ret = utf::read32le(data, offset); EXPECT_EQ(utf::NEED_MORE, ret); - EXPECT_EQ(str.size(), offset); + EXPECT_EQ(data.size(), offset); } -- cgit v1.2.3-70-g09d2