summaryrefslogtreecommitdiff
path: root/tests/modules/utf8/test.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2026-01-20 23:38:02 +0800
committerruki <[email protected]>2026-01-20 23:38:02 +0800
commita9d5fe27bb69cc35022e9c8b80ac9d5f89f570c0 (patch)
tree7d48629cd895877d91fdab0e9648d03419ca51f1 /tests/modules/utf8/test.lua
parent92423451b623e79ac464d388bfb1bfed2780b792 (diff)
add utf8.sub and lastof
Diffstat (limited to 'tests/modules/utf8/test.lua')
-rw-r--r--tests/modules/utf8/test.lua44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/modules/utf8/test.lua b/tests/modules/utf8/test.lua
index f342c8402..51da441d9 100644
--- a/tests/modules/utf8/test.lua
+++ b/tests/modules/utf8/test.lua
@@ -62,3 +62,47 @@ end
function test_charpattern(t)
t:require(utf8.charpattern)
end
+
+function test_sub(t)
+ t:are_equal(utf8.sub("ABC", 1, 1), "A")
+ t:are_equal(utf8.sub("ABC", 2, 2), "B")
+ t:are_equal(utf8.sub("ABC", 1, 2), "AB")
+ t:are_equal(utf8.sub("你好", 1, 1), "你")
+ t:are_equal(utf8.sub("你好", 2, 2), "好")
+ t:are_equal(utf8.sub("你好", 1, 2), "你好")
+
+ -- mixed
+ t:are_equal(utf8.sub("A你好B", 2, 3), "你好")
+ t:are_equal(utf8.sub("A你好B", 1, 3), "A你好")
+ t:are_equal(utf8.sub("A你好B", 2, 4), "你好B")
+
+ -- negative
+ t:are_equal(utf8.sub("ABC", -1), "C")
+ t:are_equal(utf8.sub("ABC", -2), "BC")
+ t:are_equal(utf8.sub("你好", -1), "好")
+ t:are_equal(utf8.sub("你好", -2), "你好")
+ t:are_equal(utf8.sub("你好", 1, -1), "你好")
+ t:are_equal(utf8.sub("你好", 1, -2), "你")
+
+ -- out of bounds
+ t:are_equal(utf8.sub("ABC", 4), "")
+ t:are_equal(utf8.sub("ABC", 1, 5), "ABC")
+ t:are_equal(utf8.sub("ABC", 0), "ABC")
+ t:are_equal(utf8.sub("ABC", -10), "ABC")
+end
+
+function test_lastof(t)
+ t:are_equal(utf8.lastof("ABC", "A"), 1)
+ t:are_equal(utf8.lastof("ABC", "B"), 2)
+ t:are_equal(utf8.lastof("ABC", "C"), 3)
+ t:are_equal(utf8.lastof("ABCA", "A"), 4)
+
+ t:are_equal(utf8.lastof("你好", "你"), 1)
+ t:are_equal(utf8.lastof("你好", "好"), 2)
+ t:are_equal(utf8.lastof("你好你", "你"), 3)
+
+ t:are_equal(utf8.lastof("A你好A", "A"), 4)
+ t:are_equal(utf8.lastof("A你好A", "好"), 3)
+
+ t:are_equal(utf8.lastof("ABC", "D"), nil)
+end