Files
MapLibreParticleLab/test/style/expression/utf8_op_helpers.test.cpp
Bart Louwers 2a8ebc4906 core: rename mbgl directories to mln (#4511)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-08-22 20:50:14 +02:00

33 lines
1.5 KiB
C++

#include <mln/test/util.hpp>
#include <mln/style/expression/utf8_op_helpers.hpp>
using namespace mln::style::expression;
TEST(Utf8OpHelpers, unicodeLengthOnValidatedUtf8) {
EXPECT_EQ(unicodeLengthOnValidatedUtf8(""), 0);
EXPECT_EQ(unicodeLengthOnValidatedUtf8("Hello, world!"), 13);
EXPECT_EQ(unicodeLengthOnValidatedUtf8("aäü"), 3);
EXPECT_EQ(unicodeLengthOnValidatedUtf8("オオオ"), 3);
EXPECT_EQ(unicodeLengthOnValidatedUtf8("𝄆𝄆"), 2);
EXPECT_EQ(unicodeLengthOnValidatedUtf8("aöオ𝄆オöa"), 7);
}
TEST(Utf8OpHelpers, getUnicodeCharacterOffsetOnValidatedUtf8) {
// edge case: empty string
EXPECT_EQ(getUnicodeCharacterOffsetOnValidatedUtf8("", 0), 0);
std::string str = "aöオ𝄆オöa";
EXPECT_EQ(getUnicodeCharacterOffsetOnValidatedUtf8(str, 0), 0); // 'a'
EXPECT_EQ(getUnicodeCharacterOffsetOnValidatedUtf8(str, 1), 1); // 'ö'
EXPECT_EQ(getUnicodeCharacterOffsetOnValidatedUtf8(str, 2), 3); // 'オ'
EXPECT_EQ(getUnicodeCharacterOffsetOnValidatedUtf8(str, 3), 6); // '𝄆'
EXPECT_EQ(getUnicodeCharacterOffsetOnValidatedUtf8(str, 4), 10); // 'オ'
EXPECT_EQ(getUnicodeCharacterOffsetOnValidatedUtf8(str, 5), 13); // 'ö'
EXPECT_EQ(getUnicodeCharacterOffsetOnValidatedUtf8(str, 6), 15); // 'a'
// Test out of bounds character offset (should return the string length)
EXPECT_EQ(getUnicodeCharacterOffsetOnValidatedUtf8(str, 7), 16);
EXPECT_EQ(getUnicodeCharacterOffsetOnValidatedUtf8(str, 12), 16);
EXPECT_EQ(getUnicodeCharacterOffsetOnValidatedUtf8(str, 50000), 16);
}