Skip to content

Commit ece937d

Browse files
committed
Add some tests for ArrayOfSimilarArrays
1 parent 61efbcd commit ece937d

File tree

2 files changed

+115
-0
lines changed

2 files changed

+115
-0
lines changed

test/array_of_similar_arrays.jl

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# This file is a part of ArraysOfArrays.jl, licensed under the MIT License (MIT).
2+
3+
using ArraysOfArrays
4+
using ElasticArrays
5+
using UnsafeArrays
6+
using Compat
7+
using Compat.Test
8+
using Compat.Random
9+
10+
11+
@testset "array_of_similar_arrays" begin
12+
function rand_flat_array(Val_N::Val{N}) where {N}
13+
sz_max = (2,3,2,4,5)
14+
sz = ntuple(i -> sz_max[i], Val_N)
15+
x = rand(sz...)
16+
end
17+
18+
19+
function rand_nested_similar_arrays(Val_M::Val{M}, Val_N::Val{N}) where {M,N}
20+
sz_max = (2,3,2,4,5)
21+
sz_inner = ntuple(i -> sz_max[i], Val_M)
22+
sz_outer = ntuple(i -> sz_max[i + M], Val_N)
23+
24+
A = Array{Array{Float64, M}, N}(uninitialized, sz_outer...)
25+
for i in eachindex(A)
26+
A[i] = rand(sz_inner...)
27+
end
28+
A
29+
end
30+
31+
32+
@inline function test_from_flat(::Type{TT}, ::Type{RT}, Val_L::Val{L}) where {
33+
TT<:ArrayOfSimilarArrays,
34+
RT<:ArrayOfSimilarArrays,
35+
L
36+
}
37+
@testset "$TT from Array{Float64,$L}" begin
38+
A = rand_flat_array(Val_L)
39+
@test typeof(@inferred TT(A)) == RT
40+
@test typeof(@inferred convert(TT, A)) == RT
41+
end
42+
end
43+
44+
45+
@inline function test_from_nested(::Type{TT}, ::Type{RT}, Val_M::Val{M}, Val_N::Val{N}) where {
46+
TT<:ArrayOfSimilarArrays,
47+
RT<:ArrayOfSimilarArrays,
48+
M, N
49+
}
50+
@testset "$TT from Array{Array{Float64,$M},$N}" begin
51+
A = rand_nested_similar_arrays(Val_M, Val_N)
52+
53+
A2_ctor = @inferred TT(A)
54+
U = eltype(parent(A2_ctor))
55+
56+
A_U = Array{Array{U,M},N}(A)
57+
58+
@test typeof(A2_ctor) == RT
59+
@test A2_ctor == A_U
60+
61+
A2_conv = @inferred convert(TT, A)
62+
@test typeof(A2_conv) == RT
63+
@test A2_conv == A2_ctor
64+
65+
U = eltype(parent(A2_ctor))
66+
A3 = @inferred Array(A2_ctor)
67+
@test typeof(A3) == Array{Array{U,M},N}
68+
@test A3 == A_U
69+
end
70+
end
71+
72+
73+
@testset "construct/convert from flat array" begin
74+
test_from_flat(ArrayOfSimilarArrays{Float64,2}, ArrayOfSimilarArrays{Float64,2,3,5,Array{Float64,5}}, Val(5))
75+
test_from_flat(ArrayOfSimilarVectors{Float64}, ArrayOfSimilarVectors{Float64,2,3,Array{Float64,3}}, Val(3))
76+
test_from_flat(VectorOfSimilarArrays{Float64}, VectorOfSimilarArrays{Float64,2,3,Array{Float64,3}}, Val(3))
77+
test_from_flat(VectorOfSimilarVectors{Float64}, VectorOfSimilarVectors{Float64,Array{Float64,2}}, Val(2))
78+
test_from_flat(VectorOfSimilarVectors, VectorOfSimilarVectors{Float64,Array{Float64,2}}, Val(2))
79+
80+
test_from_flat(ArrayOfSimilarArrays{Float32,2}, ArrayOfSimilarArrays{Float32,2,3,5,Array{Float32,5}}, Val(5))
81+
test_from_flat(ArrayOfSimilarVectors{Float32}, ArrayOfSimilarVectors{Float32,2,3,Array{Float32,3}}, Val(3))
82+
test_from_flat(VectorOfSimilarArrays{Float32}, VectorOfSimilarArrays{Float32,2,3,Array{Float32,3}}, Val(3))
83+
test_from_flat(VectorOfSimilarVectors{Float32}, VectorOfSimilarVectors{Float32,Array{Float32,2}}, Val(2))
84+
test_from_flat(VectorOfSimilarVectors{Float32}, VectorOfSimilarVectors{Float32,Array{Float32,2}}, Val(2))
85+
end
86+
87+
@testset "construct/convert from nested arrays" begin
88+
test_from_nested(ArrayOfSimilarArrays, ArrayOfSimilarArrays{Float64,2,3,5,Array{Float64,5}}, Val(2), Val(3))
89+
test_from_nested(ArrayOfSimilarArrays{Float64,2,3}, ArrayOfSimilarArrays{Float64,2,3,5,Array{Float64,5}}, Val(2), Val(3))
90+
test_from_nested(ArrayOfSimilarArrays{Float64}, ArrayOfSimilarArrays{Float64,2,3,5,Array{Float64,5}}, Val(2), Val(3))
91+
test_from_nested(ArrayOfSimilarArrays{Float32}, ArrayOfSimilarArrays{Float32,2,3,5,Array{Float32,5}}, Val(2), Val(3))
92+
93+
test_from_nested(ArrayOfSimilarArrays, VectorOfSimilarArrays{Float64,4,5,Array{Float64,5}}, Val(4), Val(1))
94+
test_from_nested(ArrayOfSimilarArrays, ArrayOfSimilarVectors{Float64,4,5,Array{Float64,5}}, Val(1), Val(4))
95+
test_from_nested(ArrayOfSimilarArrays, VectorOfSimilarVectors{Float64,Array{Float64,2}}, Val(1), Val(1))
96+
97+
test_from_nested(VectorOfSimilarArrays{Float64,4}, VectorOfSimilarArrays{Float64,4,5,Array{Float64,5}}, Val(4), Val(1))
98+
test_from_nested(VectorOfSimilarArrays{Float64}, VectorOfSimilarArrays{Float64,4,5,Array{Float64,5}}, Val(4), Val(1))
99+
test_from_nested(VectorOfSimilarArrays{Float32}, VectorOfSimilarArrays{Float32,4,5,Array{Float32,5}}, Val(4), Val(1))
100+
test_from_nested(VectorOfSimilarArrays, VectorOfSimilarArrays{Float64,4,5,Array{Float64,5}}, Val(4), Val(1))
101+
102+
test_from_nested(ArrayOfSimilarVectors{Float64,4}, ArrayOfSimilarVectors{Float64,4,5,Array{Float64,5}}, Val(1), Val(4))
103+
test_from_nested(ArrayOfSimilarVectors{Float64}, ArrayOfSimilarVectors{Float64,4,5,Array{Float64,5}}, Val(1), Val(4))
104+
test_from_nested(ArrayOfSimilarVectors{Float32}, ArrayOfSimilarVectors{Float32,4,5,Array{Float32,5}}, Val(1), Val(4))
105+
test_from_nested(ArrayOfSimilarVectors, ArrayOfSimilarVectors{Float64,4,5,Array{Float64,5}}, Val(1), Val(4))
106+
107+
test_from_nested(VectorOfSimilarVectors{Float64}, VectorOfSimilarVectors{Float64,Array{Float64,2}}, Val(1), Val(1))
108+
test_from_nested(VectorOfSimilarVectors{Float32}, VectorOfSimilarVectors{Float32,Array{Float32,2}}, Val(1), Val(1))
109+
test_from_nested(VectorOfSimilarVectors, VectorOfSimilarVectors{Float64,Array{Float64,2}}, Val(1), Val(1))
110+
end
111+
end
112+

test/runtests.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@
22

33
import Compat.Test
44
Test.@testset "Package ArraysOfArrays" begin
5+
6+
include("array_of_similar_arrays.jl")
7+
58
end

0 commit comments

Comments
 (0)