|
1 | 1 | from testutils import assert_raises |
2 | 2 |
|
3 | | -a = [] |
4 | | -assert a[:] == [] |
5 | | -assert a[: 2 ** 100] == [] |
6 | | -assert a[-2 ** 100 :] == [] |
7 | | -assert a[:: 2 ** 100] == [] |
8 | | -assert a[10:20] == [] |
9 | | -assert a[-20:-10] == [] |
| 3 | +a = slice(10) |
| 4 | +assert a.start == None |
| 5 | +assert a.stop == 10 |
| 6 | +assert a.step == None |
| 7 | + |
| 8 | +a = slice(0, 10, 1) |
| 9 | +assert a.start == 0 |
| 10 | +assert a.stop == 10 |
| 11 | +assert a.step == 1 |
| 12 | + |
| 13 | +assert slice(10).__repr__() == 'slice(None, 10, None)' |
| 14 | +assert slice(None).__repr__() == 'slice(None, None, None)' |
| 15 | +assert slice(0, 10, 13).__repr__() == 'slice(0, 10, 13)' |
| 16 | +assert slice('0', 1.1, 2+3j).__repr__() == "slice('0', 1.1, (2+3j))" |
| 17 | + |
| 18 | +assert slice(10) == slice(10) |
| 19 | +assert slice(-1) != slice(1) |
| 20 | +assert slice(0, 10, 3) != slice(0, 11, 3) |
| 21 | +assert slice(0, None, 3) != slice(0, 'a', 3) |
| 22 | +assert slice(0, 'a', 3) == slice(0, 'a', 3) |
| 23 | + |
| 24 | +assert slice(0, 0, 0).__eq__(slice(0, 0, 0)) |
| 25 | +assert not slice(0, 0, 1).__eq__(slice(0, 0, 0)) |
| 26 | +assert not slice(0, 1, 0).__eq__(slice(0, 0, 0)) |
| 27 | +assert not slice(1, 0, 0).__eq__(slice(0, 0, 0)) |
| 28 | +assert slice(1, 0, 0).__ne__(slice(0, 0, 0)) |
| 29 | +assert slice(0, 1, 0).__ne__(slice(0, 0, 0)) |
| 30 | +assert slice(0, 0, 1).__ne__(slice(0, 0, 0)) |
| 31 | + |
| 32 | +assert slice(0).__eq__(0) == NotImplemented |
| 33 | +assert slice(0).__ne__(0) == NotImplemented |
| 34 | +assert slice(None).__ne__(slice(0)) |
| 35 | + |
| 36 | +# slice gt, ge, lt, le |
| 37 | +assert_raises(TypeError, lambda: slice(0, slice(), 0) < slice(0, 0, 0)) |
| 38 | +assert_raises(TypeError, lambda: slice(0, slice(), 0) <= slice(0, 0, 0)) |
| 39 | +assert_raises(TypeError, lambda: slice(0, slice(), 0) > slice(0, 0, 0)) |
| 40 | +assert_raises(TypeError, lambda: slice(0, slice(), 0) >= slice(0, 0, 0)) |
| 41 | + |
| 42 | +assert_raises(TypeError, lambda: slice(0, 0, 0) < slice(0, 0, slice())) |
| 43 | +assert_raises(TypeError, lambda: slice(0, 0, 0) <= slice(0, 0, slice())) |
| 44 | +assert_raises(TypeError, lambda: slice(0, 0, 0) > slice(0, 0, slice())) |
| 45 | +assert_raises(TypeError, lambda: slice(0, 0, 0) >= slice(0, 0, slice())) |
| 46 | + |
| 47 | +assert_raises(TypeError, lambda: slice(0, 0) >= slice(0, 0, 0)) |
| 48 | +assert_raises(TypeError, lambda: slice(0, 0) <= slice(0, 0, 0)) |
| 49 | +assert_raises(TypeError, lambda: slice(0, 0) < slice(0, 0, 0)) |
| 50 | +assert_raises(TypeError, lambda: slice(0, 0) > slice(0, 0, 0)) |
| 51 | + |
| 52 | +assert slice(0, 0, 0) < slice(0, 1, -1) |
| 53 | +assert slice(0, 0, 0) < slice(0, 0, 1) |
| 54 | +assert slice(0, 0, 0) > slice(0, 0, -1) |
| 55 | +assert slice(0, 0, 0) >= slice(0, 0, -1) |
| 56 | +assert not slice(0, 0, 0) <= slice(0, 0, -1) |
| 57 | + |
| 58 | +assert slice(0, 0, 0) > slice(0, -1, 1) |
| 59 | +assert slice(0, 0, 0) >= slice(0, -1, 1) |
| 60 | +assert slice(0, 0, 0) >= slice(0, -1, 1) |
| 61 | + |
| 62 | +assert slice(0, 0, 0) <= slice(0, 0, 1) |
| 63 | +assert slice(0, 0, 0) <= slice(0, 0, 0) |
| 64 | +assert slice(0, 0, 0) <= slice(0, 0, 0) |
| 65 | +assert not slice(0, 0, 0) > slice(0, 0, 0) |
| 66 | +assert not slice(0, 0, 0) < slice(0, 0, 0) |
| 67 | + |
| 68 | +assert not slice(0, float('nan'), float('nan')) <= slice(0, float('nan'), 1) |
| 69 | +assert not slice(0, float('nan'), float('nan')) <= slice(0, float('nan'), float('nan')) |
| 70 | +assert not slice(0, float('nan'), float('nan')) >= slice(0, float('nan'), float('nan')) |
| 71 | +assert not slice(0, float('nan'), float('nan')) < slice(0, float('nan'), float('nan')) |
| 72 | +assert not slice(0, float('nan'), float('nan')) > slice(0, float('nan'), float('nan')) |
| 73 | + |
| 74 | +assert slice(0, float('inf'), float('inf')) >= slice(0, float('inf'), 1) |
| 75 | +assert slice(0, float('inf'), float('inf')) <= slice(0, float('inf'), float('inf')) |
| 76 | +assert slice(0, float('inf'), float('inf')) >= slice(0, float('inf'), float('inf')) |
| 77 | +assert not slice(0, float('inf'), float('inf')) < slice(0, float('inf'), float('inf')) |
| 78 | +assert not slice(0, float('inf'), float('inf')) > slice(0, float('inf'), float('inf')) |
| 79 | + |
| 80 | +assert_raises(TypeError, lambda: slice(0) < 3) |
| 81 | +assert_raises(TypeError, lambda: slice(0) > 3) |
| 82 | +assert_raises(TypeError, lambda: slice(0) <= 3) |
| 83 | +assert_raises(TypeError, lambda: slice(0) >= 3) |
| 84 | + |
| 85 | +assert_raises(TypeError, hash, slice(0)) |
| 86 | +assert_raises(TypeError, hash, slice(None)) |
| 87 | + |
| 88 | +def dict_slice(): |
| 89 | + d = {} |
| 90 | + d[slice(0)] = 3 |
| 91 | + |
| 92 | +assert_raises(TypeError, dict_slice) |
| 93 | + |
| 94 | +assert slice(None ).indices(10) == (0, 10, 1) |
| 95 | +assert slice(None, None, 2).indices(10) == (0, 10, 2) |
| 96 | +assert slice(1, None, 2).indices(10) == (1, 10, 2) |
| 97 | +assert slice(None, None, -1).indices(10) == (9, -1, -1) |
| 98 | +assert slice(None, None, -2).indices(10) == (9, -1, -2) |
| 99 | +assert slice(3, None, -2).indices(10) == (3, -1, -2) |
| 100 | + |
| 101 | +# issue 3004 tests |
| 102 | +assert slice(None, -9).indices(10) == (0, 1, 1) |
| 103 | +assert slice(None, -10).indices(10) == (0, 0, 1) |
| 104 | +assert slice(None, -11).indices(10) == (0, 0, 1) |
| 105 | +assert slice(None, -10, -1).indices(10) == (9, 0, -1) |
| 106 | +assert slice(None, -11, -1).indices(10) == (9, -1, -1) |
| 107 | +assert slice(None, -12, -1).indices(10) == (9, -1, -1) |
| 108 | +assert slice(None, 9).indices(10) == (0, 9, 1) |
| 109 | +assert slice(None, 10).indices(10) == (0, 10, 1) |
| 110 | +assert slice(None, 11).indices(10) == (0, 10, 1) |
| 111 | +assert slice(None, 8, -1).indices(10) == (9, 8, -1) |
| 112 | +assert slice(None, 9, -1).indices(10) == (9, 9, -1) |
| 113 | +assert slice(None, 10, -1).indices(10) == (9, 9, -1) |
| 114 | + |
| 115 | +assert \ |
| 116 | + slice(-100, 100).indices(10) == \ |
| 117 | + slice(None ).indices(10) |
| 118 | + |
| 119 | +assert \ |
| 120 | + slice(100, -100, -1).indices(10) == \ |
| 121 | + slice(None, None, -1).indices(10) |
| 122 | + |
| 123 | +assert slice(-100, 100, 2).indices(10) == (0, 10, 2) |
| 124 | + |
| 125 | +try: |
| 126 | + slice(None, None, 0) |
| 127 | + assert "zero step" == "throws an exception" |
| 128 | +except: |
| 129 | + pass |
10 | 130 |
|
| 131 | +a = [] |
11 | 132 | b = [1, 2] |
12 | | - |
13 | | -assert b[:] == [1, 2] |
14 | | -assert b[slice(None)] == [1, 2] |
15 | | -assert b[: 2 ** 100] == [1, 2] |
16 | | -assert b[-2 ** 100 :] == [1, 2] |
17 | | -assert b[2 ** 100 :] == [] |
18 | | -assert b[:: 2 ** 100] == [1] |
19 | | -assert b[-10:1] == [1] |
20 | | -assert b[0:0] == [] |
21 | | -assert b[1:0] == [] |
22 | | - |
23 | | -assert_raises(ValueError, lambda: b[::0], _msg='zero step slice') |
24 | | - |
25 | | -assert b[::-1] == [2, 1] |
26 | | -assert b[1::-1] == [2, 1] |
27 | | -assert b[0::-1] == [1] |
28 | | -assert b[0:-5:-1] == [1] |
29 | | -assert b[:0:-1] == [2] |
30 | | -assert b[5:0:-1] == [2] |
31 | | - |
32 | 133 | c = list(range(10)) |
33 | | - |
34 | | -assert c[9:6:-3] == [9] |
35 | | -assert c[9::-3] == [9, 6, 3, 0] |
36 | | -assert c[9::-4] == [9, 5, 1] |
37 | | -assert c[8 :: -2 ** 100] == [8] |
38 | | - |
39 | | -assert c[7:7:-2] == [] |
40 | | -assert c[7:8:-2] == [] |
41 | | - |
42 | 134 | d = "123456" |
43 | 135 |
|
44 | | -assert d[3::-1] == "4321" |
45 | | -assert d[4::-3] == "52" |
46 | | - |
47 | | -assert [1, 2, 3, 5, 6][-1:-5:-1] == [6, 5, 3, 2] # #746 |
48 | | - |
49 | 136 | slice_a = slice(5) |
50 | 137 | assert slice_a.start is None |
51 | 138 | assert slice_a.stop == 5 |
|
0 commit comments