238 lines
9.5 KiB
Julia
238 lines
9.5 KiB
Julia
# This file is a part of Julia. License is MIT: https://julialang.org/license
|
|
|
|
# padding (lpad and rpad)
|
|
@test lpad("foo", 3) == "foo"
|
|
@test rpad("foo", 3) == "foo"
|
|
@test lpad("foo", 5) == " foo"
|
|
@test rpad("foo", 5) == "foo "
|
|
@test lpad("foo", 5, " ") == " foo"
|
|
@test rpad("foo", 5, " ") == "foo "
|
|
@test lpad("foo", 6, " ") == " foo"
|
|
@test rpad("foo", 6, " ") == "foo "
|
|
|
|
# string manipulation
|
|
@test strip("") == ""
|
|
@test strip(" ") == ""
|
|
@test strip(" ") == ""
|
|
@test strip(" ") == ""
|
|
@test strip("\t hi \n") == "hi"
|
|
@test strip("foobarfoo", ['f','o']) == "bar"
|
|
@test strip("foobarfoo", ('f','o')) == "bar"
|
|
|
|
for s in ("", " ", " abc", "abc ", " abc "), f in (lstrip, rstrip, strip)
|
|
fs = f(s)
|
|
for T = (String, GenericString)
|
|
t = convert(T,s)
|
|
ft = f(t)
|
|
@test s == t
|
|
@test fs == ft
|
|
@test typeof(ft) == typeof(t[1:end])
|
|
|
|
b = convert(SubString{T}, t)
|
|
fb = f(b)
|
|
@test s == b
|
|
@test fs == fb
|
|
@test typeof(fb) == SubString{T}
|
|
end
|
|
end
|
|
|
|
# split
|
|
@test isequal(split("foo,bar,baz", 'x'), ["foo,bar,baz"])
|
|
@test isequal(split("foo,bar,baz", ','), ["foo","bar","baz"])
|
|
@test isequal(split("foo,bar,baz", ","), ["foo","bar","baz"])
|
|
@test isequal(split("foo,bar,baz", r","), ["foo","bar","baz"])
|
|
@test isequal(split("foo,bar,baz", ','; limit=0), ["foo","bar","baz"])
|
|
@test isequal(split("foo,bar,baz", ','; limit=1), ["foo,bar,baz"])
|
|
@test isequal(split("foo,bar,baz", ','; limit=2), ["foo","bar,baz"])
|
|
@test isequal(split("foo,bar,baz", ','; limit=3), ["foo","bar","baz"])
|
|
@test isequal(split("foo,bar", "o,b"), ["fo","ar"])
|
|
|
|
@test isequal(split("", ','), [""])
|
|
@test isequal(split(",", ','), ["",""])
|
|
@test isequal(split(",,", ','), ["","",""])
|
|
@test isequal(split("", ',' ; keep=false), [])
|
|
@test isequal(split(",", ',' ; keep=false), [])
|
|
@test isequal(split(",,", ','; keep=false), [])
|
|
|
|
@test isequal(split("a b c"), ["a","b","c"])
|
|
@test isequal(split("a b \t c\n"), ["a","b","c"])
|
|
|
|
@test isequal(rsplit("foo,bar,baz", 'x'), ["foo,bar,baz"])
|
|
@test isequal(rsplit("foo,bar,baz", ','), ["foo","bar","baz"])
|
|
@test isequal(rsplit("foo,bar,baz", ","), ["foo","bar","baz"])
|
|
@test isequal(rsplit("foo,bar,baz", ','; limit=0), ["foo","bar","baz"])
|
|
@test isequal(rsplit("foo,bar,baz", ','; limit=1), ["foo,bar,baz"])
|
|
@test isequal(rsplit("foo,bar,baz", ','; limit=2), ["foo,bar","baz"])
|
|
@test isequal(rsplit("foo,bar,baz", ','; limit=3), ["foo","bar","baz"])
|
|
@test isequal(rsplit("foo,bar", "o,b"), ["fo","ar"])
|
|
|
|
@test isequal(rsplit("", ','), [""])
|
|
@test isequal(rsplit(",", ','), ["",""])
|
|
@test isequal(rsplit(",,", ','), ["","",""])
|
|
@test isequal(rsplit(",,", ','; limit=2), [",",""])
|
|
@test isequal(rsplit("", ',' ; keep=false), [])
|
|
@test isequal(rsplit(",", ',' ; keep=false), [])
|
|
@test isequal(rsplit(",,", ','; keep=false), [])
|
|
|
|
#@test isequal(rsplit("a b c"), ["a","b","c"])
|
|
#@test isequal(rsplit("a b \t c\n"), ["a","b","c"])
|
|
|
|
let str = "a.:.ba..:..cba.:.:.dcba.:."
|
|
@test isequal(split(str, ".:."), ["a","ba.",".cba",":.dcba",""])
|
|
@test isequal(split(str, ".:."; keep=false), ["a","ba.",".cba",":.dcba"])
|
|
@test isequal(split(str, ".:."), ["a","ba.",".cba",":.dcba",""])
|
|
@test isequal(split(str, r"\.(:\.)+"), ["a","ba.",".cba","dcba",""])
|
|
@test isequal(split(str, r"\.(:\.)+"; keep=false), ["a","ba.",".cba","dcba"])
|
|
@test isequal(split(str, r"\.+:\.+"), ["a","ba","cba",":.dcba",""])
|
|
@test isequal(split(str, r"\.+:\.+"; keep=false), ["a","ba","cba",":.dcba"])
|
|
|
|
@test isequal(rsplit(str, ".:."), ["a","ba.",".cba.:","dcba",""])
|
|
@test isequal(rsplit(str, ".:."; keep=false), ["a","ba.",".cba.:","dcba"])
|
|
@test isequal(rsplit(str, ".:."; limit=2), ["a.:.ba..:..cba.:.:.dcba", ""])
|
|
@test isequal(rsplit(str, ".:."; limit=3), ["a.:.ba..:..cba.:", "dcba", ""])
|
|
@test isequal(rsplit(str, ".:."; limit=4), ["a.:.ba.", ".cba.:", "dcba", ""])
|
|
@test isequal(rsplit(str, ".:."; limit=5), ["a", "ba.", ".cba.:", "dcba", ""])
|
|
@test isequal(rsplit(str, ".:."; limit=6), ["a", "ba.", ".cba.:", "dcba", ""])
|
|
end
|
|
|
|
# zero-width splits
|
|
@test isequal(rsplit("", ""), [""])
|
|
|
|
@test isequal(split("", ""), [""])
|
|
@test isequal(split("", r""), [""])
|
|
@test isequal(split("abc", ""), ["a","b","c"])
|
|
@test isequal(split("abc", r""), ["a","b","c"])
|
|
@test isequal(split("abcd", r"b?"), ["a","c","d"])
|
|
@test isequal(split("abcd", r"b*"), ["a","c","d"])
|
|
@test isequal(split("abcd", r"b+"), ["a","cd"])
|
|
@test isequal(split("abcd", r"b?c?"), ["a","d"])
|
|
@test isequal(split("abcd", r"[bc]?"), ["a","","d"])
|
|
@test isequal(split("abcd", r"a*"), ["","b","c","d"])
|
|
@test isequal(split("abcd", r"a+"), ["","bcd"])
|
|
@test isequal(split("abcd", r"d*"), ["a","b","c",""])
|
|
@test isequal(split("abcd", r"d+"), ["abc",""])
|
|
@test isequal(split("abcd", r"[ad]?"), ["","b","c",""])
|
|
|
|
# replace
|
|
@test replace("\u2202", '*', '\0') == "\u2202"
|
|
|
|
@test replace("foobar", 'o', '0') == "f00bar"
|
|
@test replace("foobar", 'o', '0', 1) == "f0obar"
|
|
@test replace("foobar", 'o', "") == "fbar"
|
|
@test replace("foobar", 'o', "", 1) == "fobar"
|
|
@test replace("foobar", 'f', 'F') == "Foobar"
|
|
@test replace("foobar", 'r', 'R') == "foobaR"
|
|
|
|
@test replace("foofoofoo", "foo", "bar") == "barbarbar"
|
|
@test replace("foobarfoo", "foo", "baz") == "bazbarbaz"
|
|
@test replace("barfoofoo", "foo", "baz") == "barbazbaz"
|
|
|
|
@test replace("", "", "") == ""
|
|
@test replace("", "", "x") == "x"
|
|
@test replace("", "x", "y") == ""
|
|
|
|
@test replace("abcd", "", "^") == "^a^b^c^d^"
|
|
@test replace("abcd", "b", "^") == "a^cd"
|
|
@test replace("abcd", r"b?", "^") == "^a^c^d^"
|
|
@test replace("abcd", r"b+", "^") == "a^cd"
|
|
@test replace("abcd", r"b?c?", "^") == "^a^d^"
|
|
@test replace("abcd", r"[bc]?", "^") == "^a^^d^"
|
|
|
|
@test replace("foobarfoo", r"(fo|ba)", "xx") == "xxoxxrxxo"
|
|
@test replace("foobarfoo", r"(foo|ba)", "bar") == "barbarrbar"
|
|
|
|
@test replace("foobar", 'o', 'ø') == "føøbar"
|
|
@test replace("foobar", 'o', 'ø', 1) == "føobar"
|
|
@test replace("føøbar", 'ø', 'o') == "foobar"
|
|
@test replace("føøbar", 'ø', 'o', 1) == "foøbar"
|
|
@test replace("føøbar", 'ø', 'ö') == "fööbar"
|
|
@test replace("føøbar", 'ø', 'ö', 1) == "föøbar"
|
|
@test replace("føøbar", 'ø', "") == "fbar"
|
|
@test replace("føøbar", 'ø', "", 1) == "føbar"
|
|
@test replace("føøbar", 'f', 'F') == "Føøbar"
|
|
@test replace("ḟøøbar", 'ḟ', 'F') == "Føøbar"
|
|
@test replace("føøbar", 'f', 'Ḟ') == "Ḟøøbar"
|
|
@test replace("ḟøøbar", 'ḟ', 'Ḟ') == "Ḟøøbar"
|
|
@test replace("føøbar", 'r', 'R') == "føøbaR"
|
|
@test replace("føøbaṙ", 'ṙ', 'R') == "føøbaR"
|
|
@test replace("føøbar", 'r', 'Ṙ') == "føøbaṘ"
|
|
@test replace("føøbaṙ", 'ṙ', 'Ṙ') == "føøbaṘ"
|
|
|
|
@test replace("ḟøøḟøøḟøø", "ḟøø", "bar") == "barbarbar"
|
|
@test replace("ḟøøbarḟøø", "ḟøø", "baz") == "bazbarbaz"
|
|
@test replace("barḟøøḟøø", "ḟøø", "baz") == "barbazbaz"
|
|
|
|
@test replace("foofoofoo", "foo", "ƀäṙ") == "ƀäṙƀäṙƀäṙ"
|
|
@test replace("fooƀäṙfoo", "foo", "baz") == "bazƀäṙbaz"
|
|
@test replace("ƀäṙfoofoo", "foo", "baz") == "ƀäṙbazbaz"
|
|
|
|
@test replace("foofoofoo", "foo", "bar") == "barbarbar"
|
|
@test replace("foobarfoo", "foo", "ƀäż") == "ƀäżbarƀäż"
|
|
@test replace("barfoofoo", "foo", "ƀäż") == "barƀäżƀäż"
|
|
|
|
@test replace("ḟøøḟøøḟøø", "ḟøø", "ƀäṙ") == "ƀäṙƀäṙƀäṙ"
|
|
@test replace("ḟøøƀäṙḟøø", "ḟøø", "baz") == "bazƀäṙbaz"
|
|
@test replace("ƀäṙḟøøḟøø", "ḟøø", "baz") == "ƀäṙbazbaz"
|
|
|
|
@test replace("ḟøøḟøøḟøø", "ḟøø", "bar") == "barbarbar"
|
|
@test replace("ḟøøbarḟøø", "ḟøø", "ƀäż") == "ƀäżbarƀäż"
|
|
@test replace("barḟøøḟøø", "ḟøø", "ƀäż") == "barƀäżƀäż"
|
|
|
|
@test replace("ḟøøḟøøḟøø", "ḟøø", "ƀäṙ") == "ƀäṙƀäṙƀäṙ"
|
|
@test replace("ḟøøƀäṙḟøø", "ḟøø", "ƀäż") == "ƀäżƀäṙƀäż"
|
|
@test replace("ƀäṙḟøøḟøø", "ḟøø", "ƀäż") == "ƀäṙƀäżƀäż"
|
|
|
|
@test replace("", "", "ẍ") == "ẍ"
|
|
@test replace("", "ẍ", "ÿ") == ""
|
|
|
|
@test replace("äƀçđ", "", "π") == "πäπƀπçπđπ"
|
|
@test replace("äƀçđ", "ƀ", "π") == "äπçđ"
|
|
@test replace("äƀçđ", r"ƀ?", "π") == "πäπçπđπ"
|
|
@test replace("äƀçđ", r"ƀ+", "π") == "äπçđ"
|
|
@test replace("äƀçđ", r"ƀ?ç?", "π") == "πäπđπ"
|
|
@test replace("äƀçđ", r"[ƀç]?", "π") == "πäππđπ"
|
|
|
|
@test replace("foobarfoo", r"(fo|ba)", "ẍẍ") == "ẍẍoẍẍrẍẍo"
|
|
|
|
@test replace("ḟøøbarḟøø", r"(ḟø|ba)", "xx") == "xxøxxrxxø"
|
|
@test replace("ḟøøbarḟøø", r"(ḟøø|ba)", "bar") == "barbarrbar"
|
|
|
|
@test replace("fooƀäṙfoo", r"(fo|ƀä)", "xx") == "xxoxxṙxxo"
|
|
@test replace("fooƀäṙfoo", r"(foo|ƀä)", "ƀäṙ") == "ƀäṙƀäṙṙƀäṙ"
|
|
|
|
@test replace("ḟøøƀäṙḟøø", r"(ḟø|ƀä)", "xx") == "xxøxxṙxxø"
|
|
@test replace("ḟøøƀäṙḟøø", r"(ḟøø|ƀä)", "ƀäṙ") == "ƀäṙƀäṙṙƀäṙ"
|
|
|
|
@test replace("foo", "oo", uppercase) == "fOO"
|
|
|
|
# Issue 13332
|
|
@test replace("abc", 'b', 2.1) == "a2.1c"
|
|
|
|
# chomp/chop
|
|
@test chomp("foo\n") == "foo"
|
|
@test chop("fooε") == "foo"
|
|
@test isa(chomp("foo"), SubString)
|
|
@test isa(chop("foo"), SubString)
|
|
|
|
# bytes2hex and hex2bytes
|
|
hex_str = "d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592"
|
|
bin_val = hex2bytes(hex_str)
|
|
|
|
@test div(length(hex_str), 2) == length(bin_val)
|
|
@test hex_str == bytes2hex(bin_val)
|
|
|
|
bin_val = hex2bytes("07bf")
|
|
@test bin_val[1] == 7
|
|
@test bin_val[2] == 191
|
|
@test typeof(bin_val) == Array{UInt8, 1}
|
|
@test length(bin_val) == 2
|
|
|
|
# all valid hex chars
|
|
@test "0123456789abcdefabcdef" == bytes2hex(hex2bytes("0123456789abcdefABCDEF"))
|
|
|
|
# odd size
|
|
@test_throws ArgumentError hex2bytes("0123456789abcdefABCDEF0")
|
|
|
|
#non-hex characters
|
|
@test_throws ArgumentError hex2bytes("0123456789abcdefABCDEFGH")
|