817
817
r2 = r1[:]
818
818
@test r2 == r1
819
819
820
- for r1 in [
820
+ for r1 in Any [
821
821
# AbstractArrays
822
822
OffsetArray (10 : 1000 , 0 ), # 1-based index
823
823
OffsetArray (10 : 3 : 1000 , 3 ), # offset index
829
829
OffsetArray (IdOffsetRange (IdOffsetRange (10 : 1000 , - 1 ), 1 ), 3 ), # offset index
830
830
831
831
# AbstractRanges
832
- 1 : 1000 ,
833
- 1 : 3 : 1000 ,
832
+ 1 : 1000 ,
833
+ UnitRange (1.0 , 1000.0 ),
834
+ 1 : 3 : 1000 ,
834
835
1.0 : 3.0 : 1000.0 ,
836
+ StepRangeLen (Float64 (1 ), Float64 (1000 ), 1000 ),
837
+ LinRange (1 , 1000 , 1000 ),
835
838
IdOffsetRange (ZeroBasedUnitRange (1 : 1000 ), 1 ), # 1-based index
836
839
IdOffsetRange (ZeroBasedUnitRange (1 : 1000 ), 2 ), # offset index
837
840
ZeroBasedUnitRange (1 : 1000 ), # offset range
@@ -840,27 +843,52 @@ end
840
843
]
841
844
842
845
# AbstractArrays with 1-based indices
843
- for r2 in [
844
- OffsetArray (5 : 80 , 0 ),
845
- OffsetArray (5 : 2 : 80 , 0 ),
846
- OffsetArray (IdentityUnitRange (5 : 80 ), - 4 ),
846
+ for r2 in Any [
847
+ OffsetArray (5 : 80 , 0 ),
848
+ OffsetArray (5 : 2 : 80 , 0 ),
849
+ OffsetArray (IdentityUnitRange (5 : 80 ), - 4 ),
847
850
OffsetArray (IdOffsetRange (5 : 80 ), 0 ),
848
851
]
849
852
850
853
test_indexing_axes_and_vals (r1, r2)
851
854
end
852
855
853
856
# AbstractRanges with 1-based indices
854
- for r2 in [
855
- 5 : 80 ,
856
- 5 : 2 : 80 ,
857
- IdOffsetRange (5 : 80 ),
857
+ for r2 in Any [
858
+ 5 : 80 ,
859
+ 5 : 2 : 80 ,
860
+ IdOffsetRange (5 : 80 ),
858
861
IdOffsetRange (ZeroBasedUnitRange (4 : 79 ), 1 ),
859
862
]
860
863
861
864
test_indexing_axes_and_vals (r1, r2)
862
865
end
863
866
end
867
+
868
+ # Indexing with IdentityUnitRange(::Base.OneTo) or Base.Slice(::OneTo) is special.
869
+ # This is because axes(::IdentityUnitRange{<:Base.OneTo}, 1) isa Base.OneTo, and not an IdentityUnitRange.
870
+ # These therefore may pass through no_offset_view unchanged.
871
+ # This had led to a stack-overflow in indexing, as getindex was using no_offset_view.
872
+ # Issue 209
873
+ for r1 in Any[
874
+ # This set of tests is for ranges r1 that have 1-based indices
875
+ UnitRange (1.0 , 99.0 ),
876
+ 1 : 99 ,
877
+ 1 : 1 : 99 ,
878
+ 1.0 : 1.0 : 99.0 ,
879
+ StepRangeLen (Float64 (1 ), Float64 (99 ), 99 ),
880
+ LinRange (1 , 99 , 99 ),
881
+ ]
882
+
883
+ for r2 in Any[
884
+ IdentityUnitRange (Base. OneTo (10 )),
885
+ Base. Slice (Base. OneTo (10 )),
886
+ IdOffsetRange (Base. OneTo (10 )),
887
+ ]
888
+
889
+ test_indexing_axes_and_vals (r1, r2)
890
+ end
891
+ end
864
892
end
865
893
866
894
@testset " Vector indexing with offset ranges" begin
887
915
@test a[ax[i]] == a[ax][i]
888
916
end
889
917
890
- for r1 in [
918
+ for r1 in Any [
891
919
# AbstractArrays
892
920
OffsetArray (10 : 1000 , 0 ), # 1-based index
893
921
OffsetArray (10 : 1000 , 3 ), # offset index
902
930
903
931
# AbstractRanges
904
932
1 : 1000 ,
933
+ UnitRange (1.0 , 1000.0 ),
905
934
1 : 2 : 2000 ,
906
935
1.0 : 2.0 : 2000.0 ,
936
+ StepRangeLen (Float64 (1 ), Float64 (1000 ), 1000 ),
907
937
LinRange (1.0 , 2000.0 , 2000 ),
908
938
IdOffsetRange (1 : 1000 , 0 ), # 1-based index
909
939
IdOffsetRange (ZeroBasedUnitRange (1 : 1000 ), 1 ), # 1-based index
916
946
]
917
947
918
948
# AbstractArrays with offset axes
919
- for r2 in [OffsetArray (5 : 80 , 40 ), OffsetArray (5 : 2 : 80 , 40 ),
920
- OffsetArray (IdentityUnitRange (5 : 80 ), 2 ),
921
- OffsetArray (IdOffsetRange (5 : 80 , 1 ), 3 ),
949
+ for r2 in Any[OffsetArray (5 : 80 , 40 ),
950
+ OffsetArray (5 : 2 : 80 , 40 ),
951
+ OffsetArray (IdentityUnitRange (5 : 80 ), 2 ),
952
+ OffsetArray (IdOffsetRange (5 : 80 , 1 ), 3 ),
922
953
OffsetArray (IdOffsetRange (IdOffsetRange (5 : 80 , 4 ), 1 ), 3 ),
923
954
OffsetArray (IdOffsetRange (IdentityUnitRange (5 : 80 ), 1 ), 3 ),
924
955
OffsetArray (IdentityUnitRange (IdOffsetRange (5 : 80 , 1 )), 3 ),
@@ -928,11 +959,12 @@ end
928
959
end
929
960
930
961
# AbstractRanges with offset axes
931
- for r2 in [IdOffsetRange (5 : 80 , 1 ),
962
+ for r2 in Any [IdOffsetRange (5 : 80 , 1 ),
932
963
IdentityUnitRange (5 : 80 ),
933
- IdOffsetRange (IdOffsetRange (5 : 80 , 2 ), 1 ),
964
+ IdOffsetRange (Base. OneTo (9 ), 4 ),
965
+ IdOffsetRange (IdOffsetRange (5 : 80 , 2 ), 1 ),
934
966
IdOffsetRange (IdOffsetRange (IdOffsetRange (5 : 80 , - 1 ), 2 ), 1 ),
935
- IdentityUnitRange (IdOffsetRange (1 : 10 , 5 )),
967
+ IdentityUnitRange (IdOffsetRange (1 : 10 , 5 )),
936
968
IdOffsetRange (IdentityUnitRange (15 : 20 ), - 2 ),
937
969
ZeroBasedUnitRange (5 : 80 ),
938
970
ZeroBasedRange (5 : 80 ),
@@ -1189,7 +1221,7 @@ end
1189
1221
@test String (take! (io)) == " 3:5 with indices 0:2"
1190
1222
1191
1223
# issue #198
1192
- for r in [axes (OffsetVector (1 : 10 , - 5 ), 1 ), 1 : 1 : 2 , 1.0 : 1.0 : 2.0 , 1 : - 1 : - 5 ]
1224
+ for r in Any [axes (OffsetVector (1 : 10 , - 5 ), 1 ), 1 : 1 : 2 , 1.0 : 1.0 : 2.0 , 1 : - 1 : - 5 ]
1193
1225
a = OffsetVector (r, 5 )
1194
1226
show (io, a)
1195
1227
@test String (take! (io)) == " $r with indices $(UnitRange (axes (a,1 ))) "
0 commit comments