1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
#!../../src/liquidsoap ../../libs/stdlib.liq ../../libs/deprecations.liq
%include "test.liq"
success = ref(true)
def t(x, y)
if x != y then
let json.stringify x = x
let json.stringify y = y
print("Failure: got #{x} instead of #{y}")
success := false
end
end
def f() =
t(string.length(""), 0)
t(string.length("abc"), 3)
t(string.capitalize("aBc"), "ABc")
t(string.case("aBc"), "abc")
t(string.case(lower=false, "aBc"), "ABC")
t(string.concat(["ab","c","d"]), "abcd")
t(r/.*ab.*/.test("cccabc"), true)
t(r/.*ab.*/.test("cccbac"), false)
t(string.trim(" abc "), "abc")
t(string.sub("abcd",start=1,length=2), "bc")
t(string.sub("ab",start=0,length=10), "")
t(string.sub("ab",start=10,length=5), "")
t(string.contains(prefix="ab","abcd"), true)
t(string.contains(prefix="ba","abcd"), false)
t(string.contains(prefix="abcd","ab"), false)
t(string.contains(suffix="cd","abcd"), true)
t(string.contains(suffix="dc","abcd"), false)
t(string.contains(substring="bc","abcd"), true)
t(string.contains(substring="bc","acbd"), false)
t(string.binary.to_int(little_endian=true,"abcd"),0x64636261)
t(string.binary.to_int(little_endian=false,"abcd"),0x61626364)
t(string.binary.of_int(little_endian=true,0x64636261),"abcd")
t(string.binary.of_int(little_endian=false,0x61626364), "abcd")
s = r/([^=]*)=(.*)/.exec("ab=cde")
t(s[1], "ab")
t(s[2], "cde")
t(string.unescape("\\/\\a\\b\\e\\f\\n\\r\\t\\v\\'\\?\\x61\\141\\u0061"), "/\a\b\e\f\n\r\t\v\'\?aaa")
t(string.escape("/\\\a\b\e\f\n\r\t\v\'\?"), "/\\\\\\u0007\\b\\u001B\\u000C\\n\\r\\t\\u000B\\'?")
t(string.escape(encoding="ascii", "\\foo \"π
o"), "\\\\foo \\\"\\xF0\\x9F\\x98\\x85 o")
t("\xF0\x9F\x98\x85", "π
")
t("\342\234\250", "β¨")
t("\u2728", "β¨")
t("\/", "/")
t(string.escape.all("β¨"), "\\u2728")
t(string.escape.all(format="hex", "β¨"), "\\xE2\\x9C\\xA8")
t(string.escape.all(format="octal","β¨"), "\\342\\234\\250")
t(string.unescape("\\u2728"), "β¨")
t(string.unescape("\\xE2\\x9C\\xA8"), "β¨")
t(string.unescape("\\342\\234\\250"), "β¨")
t(string.quote(encoding="ascii", "foo \"π
o"), "\"foo \\\"\\xF0\\x9F\\x98\\x85 o\"")
t(string.quote("foo \"π
o"), "\"foo \\\"π
o\"")
t(string.quote("aa'bb"), "\"aa'bb\"")
# Test that we revert to ascii on invalid utf8 strings when encoding is not specified:
invalid_utf8_string = "\xfc\xa1\xa1\xa1\xa1\xa1"
t(string.quote(invalid_utf8_string), string.quote(encoding="ascii", invalid_utf8_string))
# But raise an exception when encoding is specified:
try
ignore(string.quote(encoding="utf8", invalid_utf8_string))
test.fail()
catch _ : [error.string] do
()
end
t(string.annotate.parse("foo=bla,\"foo\"=\"β¨β
\",\"gni:gno\"=\"bla\\\"blu:\":πuri"),
([("foo", "bla"), ("foo", "β¨β
"), ("gni:gno", "bla\"blu:")], "πuri"))
t(string.data_uri.encode(mime="foo/bar", "β¨"), "data:foo/bar;base64,4pyo")
t(string.data_uri.encode(base64=false, mime="foo/bar", "β¨"), "data:foo/bar,β¨")
t(string.data_uri.decode("data:foo/bar;base64,4pyo"), null("β¨".{mime = "foo/bar"}))
t(string.data_uri.decode("data:foo/bar,β¨"), null("β¨".{mime = "foo/bar"}))
if !success then test.pass() else test.fail() end
end
test.check(f)
|