# Without step assert_eq([0, 1, 2, 3][0:-1], [0, 1, 2]) assert_eq([0, 1, 2, 3, 4, 5][2:4], [2, 3]) assert_eq([0, 1, 2, 3, 4, 5][-2:-1], [4]) assert_eq([][1:2], []) assert_eq([0, 1, 2, 3][-10:10], [0, 1, 2, 3]) # With step assert_eq([1, 2, 3, 4, 5][::1], [1, 2, 3, 4, 5]) assert_eq([1, 2, 3, 4, 5][1::1], [2, 3, 4, 5]) assert_eq([1, 2, 3, 4, 5][:2:1], [1, 2]) assert_eq([1, 2, 3, 4, 5][1:3:1], [2, 3]) assert_eq([1, 2, 3, 4, 5][-4:-2:1], [2, 3]) assert_eq([1, 2, 3, 4, 5][-10:10:1], [1, 2, 3, 4, 5]) assert_eq([1, 2, 3, 4, 5][::42], [1]) assert_eq([][::1], []) assert_eq([][::-1], []) assert_eq([1, 2, 3, 4, 5, 6, 7][::3], [1, 4, 7]) assert_eq([1, 2, 3, 4, 5, 6, 7, 8, 9][1:7:3], [2, 5]) assert_eq([1, 2, 3][3:1:1], []) assert_eq([1, 2, 3][1:3:-1], []) # Negative step assert_eq([1, 2, 3, 4, 5][::-1], [5, 4, 3, 2, 1]) assert_eq([1, 2, 3, 4, 5][4::-1], [5, 4, 3, 2, 1]) assert_eq([1, 2, 3, 4, 5][:0:-1], [5, 4, 3, 2]) assert_eq([1, 2, 3, 4, 5][3:1:-1], [4, 3]) assert_eq([1, 2, 3, 4, 5][::-2], [5, 3, 1]) assert_eq([1, 2, 3, 4, 5][::-10], [5]) # Tuples assert_eq(()[1:2], ()) assert_eq(()[::1], ()) assert_eq((0, 1, 2, 3)[0:-1], (0, 1, 2)) assert_eq((0, 1, 2, 3, 4, 5)[2:4], (2, 3)) assert_eq((0, 1, 2, 3)[-10:10], (0, 1, 2, 3)) assert_eq((1, 2, 3, 4, 5)[-10:10:1], (1, 2, 3, 4, 5)) assert_eq((1, 2, 3, 4, 5, 6, 7, 8, 9)[1:7:3], (2, 5)) assert_eq((1, 2, 3, 4, 5)[::-1], (5, 4, 3, 2, 1)) assert_eq((1, 2, 3, 4, 5)[3:1:-1], (4, 3)) assert_eq((1, 2, 3, 4, 5)[::-2], (5, 3, 1)) assert_eq((1, 2, 3, 4, 5)[::-10], (5,)) --- '123'['a'::] ### slice start must be an integer, not 'a' --- '123'[:'b':] ### slice end must be an integer, not 'b' --- (1, 2, 3)[1::0] ### slice step cannot be zero --- [1, 2, 3][::0] ### slice step cannot be zero --- [1, 2, 3][1::0] ### slice step cannot be zero --- [1, 2, 3][:3:0] ### slice step cannot be zero --- [1, 2, 3][1:3:0] ### slice step cannot be zero