summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDan Goodliffe <dan.goodliffe@octal.co.uk>2022-08-22 14:51:38 +0100
committerDan Goodliffe <dan.goodliffe@octal.co.uk>2022-08-22 14:51:38 +0100
commitf9e95c2b7d2c50f6d12b9a67ce4ed897e032a300 (patch)
treefbe8e0802a988e2866f498051b4876a8e7dfc3dd /test
parentEnable all cppchecks, no further fixes needed (diff)
downloadilt-f9e95c2b7d2c50f6d12b9a67ce4ed897e032a300.tar.bz2
ilt-f9e95c2b7d2c50f6d12b9a67ce4ed897e032a300.tar.xz
ilt-f9e95c2b7d2c50f6d12b9a67ce4ed897e032a300.zip
Create a string_view like thing for utf8 strings
utf8_string_view provides length and character iteration over a std::string_view containing utf8 data.
Diffstat (limited to 'test')
-rw-r--r--test/test-text.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/test/test-text.cpp b/test/test-text.cpp
index 6762b09..0df6885 100644
--- a/test/test-text.cpp
+++ b/test/test-text.cpp
@@ -9,8 +9,21 @@
#include <glm/glm.hpp>
#include <span>
#include <ui/font.h>
+#include <unicode.h>
#include <vector>
+BOOST_AUTO_TEST_CASE(utf8_string_view_iter)
+{
+ static constexpr utf8_string_view text {"Some UTF-8 €£²¹ text."};
+ static constexpr std::array codepoints {
+ 83, 111, 109, 101, 32, 85, 84, 70, 45, 56, 32, 8364, 163, 178, 185, 32, 116, 101, 120, 116, 46};
+ BOOST_CHECK_EQUAL(std::count_if(text.begin(), text.end(), isspace), 3);
+ BOOST_CHECK_EQUAL(text.length(), 21);
+ std::vector<uint32_t> codepointsOut;
+ std::copy(text.begin(), text.end(), std::back_inserter(codepointsOut));
+ BOOST_CHECK_EQUAL_COLLECTIONS(codepoints.begin(), codepoints.end(), codepointsOut.begin(), codepointsOut.end());
+}
+
struct FontTest : public Font {
FontTest() : Font {"/usr/share/fonts/corefonts/arial.ttf", 48} { }
};