Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/vector_of_arrays.jl
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,10 @@ function Base.append!(A::VectorOfArrays{T,N}, B::AbstractVector{<:AbstractArray{
end


Base.mapreduce(::typeof(maximum), ::typeof(max), V::VectorOfArrays; kw...) = maximum(V.data; kw...)
Base.mapreduce(::typeof(minimum), ::typeof(min), V::VectorOfArrays; kw...) = minimum(V.data; kw...)


Base.vcat(V::VectorOfArrays) = V

function Base.vcat(Vs::(VectorOfArrays{U,N} where U)...) where {N}
Expand Down
2 changes: 1 addition & 1 deletion test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import Test

Test.@testset "Package ArraysOfArrays" begin
Test.@testset verbose=true "Package ArraysOfArrays" begin
include("test_aqua.jl")
include("functions.jl")
include("array_of_similar_arrays.jl")
Expand Down
31 changes: 31 additions & 0 deletions test/vector_of_arrays.jl
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,37 @@ using ArraysOfArrays: full_consistency_checks, append_elemptr!, element_ptr
end


@testset "mapreduce maximum/minimum shortcut" begin
A1 = ref_AoA3(Float32, 3); A2 = ref_AoA3(Float32, 0)
A3 = ref_AoA3(Float32, 4); A4 = ref_AoA3(Float64, 2)

B1 = VectorOfArrays(A1); B2 = VectorOfArrays(A2);
B3 = VectorOfArrays(A3); B4 = VectorOfArrays(A4);

@testset "maximum - correctness" begin
@test mapreduce(maximum, max, B1) == maximum(B1.data)
@test mapreduce(maximum, max, B2; init=Float32(0.)) == maximum(B2.data; init=Float32(0.))
@test mapreduce(maximum, max, B3) == maximum(B3.data)
@test mapreduce(maximum, max, B4) == maximum(B4.data)
end

@testset "maximum - performance" begin
@test (@allocated mapreduce(maximum, max, B1)) == (@allocated maximum(B1.data))
end

@testset "minimum - correctness" begin
@test mapreduce(minimum, min, B1) == minimum(B1.data)
@test mapreduce(minimum, min, B2; init=Float32(0.)) == minimum(B2.data; init=Float32(0.))
@test mapreduce(minimum, min, B3) == minimum(B3.data)
@test mapreduce(minimum, min, B4) == minimum(B4.data)
end

@testset "minimum - performance" begin
@test (@allocated mapreduce(minimum, min, B1)) == (@allocated minimum(B1.data))
end
end


@testset "append! and vcat" begin
A1 = ref_AoA3(Float32, 3); A2 = ref_AoA3(Float32, 0)
A3 = ref_AoA3(Float32, 4); A4 = ref_AoA3(Float64, 2)
Expand Down
Loading