Skip to content

Commit 9faefeb

Browse files
committed
move broadcast tests, remove print
1 parent f2db9d8 commit 9faefeb

File tree

4 files changed

+112
-98
lines changed

4 files changed

+112
-98
lines changed

src/lazybroadcasting.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@ IndexStyle(::BroadcastArray{<:Any,1}) = IndexLinear()
5353
getindex(B::BroadcastArray{<:Any,1}, kr::AbstractVector{<:Integer}) =
5454
BroadcastArray(Broadcasted(B).f, map(a -> _broadcast_getindex_range(a,kr), Broadcasted(B).args)...)
5555

56-
copy(bc::Broadcasted{<:LazyArrayStyle}) = BroadcastArray(bc)
56+
copy(bc::Broadcasted{<:LazyArrayStyle}) = BroadcastArray(bc)
57+
58+
59+
copyto!(dest::AbstractArray{<:Any,N}, bc::BroadcastArray{<:Any,N}) where N =
60+
copyto!(dest, Broadcasted(bc))
5761

5862
# Replacement for #18.
5963
# Could extend this to other similar reductions in Base... or apply at lower level?

test/broadcasttests.jl

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
using LazyArrays, Test
2+
3+
@testset "BroadcastArray" begin
4+
a = randn(6)
5+
b = BroadcastArray(exp, a)
6+
@test BroadcastArray(b) == BroadcastVector(b) == b
7+
8+
@test b == Vector(b) == exp.(a)
9+
@test b[2:5] isa BroadcastVector
10+
@test b[2:5] == exp.(a[2:5])
11+
12+
@test exp.(b) isa BroadcastVector
13+
@test b .+ SVector(1,2,3,4,5,6) isa BroadcastVector
14+
@test SVector(1,2,3,4,5,6) .+ b isa BroadcastVector
15+
16+
A = randn(6,6)
17+
B = BroadcastArray(exp, A)
18+
19+
@test Matrix(B) == exp.(A)
20+
21+
22+
C = BroadcastArray(+, A, 2)
23+
@test C == A .+ 2
24+
D = BroadcastArray(+, A, C)
25+
@test D == A + C
26+
27+
@test sum(B) sum(exp, A)
28+
@test sum(C) sum(A .+ 2)
29+
@test prod(B) prod(exp, A)
30+
@test prod(C) prod(A .+ 2)
31+
32+
x = Vcat([3,4], [1,1,1,1,1], 1:3)
33+
@test x .+ (1:10) isa Vcat
34+
@test (1:10) .+ x isa Vcat
35+
@test x + (1:10) isa Vcat
36+
@test (1:10) + x isa Vcat
37+
@test x .+ (1:10) == (1:10) .+ x == (1:10) + x == x + (1:10) == Vector(x) + (1:10)
38+
39+
@test exp.(x) isa Vcat
40+
@test exp.(x) == exp.(Vector(x))
41+
@test x .+ 2 isa Vcat
42+
@test (x .+ 2).args[end] x.args[end] .+ 2 3:5
43+
@test x .* 2 isa Vcat
44+
@test 2 .+ x isa Vcat
45+
@test 2 .* x isa Vcat
46+
47+
A = Vcat([[1 2; 3 4]], [[4 5; 6 7]])
48+
@test A .+ Ref(I) == Ref(I) .+ A == Vcat([[2 2; 3 5]], [[5 5; 6 8]])
49+
50+
@test_broken BroadcastArray(*,1.1,[1 2])[1] == 1.1
51+
52+
B = BroadcastArray(*, Diagonal(randn(5)), randn(5,5))
53+
@test B == broadcast(*,B.args...)
54+
@test colsupport(B,1) == rowsupport(B,1) == 1:1
55+
@test colsupport(B,3) == rowsupport(B,3) == 3:3
56+
@test colsupport(B,5) == rowsupport(B,5) == 5:5
57+
B = BroadcastArray(*, Diagonal(randn(5)), 2)
58+
@test B == broadcast(*,B.args...)
59+
@test colsupport(B,1) == rowsupport(B,1) == 1:1
60+
@test colsupport(B,3) == rowsupport(B,3) == 3:3
61+
@test colsupport(B,5) == rowsupport(B,5) == 5:5
62+
B = BroadcastArray(*, Diagonal(randn(5)), randn(5))
63+
@test B == broadcast(*,B.args...)
64+
@test colsupport(B,1) == rowsupport(B,1) == 1:1
65+
@test colsupport(B,3) == rowsupport(B,3) == 3:3
66+
@test colsupport(B,5) == rowsupport(B,5) == 5:5
67+
68+
B = BroadcastArray(+, Diagonal(randn(5)), 2)
69+
@test colsupport(B,1) == rowsupport(B,1) == 1:5
70+
@test colsupport(B,3) == rowsupport(B,3) == 1:5
71+
@test colsupport(B,5) == rowsupport(B,5) == 1:5
72+
end
73+
74+
@testset "vector*matrix broadcasting #27" begin
75+
H = [1., 0.]
76+
@test Mul(H, H') .+ 1 == H*H' .+ 1
77+
B = randn(2,2)
78+
@test Mul(H, H') .+ B == H*H' .+ B
79+
end
80+
81+
@testset "BroadcastArray +" begin
82+
a = BroadcastArray(+, randn(400), randn(400))
83+
b = similar(a)
84+
copyto!(b, a)
85+
@test @allocated(copyto!(b, a)) == 0
86+
@test b == a
87+
end
88+
89+
@testset "Lazy range" begin
90+
@test broadcasted(LazyArrayStyle{1}(), +, 1:5) 1:5
91+
@test broadcasted(LazyArrayStyle{1}(), +, 1, 1:5) 2:6
92+
@test broadcasted(LazyArrayStyle{1}(), +, 1:5, 1) 2:6
93+
94+
@test broadcasted(LazyArrayStyle{1}(), +, Fill(2,5)) Fill(2,5)
95+
@test broadcasted(LazyArrayStyle{1}(), +, 1, Fill(2,5)) Fill(3,5)
96+
@test broadcasted(LazyArrayStyle{1}(), +, Fill(2,5), 1) Fill(3,5)
97+
@test broadcasted(LazyArrayStyle{1}(), +, Ref(1), Fill(2,5)) Fill(3,5)
98+
@test broadcasted(LazyArrayStyle{1}(), +, Fill(2,5), Ref(1)) Fill(3,5)
99+
@test broadcasted(LazyArrayStyle{1}(), +, 1, Fill(2,5)) Fill(3,5)
100+
@test broadcasted(LazyArrayStyle{1}(), +, Fill(2,5), Fill(3,5)) Fill(5,5)
101+
102+
@test broadcasted(LazyArrayStyle{1}(), *, Zeros(5), Zeros(5)) Zeros(5)
103+
b = BroadcastArray(exp, randn(5))
104+
@test b .* Zeros(5) Zeros(5)
105+
@test Zeros(5) .* b Zeros(5)
106+
end

test/concattests.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,6 @@ import LazyArrays: MemoryLayout, DenseColumnMajor, PaddedLayout, materialize!, M
351351
@testset "norm" begin
352352
for a in (Vcat(1,2,Fill(5,3)), Hcat([1,2],randn(2,2)), Vcat(1,Float64[])),
353353
p in (-Inf, 0, 0.1, 1, 2, 3, Inf)
354-
@show p
355354
@test norm(a,p) norm(Array(a),p)
356355
end
357356
end

test/runtests.jl

Lines changed: 1 addition & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ include("setoptests.jl")
1010
include("macrotests.jl")
1111
include("lazymultests.jl")
1212
include("concattests.jl")
13+
include("broadcasttests.jl")
1314

1415
@testset "Kron" begin
1516
A = [1,2,3]
@@ -62,77 +63,6 @@ include("concattests.jl")
6263
@test Array(K) == zeros(4,1)
6364
end
6465

65-
@testset "BroadcastArray" begin
66-
a = randn(6)
67-
b = BroadcastArray(exp, a)
68-
@test BroadcastArray(b) == BroadcastVector(b) == b
69-
70-
@test b == Vector(b) == exp.(a)
71-
@test b[2:5] isa BroadcastVector
72-
@test b[2:5] == exp.(a[2:5])
73-
74-
@test exp.(b) isa BroadcastVector
75-
@test b .+ SVector(1,2,3,4,5,6) isa BroadcastVector
76-
@test SVector(1,2,3,4,5,6) .+ b isa BroadcastVector
77-
78-
A = randn(6,6)
79-
B = BroadcastArray(exp, A)
80-
81-
@test Matrix(B) == exp.(A)
82-
83-
84-
C = BroadcastArray(+, A, 2)
85-
@test C == A .+ 2
86-
D = BroadcastArray(+, A, C)
87-
@test D == A + C
88-
89-
@test sum(B) sum(exp, A)
90-
@test sum(C) sum(A .+ 2)
91-
@test prod(B) prod(exp, A)
92-
@test prod(C) prod(A .+ 2)
93-
94-
x = Vcat([3,4], [1,1,1,1,1], 1:3)
95-
@test x .+ (1:10) isa Vcat
96-
@test (1:10) .+ x isa Vcat
97-
@test x + (1:10) isa Vcat
98-
@test (1:10) + x isa Vcat
99-
@test x .+ (1:10) == (1:10) .+ x == (1:10) + x == x + (1:10) == Vector(x) + (1:10)
100-
101-
@test exp.(x) isa Vcat
102-
@test exp.(x) == exp.(Vector(x))
103-
@test x .+ 2 isa Vcat
104-
@test (x .+ 2).args[end] x.args[end] .+ 2 3:5
105-
@test x .* 2 isa Vcat
106-
@test 2 .+ x isa Vcat
107-
@test 2 .* x isa Vcat
108-
109-
A = Vcat([[1 2; 3 4]], [[4 5; 6 7]])
110-
@test A .+ Ref(I) == Ref(I) .+ A == Vcat([[2 2; 3 5]], [[5 5; 6 8]])
111-
112-
@test_broken BroadcastArray(*,1.1,[1 2])[1] == 1.1
113-
114-
B = BroadcastArray(*, Diagonal(randn(5)), randn(5,5))
115-
@test B == broadcast(*,B.args...)
116-
@test colsupport(B,1) == rowsupport(B,1) == 1:1
117-
@test colsupport(B,3) == rowsupport(B,3) == 3:3
118-
@test colsupport(B,5) == rowsupport(B,5) == 5:5
119-
B = BroadcastArray(*, Diagonal(randn(5)), 2)
120-
@test B == broadcast(*,B.args...)
121-
@test colsupport(B,1) == rowsupport(B,1) == 1:1
122-
@test colsupport(B,3) == rowsupport(B,3) == 3:3
123-
@test colsupport(B,5) == rowsupport(B,5) == 5:5
124-
B = BroadcastArray(*, Diagonal(randn(5)), randn(5))
125-
@test B == broadcast(*,B.args...)
126-
@test colsupport(B,1) == rowsupport(B,1) == 1:1
127-
@test colsupport(B,3) == rowsupport(B,3) == 3:3
128-
@test colsupport(B,5) == rowsupport(B,5) == 5:5
129-
130-
B = BroadcastArray(+, Diagonal(randn(5)), 2)
131-
@test colsupport(B,1) == rowsupport(B,1) == 1:5
132-
@test colsupport(B,3) == rowsupport(B,3) == 1:5
133-
@test colsupport(B,5) == rowsupport(B,5) == 1:5
134-
end
135-
13666
@testset "Cache" begin
13767
A = 1:10
13868
C = cache(A)
@@ -233,31 +163,6 @@ end
233163
@test cumsum(ApplyArray(+, 1:10)) === Cumsum(ApplyArray(+, 1:10))
234164
end
235165

236-
@testset "vector*matrix broadcasting #27" begin
237-
H = [1., 0.]
238-
@test Mul(H, H') .+ 1 == H*H' .+ 1
239-
B = randn(2,2)
240-
@test Mul(H, H') .+ B == H*H' .+ B
241-
end
242-
243-
@testset "Lazy range" begin
244-
@test broadcasted(LazyArrayStyle{1}(), +, 1:5) 1:5
245-
@test broadcasted(LazyArrayStyle{1}(), +, 1, 1:5) 2:6
246-
@test broadcasted(LazyArrayStyle{1}(), +, 1:5, 1) 2:6
247-
248-
@test broadcasted(LazyArrayStyle{1}(), +, Fill(2,5)) Fill(2,5)
249-
@test broadcasted(LazyArrayStyle{1}(), +, 1, Fill(2,5)) Fill(3,5)
250-
@test broadcasted(LazyArrayStyle{1}(), +, Fill(2,5), 1) Fill(3,5)
251-
@test broadcasted(LazyArrayStyle{1}(), +, Ref(1), Fill(2,5)) Fill(3,5)
252-
@test broadcasted(LazyArrayStyle{1}(), +, Fill(2,5), Ref(1)) Fill(3,5)
253-
@test broadcasted(LazyArrayStyle{1}(), +, 1, Fill(2,5)) Fill(3,5)
254-
@test broadcasted(LazyArrayStyle{1}(), +, Fill(2,5), Fill(3,5)) Fill(5,5)
255-
256-
@test broadcasted(LazyArrayStyle{1}(), *, Zeros(5), Zeros(5)) Zeros(5)
257-
b = BroadcastArray(exp, randn(5))
258-
@test b .* Zeros(5) Zeros(5)
259-
@test Zeros(5) .* b Zeros(5)
260-
end
261166
@testset "col/rowsupport" begin
262167
A = randn(5,6)
263168
@test rowsupport(A,1) === Base.OneTo(6)

0 commit comments

Comments
 (0)