@@ -2702,6 +2702,56 @@ end
2702
2702
@test repr (B) == " OneElement(2, (1, 2), (Base.IdentityUnitRange(1:1), Base.IdentityUnitRange(2:2)))"
2703
2703
end
2704
2704
2705
+ @testset " sum" begin
2706
+ @testset " OneElement($v , $ind , $sz )" for (v, ind, sz) in (
2707
+ (Int8 (2 ), 3 , 4 ),
2708
+ (3.0 , 5 , 4 ),
2709
+ (3.0 , 0 , 0 ),
2710
+ (SMatrix {2,2} (1 : 4 ), (4 , 2 ), (12 ,6 )),
2711
+ )
2712
+ O = OneElement (v,ind,sz)
2713
+ A = Array (O)
2714
+ if VERSION >= v " 1.10"
2715
+ @test @inferred (sum (O)) === sum (A)
2716
+ else
2717
+ @test @inferred (sum (O)) == sum (A)
2718
+ end
2719
+ @test @inferred (sum (O, init= zero (eltype (O)))) === sum (A, init= zero (eltype (O)))
2720
+ @test @inferred (sum (x-> 1 , O, init= 0 )) === sum (Fill (1 , axes (O)), init= 0 )
2721
+ end
2722
+
2723
+ @testset for O in (OneElement (Int8 (2 ), (1 ,2 ), (2 ,4 )),
2724
+ OneElement (3 , (1 ,2 ,3 ), (2 ,4 ,4 )),
2725
+ OneElement (2.0 , (3 ,2 ,5 ), (2 ,3 ,2 )),
2726
+ OneElement (SMatrix {2,2} (1 : 4 ), (1 ,2 ), (2 ,4 )),
2727
+ )
2728
+ A = Array (O)
2729
+ init = sum ((zero (FillArrays. getindex_value (O)),))
2730
+ for i in 1 : 3
2731
+ @test @inferred (sum (O, dims= i)) == sum (A, dims= i)
2732
+ @test @inferred (sum (O, dims= i, init= init)) == sum (A, dims= i, init= init)
2733
+ @test @inferred (sum (x-> 1 , O, dims= i, init= 0 )) == sum (Fill (1 , axes (O)), dims= i, init= 0 )
2734
+ end
2735
+ @test @inferred (sum (O, dims= 1 : 1 )) == sum (A, dims= 1 : 1 )
2736
+ @test @inferred (sum (O, dims= 1 : 2 )) == sum (A, dims= 1 : 2 )
2737
+ @test @inferred (sum (O, dims= 1 : 3 )) == sum (A, dims= 1 : 3 )
2738
+ @test @inferred (sum (O, dims= (1 ,))) == sum (A, dims= (1 ,))
2739
+ @test @inferred (sum (O, dims= (1 ,2 ))) == sum (A, dims= (1 ,2 ))
2740
+ @test @inferred (sum (O, dims= (1 ,3 ))) == sum (A, dims= (1 ,3 ))
2741
+ @test @inferred (sum (O, dims= (2 ,3 ))) == sum (A, dims= (2 ,3 ))
2742
+ @test @inferred (sum (O, dims= (1 ,2 ,3 ))) == sum (A, dims= (1 ,2 ,3 ))
2743
+ @test @inferred (sum (O, dims= 1 : 1 , init= init)) == sum (A, dims= 1 : 1 , init= init)
2744
+ @test @inferred (sum (O, dims= 1 : 2 , init= init)) == sum (A, dims= 1 : 2 , init= init)
2745
+ @test @inferred (sum (O, dims= 1 : 3 , init= init)) == sum (A, dims= 1 : 3 , init= init)
2746
+ @test @inferred (sum (O, dims= (1 ,), init= init)) == sum (A, dims= (1 ,), init= init)
2747
+ @test @inferred (sum (O, dims= (1 ,2 ), init= init)) == sum (A, dims= (1 ,2 ), init= init)
2748
+ @test @inferred (sum (O, dims= (1 ,3 ), init= init)) == sum (A, dims= (1 ,3 ), init= init)
2749
+ @test @inferred (sum (O, dims= (2 ,3 ), init= init)) == sum (A, dims= (2 ,3 ), init= init)
2750
+ @test @inferred (sum (O, dims= (1 ,2 ,3 ), init= init)) == sum (A, dims= (1 ,2 ,3 ), init= init)
2751
+ @test @inferred (sum (x-> 1 , O, dims= (1 ,2 ,3 ), init= 0 )) == sum (Fill (1 , axes (O)), dims= (1 ,2 ,3 ), init= 0 )
2752
+ end
2753
+ end
2754
+
2705
2755
@testset " diag" begin
2706
2756
@testset for sz in [(0 ,0 ), (0 ,1 ), (1 ,0 ), (1 ,1 ), (4 ,4 ), (4 ,6 ), (6 ,3 )], ind in CartesianIndices (sz)
2707
2757
O = OneElement (4 , Tuple (ind), sz)
0 commit comments