|
52 | 52 |
|
53 | 53 | @testset "1-dimensional" begin |
54 | 54 | for i = 1:3 |
55 | | - @test ArrayInterface.getindex(LinearIndices((3,)), i) == i |
56 | | - @test ArrayInterface.getindex(CartesianIndices((3,)), i) == CartesianIndex(i,) |
| 55 | + @test @inferred(ArrayInterface.getindex(LinearIndices((3,)), i)) == i |
| 56 | + @test @inferred(ArrayInterface.getindex(CartesianIndices((3,)), i)) == CartesianIndex(i,) |
57 | 57 | end |
58 | | - @test ArrayInterface.getindex(LinearIndices((3,)), 2,1) == 2 |
59 | | - @test ArrayInterface.getindex(LinearIndices((3,)), [1]) == [1] |
| 58 | + @test @inferred(ArrayInterface.getindex(LinearIndices((3,)), 2,1)) == 2 |
| 59 | + @test @inferred(ArrayInterface.getindex(LinearIndices((3,)), [1])) == [1] |
60 | 60 | # !!NOTE!! this is different than Base.getindex(::LinearIndices, ::AbstractUnitRange) |
61 | 61 | # which returns a UnitRange. Instead we try to preserve axes if at all possible so the |
62 | 62 | # values are the same but it's still wrapped in LinearIndices struct |
63 | | - @test ArrayInterface.getindex(LinearIndices((3,)), 1:2) == 1:2 |
64 | | - @test ArrayInterface.getindex(LinearIndices((3,)), 1:2:3) === 1:2:3 |
| 63 | + @test @inferred(ArrayInterface.getindex(LinearIndices((3,)), 1:2)) == 1:2 |
| 64 | + @test @inferred(ArrayInterface.getindex(LinearIndices((3,)), 1:2:3)) === 1:2:3 |
65 | 65 | @test_throws BoundsError ArrayInterface.getindex(LinearIndices((3,)), 2:4) |
66 | 66 | @test_throws BoundsError ArrayInterface.getindex(CartesianIndices((3,)), 2, 2) |
67 | 67 | # ambiguity btw cartesian indexing and linear indexing in 1d when |
|
76 | 76 | linear = LinearIndices(cartesian) |
77 | 77 | for j = 1:3, i = 1:4 |
78 | 78 | k += 1 |
79 | | - @test ArrayInterface.getindex(linear, i, j) == ArrayInterface.getindex(linear, k) == k |
80 | | - @test ArrayInterface.getindex(cartesian, k) == CartesianIndex(i,j) |
81 | | - @test ArrayInterface.getindex(LinearIndices(map(Base.Slice, (0:3,3:5))), i-1, j+2) == k |
82 | | - @test ArrayInterface.getindex(CartesianIndices(map(Base.Slice, (0:3,3:5))), k) == CartesianIndex(i-1,j+2) |
| 79 | + @test @inferred(ArrayInterface.getindex(linear, i, j)) == ArrayInterface.getindex(linear, k) == k |
| 80 | + @test @inferred(ArrayInterface.getindex(cartesian, k)) == CartesianIndex(i,j) |
| 81 | + @test @inferred(ArrayInterface.getindex(LinearIndices(map(Base.Slice, (0:3,3:5))), i-1, j+2)) == k |
| 82 | + @test @inferred(ArrayInterface.getindex(CartesianIndices(map(Base.Slice, (0:3,3:5))), k)) == CartesianIndex(i-1,j+2) |
83 | 83 | end |
84 | | - @test linear[linear] == linear |
85 | | - @test linear[vec(linear)] == vec(linear) |
86 | | - @test linear[cartesian] == linear |
87 | | - @test linear[vec(cartesian)] == vec(linear) |
88 | | - @test cartesian[linear] == cartesian |
89 | | - @test cartesian[vec(linear)] == vec(cartesian) |
90 | | - @test cartesian[cartesian] == cartesian |
91 | | - @test cartesian[vec(cartesian)] == vec(cartesian) |
92 | | - @test linear[2:3] === 2:3 |
93 | | - @test linear[3:-1:1] === 3:-1:1 |
| 84 | + @test @inferred(getindex(linear, linear)) == linear |
| 85 | + @test @inferred(getindex(linear, vec(linear))) == vec(linear) |
| 86 | + @test @inferred(getindex(linear, cartesian)) == linear |
| 87 | + @test @inferred(getindex(linear, vec(cartesian))) == vec(linear) |
| 88 | + @test @inferred(getindex(cartesian, linear)) == cartesian |
| 89 | + @test @inferred(getindex(cartesian, vec(linear))) == vec(cartesian) |
| 90 | + @test @inferred(getindex(cartesian, cartesian)) == cartesian |
| 91 | + @test @inferred(getindex(cartesian, vec(cartesian))) == vec(cartesian) |
| 92 | + @test @inferred(getindex(linear, 2:3)) === 2:3 |
| 93 | + @test @inferred(getindex(linear, 3:-1:1)) === 3:-1:1 |
94 | 94 | @test_throws BoundsError linear[4:13] |
95 | 95 | end |
96 | 96 |
|
97 | 97 | @testset "3-dimensional" begin |
98 | 98 | l = 0 |
99 | 99 | for k = 1:2, j = 1:3, i = 1:4 |
100 | 100 | l += 1 |
101 | | - @test ArrayInterface.getindex(LinearIndices((4,3,2)),i,j,k) == l |
102 | | - @test ArrayInterface.getindex(LinearIndices((4,3,2)),l) == l |
103 | | - @test ArrayInterface.getindex(CartesianIndices((4,3,2)),i,j,k) == CartesianIndex(i,j,k) |
104 | | - @test ArrayInterface.getindex(CartesianIndices((4,3,2)),l) == CartesianIndex(i,j,k) |
105 | | - @test ArrayInterface.getindex(LinearIndices((1:4,1:3,1:2)),i,j,k) == l |
106 | | - @test ArrayInterface.getindex(LinearIndices((1:4,1:3,1:2)),l) == l |
107 | | - @test ArrayInterface.getindex(CartesianIndices((1:4,1:3,1:2)),i,j,k) == CartesianIndex(i,j,k) |
108 | | - @test ArrayInterface.getindex(CartesianIndices((1:4,1:3,1:2)),l) == CartesianIndex(i,j,k) |
| 101 | + @test @inferred(ArrayInterface.getindex(LinearIndices((4,3,2)),i,j,k)) == l |
| 102 | + @test @inferred(ArrayInterface.getindex(LinearIndices((4,3,2)),l)) == l |
| 103 | + @test @inferred(ArrayInterface.getindex(CartesianIndices((4,3,2)),i,j,k)) == CartesianIndex(i,j,k) |
| 104 | + @test @inferred(ArrayInterface.getindex(CartesianIndices((4,3,2)),l)) == CartesianIndex(i,j,k) |
| 105 | + @test @inferred(ArrayInterface.getindex(LinearIndices((1:4,1:3,1:2)),i,j,k)) == l |
| 106 | + @test @inferred(ArrayInterface.getindex(LinearIndices((1:4,1:3,1:2)),l)) == l |
| 107 | + @test @inferred(ArrayInterface.getindex(CartesianIndices((1:4,1:3,1:2)),i,j,k)) == CartesianIndex(i,j,k) |
| 108 | + @test @inferred(ArrayInterface.getindex(CartesianIndices((1:4,1:3,1:2)),l)) == CartesianIndex(i,j,k) |
109 | 109 | end |
110 | 110 |
|
111 | 111 | l = 0 |
112 | 112 | for k = -101:-100, j = 3:5, i = 0:3 |
113 | 113 | l += 1 |
114 | | - @test ArrayInterface.getindex(LinearIndices(map(Base.Slice, (0:3,3:5,-101:-100))),i,j,k) == l |
115 | | - @test ArrayInterface.getindex(LinearIndices(map(Base.Slice, (0:3,3:5,-101:-100))),l) == l |
116 | | - @test ArrayInterface.getindex(CartesianIndices(map(Base.Slice, (0:3,3:5,-101:-100))),i,j,k) == CartesianIndex(i,j,k) |
117 | | - @test ArrayInterface.getindex(CartesianIndices(map(Base.Slice, (0:3,3:5,-101:-100))),l) == CartesianIndex(i,j,k) |
| 114 | + @test @inferred(ArrayInterface.getindex(LinearIndices(map(Base.Slice, (0:3,3:5,-101:-100))),i,j,k)) == l |
| 115 | + @test @inferred(ArrayInterface.getindex(LinearIndices(map(Base.Slice, (0:3,3:5,-101:-100))),l)) == l |
| 116 | + @test @inferred(ArrayInterface.getindex(CartesianIndices(map(Base.Slice, (0:3,3:5,-101:-100))),i,j,k)) == CartesianIndex(i,j,k) |
| 117 | + @test @inferred(ArrayInterface.getindex(CartesianIndices(map(Base.Slice, (0:3,3:5,-101:-100))),l)) == CartesianIndex(i,j,k) |
118 | 118 | end |
119 | 119 |
|
120 | 120 | local A = reshape(Vector(1:9), (3,3)) |
121 | | - @test ArrayInterface.getindex(CartesianIndices(size(A)),6) == CartesianIndex(3,2) |
122 | | - @test ArrayInterface.getindex(LinearIndices(size(A)),3, 2) == 6 |
123 | | - @test ArrayInterface.getindex(CartesianIndices(A),6) == CartesianIndex(3,2) |
124 | | - @test ArrayInterface.getindex(LinearIndices(A),3, 2) == 6 |
| 121 | + @test @inferred(ArrayInterface.getindex(CartesianIndices(size(A)),6)) == CartesianIndex(3,2) |
| 122 | + @test @inferred(ArrayInterface.getindex(LinearIndices(size(A)),3, 2)) == 6 |
| 123 | + @test @inferred(ArrayInterface.getindex(CartesianIndices(A),6)) == CartesianIndex(3,2) |
| 124 | + @test @inferred(ArrayInterface.getindex(LinearIndices(A),3, 2)) == 6 |
125 | 125 | for i in 1:length(A) |
126 | | - @test ArrayInterface.getindex(LinearIndices(A),ArrayInterface.getindex(CartesianIndices(A),i)) == i |
| 126 | + @test @inferred(ArrayInterface.getindex(LinearIndices(A),ArrayInterface.getindex(CartesianIndices(A),i))) == i |
127 | 127 | end |
128 | 128 | end |
129 | 129 |
|
|
0 commit comments