|
285 | 285 | end
|
286 | 286 | end
|
287 | 287 |
|
| 288 | +@testset "Indexing CartesianIndices as an nD range" begin |
| 289 | + for (m, n) in [(4, 6), (4, 4), (6,4)] |
| 290 | + C = CartesianIndices((m, n)) |
| 291 | + for k in -7:7 |
| 292 | + dlen = length = max(0, k <= 0 ? min(m+k, n) : min(m, n-k)) |
| 293 | + dind = StepRangeLen(CartesianIndex(1+max(0,-k),1+max(0,k)), CartesianIndex(1,1), dlen) |
| 294 | + @test C[dind] === dind |
| 295 | + @test C[dind[1:2:end]] === dind[1:2:end] |
| 296 | + end |
| 297 | + end |
| 298 | + for C in [CartesianIndices((20:4:100,)), |
| 299 | + CartesianIndices((20:-4:-100,)), |
| 300 | + CartesianIndices((20:100,)), |
| 301 | + CartesianIndices((Base.IdentityUnitRange(20:100),))] |
| 302 | + r = StepRangeLen(CartesianIndex(firstindex(C)+1), CartesianIndex(3), 4) |
| 303 | + @test C[r] == C[collect(r)] |
| 304 | + end |
| 305 | + C = CartesianIndices((3:8, 3:8, 3:8)) |
| 306 | + r = StepRangeLen(CartesianIndex(1,1,1), CartesianIndex(1,1,1), 6) |
| 307 | + @test C[r] == StepRangeLen(CartesianIndex(3,3,3), CartesianIndex(1,1,1), 6) |
| 308 | + r = StepRangeLen(CartesianIndex(1,1,1), CartesianIndex(1,0,0), 6) |
| 309 | + @test C[r] == StepRangeLen(CartesianIndex(3,3,3), CartesianIndex(1,0,0), 6) |
| 310 | + |
| 311 | + C = CartesianIndices((3:8, 3:8, Base.IdentityUnitRange(3:8))) |
| 312 | + r = StepRangeLen(CartesianIndex(1,1,3), CartesianIndex(1,1,1), 6) |
| 313 | + @test C[r] == StepRangeLen(CartesianIndex(3,3,3), CartesianIndex(1,1,1), 6) |
| 314 | +end |
| 315 | + |
288 | 316 | @testset "LinearIndices" begin
|
289 | 317 | @testset "constructors" begin
|
290 | 318 | for oinds in [
|
|
0 commit comments