|
1 | 1 | using DimensionalData, Test
|
2 |
| -using JLArrays |
| 2 | + |
3 | 3 | using DimensionalData: NoLookup
|
4 | 4 |
|
5 | 5 | # Tests taken from NamedDims. Thanks @oxinabox
|
6 | 6 |
|
7 | 7 | da = ones(X(3))
|
8 |
| -dajl = rebuild(da, JLArray(parent(da))); |
9 | 8 | @test Base.BroadcastStyle(typeof(da)) isa DimensionalData.DimensionalStyle
|
10 | 9 |
|
11 | 10 | @testset "standard case" begin
|
|
20 | 19 | @test da2 .* da2[:, 1:1] == [1, 4, 9, 16] * (1:2:8)'
|
21 | 20 | end
|
22 | 21 |
|
23 |
| -@testset "JLArray broadcast over length one dimension" begin |
24 |
| - da2 = DimArray(JLArray((1:4) * (1:2:8)'), (X, Y)) |
25 |
| - @test Array(da2 .* da2[:, 1:1]) == [1, 4, 9, 16] * (1:2:8)' |
26 |
| -end |
27 |
| - |
28 | 22 | @testset "in place" begin
|
29 | 23 | @test parent(da .= 1 .* da .+ 7) == 8 * ones(3)
|
30 | 24 | @test dims(da .= 1 .* da .+ 7) == dims(da)
|
31 | 25 | end
|
32 | 26 |
|
33 |
| -@testset "JLArray in place" begin |
34 |
| - @test Array(parent(dajl .= 1 .* dajl .+ 7)) == 8 * ones(3) |
35 |
| - @test dims(dajl .= 1 .* dajl .+ 7) == dims(da) |
36 |
| -end |
37 |
| - |
38 | 27 | @testset "Dimension disagreement" begin
|
39 | 28 | @test_throws DimensionMismatch begin
|
40 | 29 | DimArray(zeros(3, 3, 3), (X, Y, Z)) .+
|
41 | 30 | DimArray(ones(3, 3, 3), (Y, Z, X))
|
42 | 31 | end
|
43 | 32 | end
|
44 | 33 |
|
45 |
| -@testset "JLArray Dimension disagreement" begin |
46 |
| - @test_throws DimensionMismatch begin |
47 |
| - DimArray(JLArray(zeros(3, 3, 3)), (X, Y, Z)) .+ |
48 |
| - DimArray(JLArray(ones(3, 3, 3)), (Y, Z, X)) |
49 |
| - end |
50 |
| -end |
51 |
| - |
52 | 34 | @testset "dims and regular" begin
|
53 | 35 | da = DimArray(ones(3, 3, 3), (X, Y, Z))
|
54 | 36 | left_sum = da .+ ones(3, 3, 3)
|
|
59 | 41 | @test dims(right_sum) == dims(da)
|
60 | 42 | end
|
61 | 43 |
|
62 |
| -@testset "JLArray dims and regular" begin |
63 |
| - da = DimArray(JLArray(ones(3, 3, 3)), (X, Y, Z)) |
64 |
| - left_sum = da .+ ones(3, 3, 3) |
65 |
| - @test Array(left_sum) == fill(2, 3, 3, 3) |
66 |
| - @test dims(left_sum) == dims(da) |
67 |
| - right_sum = ones(3, 3, 3) .+ da |
68 |
| - @test Array(right_sum) == fill(2, 3, 3, 3) |
69 |
| - @test dims(right_sum) == dims(da) |
70 |
| -end |
71 |
| - |
72 | 44 | @testset "changing type" begin
|
73 | 45 | @test (da .> 0) isa DimArray
|
74 | 46 | @test (da .* da .> 0) isa DimArray
|
|
79 | 51 | @test (rand(3) .> 1 .> 0 .* da) isa DimArray
|
80 | 52 | end
|
81 | 53 |
|
82 |
| -@testset "JLArray changing type" begin |
83 |
| - @test (dajl .> 0) isa DimArray |
84 |
| - @test (dajl .* dajl .> 0) isa DimArray |
85 |
| - @test (dajl .> 0 .> rand(3)) isa DimArray |
86 |
| - @test (dajl .* rand(3) .> 0.0) isa DimArray |
87 |
| - @test (0 .> dajl .> 0 .> rand(3)) isa DimArray |
88 |
| - @test (rand(3) .> dajl .> 0 .* rand(3)) isa DimArray |
89 |
| - @test (rand(3) .> 1 .> 0 .* dajl) isa DimArray |
90 |
| -end |
91 |
| - |
92 | 54 | @testset "trailng dimensions" begin
|
93 | 55 | @test zeros(X(10), Y(5)) .* zeros(X(10), Y(1)) ==
|
94 | 56 | zeros(X(10), Y(5)) .* zeros(X(1), Y(1)) ==
|
|
117 | 79 | @test dims(s .+ v .+ m) == dims(m .+ s .+ v)
|
118 | 80 | end
|
119 | 81 |
|
120 |
| -@testset "JLArray broadcasting" begin |
121 |
| - v = DimArray(JLArray(zeros(3,)), X) |
122 |
| - m = DimArray(JLArray(ones(3, 3)), (X, Y)) |
123 |
| - s = 0 |
124 |
| - @test Array(v .+ m) == ones(3, 3) == Array(m .+ v) |
125 |
| - @test Array(s .+ m) == ones(3, 3) == Array(m .+ s) |
126 |
| - @test Array(s .+ v .+ m) == ones(3, 3) == Array(m .+ s .+ v) |
127 |
| - @test dims(v .+ m) == dims(m .+ v) |
128 |
| - @test dims(s .+ m) == dims(m .+ s) |
129 |
| - @test dims(s .+ v .+ m) == dims(m .+ s .+ v) |
130 |
| -end |
131 |
| - |
132 | 82 | @testset "adjoint broadcasting" begin
|
133 | 83 | a = DimArray(reshape(1:12, (4, 3)), (X, Y))
|
134 | 84 | b = DimArray(1:3, Y)
|
|
138 | 88 | @test dims(a .* b') == dims(a)
|
139 | 89 | end
|
140 | 90 |
|
141 |
| -@testset "JLArray adjoint broadcasting" begin |
142 |
| - a = DimArray(JLArray(reshape(1:12, (4, 3))), (X, Y)) |
143 |
| - b = DimArray(JLArray(1:3), Y) |
144 |
| - @test_throws DimensionMismatch a .* b |
145 |
| - @test_throws DimensionMismatch parent(a) .* parent(b) |
146 |
| - @test Array(parent(a) .* parent(b)') == Array(parent(a .* b')) |
147 |
| - @test dims(a .* b') == dims(a) |
148 |
| -end |
149 |
| - |
150 |
| - |
151 |
| - |
152 | 91 | @testset "Mixed array types" begin
|
153 | 92 | casts = (
|
154 | 93 | A -> DimArray(A, (X, Y)), # Named Matrix
|
@@ -182,26 +121,13 @@ end
|
182 | 121 | @test_throws DimensionMismatch ac .= ab .+ ba
|
183 | 122 |
|
184 | 123 | # check that dest is written into:
|
185 |
| - z .= ab .+ ba' |
| 124 | + @test dims(z .= ab .+ ba') == dims(ab .+ ba') |
186 | 125 | @test z == (ab.data .+ ba.data')
|
187 |
| -end |
188 | 126 |
|
189 |
| -@testset "JLArray in-place assignment .=" begin |
190 |
| - ab = DimArray(JLArray(rand(2,2)), (X, Y)) |
191 |
| - ba = DimArray(JLArray(rand(2,2)), (Y, X)) |
192 |
| - ac = DimArray(JLArray(rand(2,2)), (X, Z)) |
193 |
| - a_ = DimArray(JLArray(rand(2,2)), (X(), DimensionalData.AnonDim())) |
194 |
| - z = JLArray(zeros(2,2)) |
195 |
| - |
196 |
| - @test_throws DimensionMismatch z .= ab .+ ba |
197 |
| - @test_throws DimensionMismatch z .= ab .+ ac |
198 |
| - @test_throws DimensionMismatch a_ .= ab .+ ac |
199 |
| - @test_throws DimensionMismatch ab .= a_ .+ ac |
200 |
| - @test_throws DimensionMismatch ac .= ab .+ ba |
201 |
| - |
202 |
| - # check that dest is written into: |
203 |
| - z .= ab .+ ba' |
204 |
| - @test z == (ab.data .+ ba.data') |
| 127 | + @test dims(z .= ab .+ a_) == |
| 128 | + (X(NoLookup(Base.OneTo(2))), Y(NoLookup(Base.OneTo(2)))) |
| 129 | + @test dims(a_ .= ba' .+ ab) == |
| 130 | + (X(NoLookup(Base.OneTo(2))), Y(NoLookup(Base.OneTo(2)))) |
205 | 131 | end
|
206 | 132 |
|
207 | 133 | @testset "assign using named indexing and dotview" begin
|
|
211 | 137 | @test A == [1.0 1.0; 2.0 2.0; 7.0 7.0]
|
212 | 138 | end
|
213 | 139 |
|
214 |
| -@testset "JLArray assign using named indexing and dotview" begin |
215 |
| - A = DimArray(JLArray(zeros(3,2)), (X, Y)) |
216 |
| - A[X=1:2] .= JLArray([1, 2]) |
217 |
| - A[X=3] .= 7 |
218 |
| - @test Array(A) == [1.0 1.0; 2.0 2.0; 7.0 7.0] |
219 |
| -end |
220 |
| - |
221 | 140 | @testset "0-dimensional array broadcasting" begin
|
222 | 141 | x = DimArray(fill(3), ())
|
223 | 142 | y = DimArray(fill(4), ())
|
|
249 | 168 | @test A[DimSelectors(sub)] == C[DimSelectors(sub)]
|
250 | 169 | end
|
251 | 170 |
|
252 |
| -@testset "JLArray DimIndices broadcasting" begin |
253 |
| - ds = X(1.0:0.2:2.0), Y(10:2:20) |
254 |
| - _A = (rand(ds)) |
255 |
| - _B = (zeros(ds)) |
256 |
| - _C = (zeros(ds)) |
257 |
| - |
258 |
| - A = rebuild(_A, JLArray(parent(_A))) |
259 |
| - B = rebuild(_B, JLArray(parent(_B))) |
260 |
| - C = rebuild(_C, JLArray(parent(_C))) |
261 |
| - |
262 |
| - B[DimIndices(B)] .+= A |
263 |
| - C[DimSelectors(C)] .+= A |
264 |
| - @test Array(A) == Array(B) == Array(C) |
265 |
| - sub = A[1:4, 1:3] |
266 |
| - B .= 0 |
267 |
| - C .= 0 |
268 |
| - B[DimIndices(sub)] .+= sub |
269 |
| - C[DimSelectors(sub)] .+= sub |
270 |
| - @test Array(A[DimIndices(sub)]) == Array(B[DimIndices(sub)]) == Array(C[DimIndices(sub)]) |
271 |
| - sub = A[2:4, 2:5] |
272 |
| - C .= 0 |
273 |
| - C[DimSelectors(sub)] .+= sub |
274 |
| - @test Array(A[DimSelectors(sub)]) == Array(C[DimSelectors(sub)]) |
275 |
| -end |
276 |
| - |
277 | 171 | # @testset "Competing Wrappers" begin
|
278 | 172 | # da = DimArray(ones(4), X)
|
279 | 173 | # ta = TrackedArray(5 * ones(4))
|
|
0 commit comments