Skip to content

Commit d702325

Browse files
committed
more tests for #37204
OffsetArrays issues 133 and 100 are fixed by #37204.
1 parent 13f9830 commit d702325

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

test/offsetarray.jl

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -628,3 +628,66 @@ end
628628
@test last(v, 100) !== v
629629
@test last(v, 1) == [v[end]]
630630
end
631+
632+
@testset "issue #37199: offset range indices" begin
633+
# https://github.com/JuliaArrays/OffsetArrays.jl/issues/133
634+
A0 = [1 3; 2 4]
635+
A = OffsetArray(A0, (-1,2))
636+
637+
r = OffsetArrays.IdOffsetRange(1:2, -1)
638+
v1 = view(A, r, 3)
639+
@test v1[0] == 1
640+
@test v1[1] == 2
641+
@test axes(v1, 1) == axes(r, 1)
642+
v2 = view(A, UnitRange(r), 3)
643+
for (indflat, indoffset) in enumerate(r)
644+
@test v1[indoffset] == v2[indflat]
645+
end
646+
647+
r = OffsetArrays.IdOffsetRange(1:2, 2)
648+
v1 = view(A, 1, r)
649+
@test v1[3] == 2
650+
@test v1[4] == 4
651+
@test axes(v1, 1) == axes(r, 1)
652+
v2 = view(A, 1, UnitRange(r))
653+
for (indflat, indoffset) in enumerate(r)
654+
@test v1[indoffset] == v2[indflat]
655+
end
656+
657+
a12 = zeros(3:8, 3:4)
658+
r = OffsetArrays.IdOffsetRange(Base.OneTo(3), 5)
659+
a12[r, 4] .= 3
660+
@test all(a12[r, 4] .== 3)
661+
@test all(a12[UnitRange(r), 4] .== 3)
662+
663+
# https://github.com/JuliaArrays/OffsetArrays.jl/issues/100
664+
S = view(A, axes(A)...)
665+
@test S == A
666+
@test S[0,3] == S[1] == 1
667+
@test S[1,3] == S[2] == 2
668+
@test S[0,4] == S[3] == 3
669+
@test S[1,4] == S[4] == 4
670+
@test_throws BoundsError S[1,1]
671+
@test axes(S) == OffsetArrays.IdOffsetRange.((0:1, 3:4))
672+
S = view(A, axes(A, 1), 3)
673+
@test S == A[:, 3]
674+
@test S[0] == 1
675+
@test S[1] == 2
676+
@test_throws BoundsError S[length(S)]
677+
@test axes(S) == (OffsetArrays.IdOffsetRange(0:1), )
678+
S = view(A, 1, axes(A, 2))
679+
@test S == A[1, :]
680+
@test S[3] == 2
681+
@test S[4] == 4
682+
@test_throws BoundsError S[1]
683+
@test axes(S) == (OffsetArrays.IdOffsetRange(3:4), )
684+
685+
A0 = collect(reshape(1:24, 2, 3, 4))
686+
A = OffsetArray(A0, (-1,2,1))
687+
S = view(A, axes(A, 1), 3:4, axes(A, 3))
688+
@test S == A[:, 3:4, :]
689+
@test S[0, 1, 2] == A[0, 3, 2]
690+
@test S[0, 2, 2] == A[0, 4, 2]
691+
@test S[1, 1, 2] == A[1, 3, 2]
692+
@test axes(S) == (OffsetArrays.IdOffsetRange(0:1), Base.OneTo(2), OffsetArrays.IdOffsetRange(2:5))
693+
end

0 commit comments

Comments
 (0)