diff --git a/src/quasifill.jl b/src/quasifill.jl index e3ae193..e4b5f84 100644 --- a/src/quasifill.jl +++ b/src/quasifill.jl @@ -261,9 +261,9 @@ sum(x::AbstractQuasiFill) = getindex_value(x)*measure(axes(x,1)) sum(x::QuasiZeros) = getindex_value(x) # define `sum(::Callable, ::AbstractQuasiFill)` to avoid method ambiguity errors on Julia 1.0 -sum(f, x::AbstractQuasiFill) = _sum(f, x) -sum(f::Base.Callable, x::AbstractQuasiFill) = _sum(f, x) -_sum(f, x::AbstractQuasiFill) = measure(x) * f(getindex_value(x)) +sum(f, x::AbstractQuasiFill) = _sum(f, x, :) +sum(f::Base.Callable, x::AbstractQuasiFill) = _sum(f, x, :) +_sum(f, x::AbstractQuasiFill, ::Colon) = measure(x) * f(getindex_value(x)) ######### diff --git a/test/test_quasifill.jl b/test/test_quasifill.jl index f50ad5f..30325c4 100644 --- a/test/test_quasifill.jl +++ b/test/test_quasifill.jl @@ -370,10 +370,12 @@ import QuasiArrays: AbstractQuasiFill @test zero(QuasiFill(0.5, ax, ax)) == QuasiZeros(ax,ax) end - @testset "maximum/minimum/svd/sort" begin + @testset "maximum/minimum/sort/sum" begin ax = [1,3,4] @test maximum(QuasiFill(1, ax)) == minimum(QuasiFill(1, ax)) == 1 @test sort(QuasiOnes(ax)) == sort!(QuasiOnes(ax)) + @test sum(QuasiFill(1, ax)) == sum(QuasiOnes(ax)) == 3 + @test sum(exp, QuasiFill(0, ax)) == sum(exp, QuasiZeros(ax)) == 3 end