LSL-PyOptimizer/unit_tests/expr.suite/string-funcs.lsl
Sei Lisa 0b7d04e5ff Deal with changes in llChar, strengthen some tests
Previously, llChar formed an UTF-8-1993 string with the given code and converted that, resulting in multiple question marks when the conversion to Unicode forced by Mono caused errors in multiple characters. They have changed the implementation and now it also considers U+FFFF invalid, and only returns one U+FFFD character if the input is invalid, and LSO behaves the same as Mono (no UTF-8-1993 anymore).

We've also detected problems with Windows (who else would it be) for the Unicode "astral" planes (planes beyond the Basic Multilingual Plane), so now there are new tests that include characters > U+FFFF. And since some builds of Python 2 use UTF-16 internally, we also check llSubString and friends with positions after an astral plane character. This is currently failing under Windows, as there are numerous encoding and line ending problems happening on that OS, especially with Python 3.
2022-12-08 13:22:54 +01:00

200 lines
6.9 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[ llInsertString("", -3, "abc")
, llInsertString("", -1, "abc")
, llInsertString("", 0, "abc")
, llInsertString("", 1, "abc")
, llInsertString("", 3, "abc")
, llInsertString("xy", -3, "abc")
, llInsertString("xy", -1, "abc")
, llInsertString("xy", 0, "abc")
, llInsertString("xy", 1, "abc")
, llInsertString("xy", 2, "abc")
, llInsertString("xy", 3, "abc")
, llToUpper("AZaz𐐀𐐧𐐨𐑏ßςσႠჅაჵ")
, llToLower("AZaz𐐀𐐧𐐨𐑏ßςσႠჅაჵ")
, llToUpper("τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός")
, llToLower("ΤΆΧΙΣΤΗ ΑΛΏΠΗΞ ΒΑΦΉΣ ΨΗΜΈΝΗ ΓΗ, ΔΡΑΣΚΕΛΊΖΕΙ ΥΠΈΡ ΝΩΘΡΟΎ ΚΥΝΌΣ")
, llDeleteSubString("abcd", -9, -9)
, llDeleteSubString("abcd", -9, -5)
, llDeleteSubString("abcd", -9, -4)
, llDeleteSubString("abcd", -9, -3)
, llDeleteSubString("abcd", -9, -2)
, llDeleteSubString("abcd", -9, -1)
, llDeleteSubString("abcd", -9, 0)
, llDeleteSubString("abcd", -9, 3)
, llDeleteSubString("abcd", -9, 4)
, llDeleteSubString("abcd", -9, 7)
, llDeleteSubString("abcd", -9, 8)
, llDeleteSubString("abcd", -9, 9)
, llDeleteSubString("abcd", -5, -9)
, llDeleteSubString("abcd", -5, -5)
, llDeleteSubString("abcd", -5, -4)
, llDeleteSubString("abcd", -5, -3)
, llDeleteSubString("abcd", -5, -1)
, llDeleteSubString("abcd", -5, 0)
, llDeleteSubString("abcd", -5, 3)
, llDeleteSubString("abcd", -5, 4)
, llDeleteSubString("abcd", -5, 7)
, llDeleteSubString("abcd", -5, 8)
, llDeleteSubString("abcd", -4, -5)
, llDeleteSubString("abcd", -4, -4)
, llDeleteSubString("abcd", -4, -1)
, llDeleteSubString("abcd", -4, 0)
, llDeleteSubString("abcd", -4, 3)
, llDeleteSubString("abcd", -4, 4)
, llDeleteSubString("abcd", -4, 8)
, llDeleteSubString("abcd", -2, -5)
, llDeleteSubString("abcd", -2, -4)
, llDeleteSubString("abcd", -2, -3)
, llDeleteSubString("abcd", -2, -2)
, llDeleteSubString("abcd", -2, -1)
, llDeleteSubString("abcd", -2, 0)
, llDeleteSubString("abcd", -2, 1)
, llDeleteSubString("abcd", -2, 2)
, llDeleteSubString("abcd", -2, 3)
, llDeleteSubString("abcd", -2, 4)
, llDeleteSubString("abcd", -2, 5)
, llDeleteSubString("abcd", -1, -5)
, llDeleteSubString("abcd", -1, -4)
, llDeleteSubString("abcd", -1, -3)
, llDeleteSubString("abcd", -1, -2)
, llDeleteSubString("abcd", -1, -1)
, llDeleteSubString("abcd", -1, 0)
, llDeleteSubString("abcd", -1, 1)
, llDeleteSubString("abcd", -1, 2)
, llDeleteSubString("abcd", -1, 3)
, llDeleteSubString("abcd", -1, 4)
, llDeleteSubString("abcd", -1, 5)
, llDeleteSubString("abcd", 0, -9)
, llDeleteSubString("abcd", 0, -5)
, llDeleteSubString("abcd", 0, -4)
, llDeleteSubString("abcd", 0, -1)
, llDeleteSubString("abcd", 0, 0)
, llDeleteSubString("abcd", 0, 3)
, llDeleteSubString("abcd", 0, 5)
, llDeleteSubString("abcd", 3, -5)
, llDeleteSubString("abcd", 3, -4)
, llDeleteSubString("abcd", 3, -1)
, llDeleteSubString("abcd", 3, 0)
, llDeleteSubString("abcd", 3, 2)
, llDeleteSubString("abcd", 3, 3)
, llDeleteSubString("abcd", 3, 4)
, llDeleteSubString("abcd", 3, 5)
, llDeleteSubString("abcd", 4, -9)
, llDeleteSubString("abcd", 4, -5)
, llDeleteSubString("abcd", 4, -4)
, llDeleteSubString("abcd", 4, -1)
, llDeleteSubString("abcd", 4, 0)
, llDeleteSubString("abcd", 4, 2)
, llDeleteSubString("abcd", 4, 3)
, llDeleteSubString("abcd", 4, 4)
, llDeleteSubString("abcd", 4, 5)
, llDeleteSubString("abcd", 9, -9)
, llDeleteSubString("abcd", 9, -5)
, llDeleteSubString("abcd", 9, -4)
, llDeleteSubString("abcd", 9, -1)
, llDeleteSubString("abcd", 9, 0)
, llDeleteSubString("abcd", 9, 2)
, llDeleteSubString("abcd", 9, 3)
, llDeleteSubString("abcd", 9, 4)
, llDeleteSubString("abcd", 9, 5)
, llDeleteSubString("", 0, -1)
, llGetSubString("abcd", -9, -9)
, llGetSubString("abcd", -9, -5)
, llGetSubString("abcd", -9, -4)
, llGetSubString("abcd", -9, -3)
, llGetSubString("abcd", -9, -2)
, llGetSubString("abcd", -9, -1)
, llGetSubString("abcd", -9, 0)
, llGetSubString("abcd", -9, 3)
, llGetSubString("abcd", -9, 4)
, llGetSubString("abcd", -9, 7)
, llGetSubString("abcd", -9, 8)
, llGetSubString("abcd", -9, 9)
, llGetSubString("abcd", -5, -9)
, llGetSubString("abcd", -5, -5)
, llGetSubString("abcd", -5, -4)
, llGetSubString("abcd", -5, -3)
, llGetSubString("abcd", -5, -1)
, llGetSubString("abcd", -5, 0)
, llGetSubString("abcd", -5, 3)
, llGetSubString("abcd", -5, 4)
, llGetSubString("abcd", -5, 7)
, llGetSubString("abcd", -5, 8)
, llGetSubString("abcd", -4, -5)
, llGetSubString("abcd", -4, -4)
, llGetSubString("abcd", -4, -1)
, llGetSubString("abcd", -4, 0)
, llGetSubString("abcd", -4, 3)
, llGetSubString("abcd", -4, 4)
, llGetSubString("abcd", -4, 8)
, llGetSubString("abcd", -2, -5)
, llGetSubString("abcd", -2, -4)
, llGetSubString("abcd", -2, -3)
, llGetSubString("abcd", -2, -2)
, llGetSubString("abcd", -2, -1)
, llGetSubString("abcd", -2, 0)
, llGetSubString("abcd", -2, 1)
, llGetSubString("abcd", -2, 2)
, llGetSubString("abcd", -2, 3)
, llGetSubString("abcd", -2, 4)
, llGetSubString("abcd", -2, 5)
, llGetSubString("abcd", -1, -5)
, llGetSubString("abcd", -1, -4)
, llGetSubString("abcd", -1, -3)
, llGetSubString("abcd", -1, -2)
, llGetSubString("abcd", -1, -1)
, llGetSubString("abcd", -1, 0)
, llGetSubString("abcd", -1, 1)
, llGetSubString("abcd", -1, 2)
, llGetSubString("abcd", -1, 3)
, llGetSubString("abcd", -1, 4)
, llGetSubString("abcd", -1, 5)
, llGetSubString("abcd", 0, -9)
, llGetSubString("abcd", 0, -5)
, llGetSubString("abcd", 0, -4)
, llGetSubString("abcd", 0, -1)
, llGetSubString("abcd", 0, 0)
, llGetSubString("abcd", 0, 3)
, llGetSubString("abcd", 0, 5)
, llGetSubString("abcd", 3, -5)
, llGetSubString("abcd", 3, -4)
, llGetSubString("abcd", 3, -1)
, llGetSubString("abcd", 3, 0)
, llGetSubString("abcd", 3, 2)
, llGetSubString("abcd", 3, 3)
, llGetSubString("abcd", 3, 4)
, llGetSubString("abcd", 3, 5)
, llGetSubString("abcd", 4, -9)
, llGetSubString("abcd", 4, -5)
, llGetSubString("abcd", 4, -4)
, llGetSubString("abcd", 4, -1)
, llGetSubString("abcd", 4, 0)
, llGetSubString("abcd", 4, 2)
, llGetSubString("abcd", 4, 3)
, llGetSubString("abcd", 4, 4)
, llGetSubString("abcd", 4, 5)
, llGetSubString("abcd", 9, -9)
, llGetSubString("abcd", 9, -5)
, llGetSubString("abcd", 9, -4)
, llGetSubString("abcd", 9, -1)
, llGetSubString("abcd", 9, 0)
, llGetSubString("abcd", 9, 2)
, llGetSubString("abcd", 9, 3)
, llGetSubString("abcd", 9, 4)
, llGetSubString("abcd", 9, 5)
, llGetSubString("😀bcd", 0, 0)
, llGetSubString("😀bcd", 1, 1)
, llGetSubString("😀bcd", 2, 2)
, llGetSubString("😀bcd", 3, 3)
, llGetSubString("😀bcd", 4, 4)
, llGetSubString("", 0, -1)
, llStringLength("")
, llStringLength("÷½¬⅛⅜⅝⅞😀±°z")
, llSubStringIndex("x", "blah")
, llSubStringIndex("", "")
, llSubStringIndex("", "x")
, llSubStringIndex("x", "")
, llSubStringIndex("a", "blah")
, llStringTrim(" a\n
", STRING_TRIM)
, llStringTrim("", STRING_TRIM)
]