blob: 7d0f7890a1cc3e4a81c34b873a60e11cc4756b0c [file] [log] [blame]
# indexing
assert_eq("somestring"[0], "s")
assert_eq("somestring"[1], "o")
assert_eq("somestring"[4], "s")
assert_eq("somestring"[9], "g")
assert_eq("somestring"[-1], "g")
assert_eq("somestring"[-2], "n")
assert_eq("somestring"[-10], "s")
assert_fails(lambda: "abcdef"[10], "index out of range")
assert_fails(lambda: "abcdef"[-11], "index out of range")
# slicing
assert_eq("0123"[0:-1], "012")
assert_eq("012345"[2:4], "23")
assert_eq("012345"[-2:-1], "4")
assert_eq(""[1:2], "")
assert_eq("012"[1:0], "")
assert_eq("0123"[-10:10], "0123")
assert_eq("01234"[::1], "01234")
assert_eq("01234"[1::1], "1234")
assert_eq("01234"[:2:1], "01")
assert_eq("01234"[1:3:1], "12")
assert_eq("01234"[-4:-2:1], "12")
assert_eq("01234"[-10:10:1], "01234")
assert_eq("01234"[::42], "0")
assert_eq(""[::1], "")
assert_eq(""[::-1], "")
assert_eq("0123456"[::3], "036")
assert_eq("01234567"[1:7:3], "14")
assert_eq("01234"[::-1], "43210")
assert_eq("01234"[4::-1], "43210")
assert_eq("01234"[:0:-1], "4321")
assert_eq("01234"[3:1:-1], "32")
assert_eq("01234"[::-2], "420")
assert_eq("01234"[::-10], "4")
assert_eq("123"[3:1:1], "")
assert_eq("123"[1:3:-1], "")
assert_fails(lambda: "123"[::0], "slice step cannot be zero")
assert_fails(lambda: "123"[1::0], "slice step cannot be zero")
assert_fails(lambda: "123"[:3:0], "slice step cannot be zero")
assert_fails(lambda: "123"[1:3:0], "slice step cannot be zero")
assert_fails(lambda: "123"["a"::], "got string for start index, want int")
assert_fails(lambda: "123"[:"b":], "got string for stop index, want int")