diff options
| author | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-23 00:50:18 +0000 |
|---|---|---|
| committer | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-23 00:50:18 +0000 |
| commit | 8cb7089b2eb09d40d9497cea40d088d94676a8c6 (patch) | |
| tree | d4a2a33fe35807abc0cdeeb0be93edcbe75a4996 /tests/std/test_string_utf8.zc | |
| parent | 3a4a72a38675893c3a1854d05c72b957a6bd9364 (diff) | |
More docs, check 'docs/std'.
Diffstat (limited to 'tests/std/test_string_utf8.zc')
| -rw-r--r-- | tests/std/test_string_utf8.zc | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/std/test_string_utf8.zc b/tests/std/test_string_utf8.zc new file mode 100644 index 0000000..a4d2095 --- /dev/null +++ b/tests/std/test_string_utf8.zc @@ -0,0 +1,56 @@ +import "std/string.zc" + +test "utf8_basic_ascii" { + var s = String::from("Hello"); + + if (s.utf8_len() != 5) { + println "ASCII Len failed"; + exit(1); + } + + var h = s.utf8_at(0); + var t1 = String::from("H"); + if (!h.eq(&t1)) { + println "ASCII At failed"; + exit(1); + } + + var sub = s.utf8_substr(1, 4); + var t2 = String::from("ello"); + if (!sub.eq(&t2)) { + println "ASCII Substr failed"; + exit(1); + } +} + +test "utf8_multibyte" { + // "Hey 🌎!" - "Hey " (4) + 🌎 (1) + "!" (1) = 6 chars + // Bytes: H(1) e(1) y(1) (1) 🌎(4) !(1) = 9 bytes? + // 🌎 is approx F0 9F 8C 8D (4 bytes) + + var s = String::from("Hey 🌎!"); + + if (s.length() != 9) { + println "Byte length unexpected: {s.length()}"; + exit(1); + } + + if (s.utf8_len() != 6) { + println "UTF8 Len failed. Got {s.utf8_len()}, expected 6"; + exit(1); + } + + var globe = s.utf8_at(4); + var t3 = String::from("🌎"); + if (!globe.eq(&t3)) { + println "UTF8 At failed"; + exit(1); + } + + var sub = s.utf8_substr(4, 2); // "🌎!" + var t4 = String::from("🌎!"); + if (!sub.eq(&t4)) { + println "UTF8 Substr failed"; + exit(1); + } +}
\ No newline at end of file |
