@@ -165,6 +165,70 @@ import FillArrays: AbstractFill, RectDiagonal, SquareEye
165
165
end
166
166
end
167
167
168
+ @testset " indexing" begin
169
+ A = Fill (3.0 ,5 )
170
+ @test A[1 : 3 ] ≡ Fill (3.0 ,3 )
171
+ @test A[1 : 3 ,1 : 1 ] ≡ Fill (3.0 ,3 ,1 )
172
+ @test_throws BoundsError A[1 : 3 ,2 ]
173
+ @test_throws BoundsError A[1 : 26 ]
174
+ @test A[[true , false , true , false , false ]] ≡ Fill (3.0 , 2 )
175
+ A = Fill (3.0 , 2 , 2 )
176
+ @test A[[true true ; true false ]] ≡ Fill (3.0 , 3 )
177
+ @test_throws DimensionMismatch A[[true , false ]]
178
+
179
+ A = Ones {Int} (5 ,5 )
180
+ @test A[1 : 3 ] ≡ Ones {Int} (3 )
181
+ @test A[1 : 3 ,1 : 2 ] ≡ Ones {Int} (3 ,2 )
182
+ @test A[1 : 3 ,2 ] ≡ Ones {Int} (3 )
183
+ @test_throws BoundsError A[1 : 26 ]
184
+ A = Ones {Int} (2 ,2 )
185
+ @test A[[true false ; true false ]] ≡ Ones {Int} (2 )
186
+ @test A[[true , false , true , false ]] ≡ Ones {Int} (2 )
187
+ @test_throws DimensionMismatch A[[true false false ; true false false ]]
188
+
189
+ A = Zeros {Int} (5 ,5 )
190
+ @test A[1 : 3 ] ≡ Zeros {Int} (3 )
191
+ @test A[1 : 3 ,1 : 2 ] ≡ Zeros {Int} (3 ,2 )
192
+ @test A[1 : 3 ,2 ] ≡ Zeros {Int} (3 )
193
+ @test_throws BoundsError A[1 : 26 ]
194
+ A = Zeros {Int} (2 ,2 )
195
+ @test A[[true false ; true false ]] ≡ Zeros {Int} (2 )
196
+ @test A[[true , false , true , false ]] ≡ Zeros {Int} (2 )
197
+ @test_throws DimensionMismatch A[[true false false ; true false false ]]
198
+
199
+ @testset " colon" begin
200
+ @test Ones (2 )[:] ≡ Ones (2 )[Base. Slice (Base. OneTo (2 ))] ≡ Ones (2 )
201
+ @test Zeros (2 )[:] ≡ Zeros (2 )[Base. Slice (Base. OneTo (2 ))] ≡ Zeros (2 )
202
+ @test Fill (3.0 ,2 )[:] ≡ Fill (3.0 ,2 )[Base. Slice (Base. OneTo (2 ))] ≡ Fill (3.0 ,2 )
203
+
204
+ @test Ones (2 ,2 )[:,:] ≡ Ones (2 ,2 )[Base. Slice (Base. OneTo (2 )),Base. Slice (Base. OneTo (2 ))] ≡ Ones (2 ,2 )
205
+ @test Zeros (2 ,2 )[:,:] ≡ Zeros (2 )[Base. Slice (Base. OneTo (2 )),Base. Slice (Base. OneTo (2 ))] ≡ Zeros (2 ,2 )
206
+ @test Fill (3.0 ,2 ,2 )[:,:] ≡ Fill (3.0 ,2 ,2 )[Base. Slice (Base. OneTo (2 )),Base. Slice (Base. OneTo (2 ))] ≡ Fill (3.0 ,2 ,2 )
207
+ end
208
+
209
+ @testset " mixed integer / vector /colon" begin
210
+ a = Fill (2.0 ,5 )
211
+ z = Zeros (5 )
212
+ @test a[1 : 5 ] ≡ a[:] ≡ a
213
+ @test z[1 : 5 ] ≡ z[:] ≡ z
214
+
215
+ A = Fill (2.0 ,5 ,6 )
216
+ Z = Zeros (5 ,6 )
217
+ @test A[:,1 ] ≡ A[1 : 5 ,1 ] ≡ Fill (2.0 ,5 )
218
+ @test A[1 ,:] ≡ A[1 ,1 : 6 ] ≡ Fill (2.0 ,6 )
219
+ @test A[:,:] ≡ A[1 : 5 ,1 : 6 ] ≡ A[1 : 5 ,:] ≡ A[:,1 : 6 ] ≡ A
220
+ @test Z[:,1 ] ≡ Z[1 : 5 ,1 ] ≡ Zeros (5 )
221
+ @test Z[1 ,:] ≡ Z[1 ,1 : 6 ] ≡ Zeros (6 )
222
+ @test Z[:,:] ≡ Z[1 : 5 ,1 : 6 ] ≡ Z[1 : 5 ,:] ≡ Z[:,1 : 6 ] ≡ Z
223
+
224
+ A = Fill (2.0 ,5 ,6 ,7 )
225
+ Z = Zeros (5 ,6 ,7 )
226
+ @test A[:,1 ,1 ] ≡ A[1 : 5 ,1 ,1 ] ≡ Fill (2.0 ,5 )
227
+ @test A[1 ,:,1 ] ≡ A[1 ,1 : 6 ,1 ] ≡ Fill (2.0 ,6 )
228
+ @test A[:,:,:] ≡ A[1 : 5 ,1 : 6 ,1 : 7 ] ≡ A[1 : 5 ,:,1 : 7 ] ≡ A[:,1 : 6 ,1 : 7 ] ≡ A
229
+ end
230
+ end
231
+
168
232
@testset " RectDiagonal" begin
169
233
data = 1 : 3
170
234
expected_size = (5 , 3 )
542
606
@testset " range broadcast" begin
543
607
rnge = range (- 5.0 , step= 1.0 , length= 10 )
544
608
@test broadcast (* , Fill (5.0 , 10 ), rnge) == broadcast (* , 5.0 , rnge)
545
- @test broadcast (* , Zeros (10 , 10 ), rnge) == zeros (10 , 10 )
546
- @test broadcast (* , rnge, Zeros (10 , 10 )) == zeros (10 , 10 )
609
+ @test broadcast (* , Zeros (10 , 10 ), rnge) ≡ Zeros {Float64} (10 , 10 )
610
+ @test broadcast (* , rnge, Zeros (10 , 10 )) ≡ Zeros {Float64} (10 , 10 )
547
611
@test broadcast (* , Ones {Int} (10 ), rnge) ≡ rnge
548
612
@test broadcast (* , rnge, Ones {Int} (10 )) ≡ rnge
549
613
@test_throws DimensionMismatch broadcast (* , Fill (5.0 , 11 ), rnge)
554
618
deg = 5 : 5
555
619
@test_throws ArgumentError @inferred (broadcast (* , Fill (5.0 , 10 ), deg)) == broadcast (* , fill (5.0 ,10 ), deg)
556
620
@test_throws ArgumentError @inferred (broadcast (* , deg, Fill (5.0 , 10 ))) == broadcast (* , deg, fill (5.0 ,10 ))
621
+
622
+ @test rnge .+ Zeros (10 ) ≡ rnge .- Zeros (10 ) ≡ Zeros (10 ) .+ rnge ≡ rnge
623
+
624
+ @test_throws DimensionMismatch rnge .+ Zeros (5 )
625
+ @test_throws DimensionMismatch rnge .- Zeros (5 )
626
+ @test_throws DimensionMismatch Zeros (5 ) .+ rnge
557
627
end
558
628
559
629
@testset " Special Zeros/Ones" begin
598
668
@test Zeros (5 ) ./ Zeros (5 ) ≡ Zeros (5 ) .\ Zeros (5 ) ≡ Fill (NaN ,5 )
599
669
@test Zeros {Int} (5 ,6 ) ./ Zeros {Int} (5 ) ≡ Zeros {Int} (5 ) .\ Zeros {Int} (5 ,6 ) ≡ Fill (NaN ,5 ,6 )
600
670
end
671
+
672
+ @testset " Addition" begin
673
+ @test Zeros {Int} (5 ) .+ (1 : 5 ) ≡ (1 : 5 ) .+ Zeros {Int} (5 ) ≡ (1 : 5 ) .- Zeros {Int} (5 ) ≡ 1 : 5
674
+ @test Zeros {Int} (1 ) .+ (1 : 5 ) ≡ (1 : 5 ) .+ Zeros {Int} (1 ) ≡ (1 : 5 ) .- Zeros {Int} (1 ) ≡ 1 : 5
675
+ @test Zeros (5 ) .+ (1 : 5 ) == (1 : 5 ) .+ Zeros (5 ) == (1 : 5 ) .- Zeros (5 ) == 1 : 5
676
+ @test Zeros {Int} (5 ) .+ Fill (1 ,5 ) ≡ Fill (1 ,5 ) .+ Zeros {Int} (5 ) ≡ Fill (1 ,5 ) .- Zeros {Int} (5 ) ≡ Fill (1 ,5 )
677
+ @test_throws DimensionMismatch Zeros {Int} (2 ) .+ (1 : 5 )
678
+ @test_throws DimensionMismatch (1 : 5 ) .+ Zeros {Int} (2 )
679
+ end
601
680
end
602
681
603
682
@testset " support Ref" begin
625
704
@test Ones (10 ) - Ones (10 ) ≡ Zeros (10 )
626
705
@test Fill (1 ,10 ) - Zeros (10 ) ≡ Fill (1.0 ,10 )
627
706
707
+ @test Zeros (10 ) .- Zeros (10 ) ≡ Zeros (10 )
708
+ @test Ones (10 ) .- Zeros (10 ) ≡ Ones (10 )
709
+ @test Ones (10 ) .- Ones (10 ) ≡ Zeros (10 )
710
+ @test Fill (1 ,10 ) .- Zeros (10 ) ≡ Fill (1.0 ,10 )
711
+
628
712
@test Zeros (10 ) .- Zeros (1 ,9 ) ≡ Zeros (10 ,9 )
629
713
@test Ones (10 ) .- Zeros (1 ,9 ) ≡ Ones (10 ,9 )
630
714
@test Ones (10 ) .- Ones (1 ,9 ) ≡ Zeros (10 ,9 )
652
736
@test map (exp,x) === Fill (exp (2 ),5 ,3 )
653
737
end
654
738
655
- @testset " Sub-arrays" begin
656
- A = Fill (3.0 ,5 )
657
- @test A[1 : 3 ] ≡ Fill (3.0 ,3 )
658
- @test A[1 : 3 ,1 : 1 ] ≡ Fill (3.0 ,3 ,1 )
659
- @test_broken A[1 : 3 ,2 ] ≡ Zeros {Int} (3 )
660
- @test_throws BoundsError A[1 : 26 ]
661
- @test A[[true , false , true , false , false ]] ≡ Fill (3.0 , 2 )
662
- A = Fill (3.0 , 2 , 2 )
663
- @test A[[true true ; true false ]] ≡ Fill (3.0 , 3 )
664
- @test_throws DimensionMismatch A[[true , false ]]
665
-
666
- A = Ones {Int} (5 ,5 )
667
- @test A[1 : 3 ] ≡ Ones {Int} (3 )
668
- @test A[1 : 3 ,1 : 2 ] ≡ Ones {Int} (3 ,2 )
669
- @test_broken A[1 : 3 ,2 ] ≡ Ones {Int} (3 )
670
- @test_throws BoundsError A[1 : 26 ]
671
- A = Ones {Int} (2 ,2 )
672
- @test A[[true false ; true false ]] ≡ Ones {Int} (2 )
673
- @test A[[true , false , true , false ]] ≡ Ones {Int} (2 )
674
- @test_throws DimensionMismatch A[[true false false ; true false false ]]
675
-
676
- A = Zeros {Int} (5 ,5 )
677
- @test A[1 : 3 ] ≡ Zeros {Int} (3 )
678
- @test A[1 : 3 ,1 : 2 ] ≡ Zeros {Int} (3 ,2 )
679
- @test_broken A[1 : 3 ,2 ] ≡ Zeros {Int} (3 )
680
- @test_throws BoundsError A[1 : 26 ]
681
- A = Zeros {Int} (2 ,2 )
682
- @test A[[true false ; true false ]] ≡ Zeros {Int} (2 )
683
- @test A[[true , false , true , false ]] ≡ Zeros {Int} (2 )
684
- @test_throws DimensionMismatch A[[true false false ; true false false ]]
685
-
686
- @testset " colon" begin
687
- @test Ones (2 )[:] ≡ Ones (2 )[Base. Slice (Base. OneTo (2 ))] ≡ Ones (2 )
688
- @test Zeros (2 )[:] ≡ Zeros (2 )[Base. Slice (Base. OneTo (2 ))] ≡ Zeros (2 )
689
- @test Fill (3.0 ,2 )[:] ≡ Fill (3.0 ,2 )[Base. Slice (Base. OneTo (2 ))] ≡ Fill (3.0 ,2 )
690
-
691
- @test Ones (2 ,2 )[:,:] ≡ Ones (2 ,2 )[Base. Slice (Base. OneTo (2 )),Base. Slice (Base. OneTo (2 ))] ≡ Ones (2 ,2 )
692
- @test Zeros (2 ,2 )[:,:] ≡ Zeros (2 )[Base. Slice (Base. OneTo (2 )),Base. Slice (Base. OneTo (2 ))] ≡ Zeros (2 ,2 )
693
- @test Fill (3.0 ,2 ,2 )[:,:] ≡ Fill (3.0 ,2 ,2 )[Base. Slice (Base. OneTo (2 )),Base. Slice (Base. OneTo (2 ))] ≡ Fill (3.0 ,2 ,2 )
694
- end
695
- end
696
-
697
739
@testset " Offset indexing" begin
698
740
A = Fill (3 , (Base. Slice (- 1 : 1 ),))
699
741
@test axes (A) == (Base. Slice (- 1 : 1 ),)
0 commit comments