Skip to content

Commit 933d46d

Browse files
committed
add tests
1 parent d443565 commit 933d46d

2 files changed

Lines changed: 112 additions & 0 deletions

File tree

test/runtests.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ end
3838

3939
Base.collect(x::MinimalVec) = x.vec
4040
@static if isdefined(Base, :get_extension) && isempty(VERSION.prerelease)
41+
println("Testing StaticArrays extension")
42+
println("==============================")
43+
include("staticsvec.jl")
44+
4145
println("Testing AD rules")
4246
println("================")
4347
println("Testing ChainRules")

test/staticsvec.jl

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
module StaticSVec
2+
using VectorInterface
3+
using StaticArrays
4+
using Test
5+
using TestExtras
6+
7+
deepcollect(x::StaticArray) = collect(x)
8+
deepcollect(x::Number) = x
9+
10+
x = SVector{3}(randn(3))
11+
y = SVector{3}(randn(3))
12+
13+
@testset "scalartype" begin
14+
s = @constinferred scalartype(x)
15+
@test s == Float64
16+
end
17+
18+
@testset "zerovector" begin
19+
z = @constinferred zerovector(x)
20+
@test z isa SVector{3, Float64}
21+
@test all(iszero, deepcollect(z))
22+
@test all(deepcollect(z) .=== zero(scalartype(x)))
23+
z1 = @constinferred zerovector!!(x)
24+
@test z1 isa SVector{3, Float64}
25+
@test all(deepcollect(z1) .=== zero(scalartype(x)))
26+
27+
z3 = @constinferred zerovector(x, ComplexF64)
28+
@test z3 isa SVector{3, ComplexF64}
29+
@test all(deepcollect(z3) .=== zero(ComplexF64))
30+
z4 = @constinferred zerovector!!(x, ComplexF64)
31+
@test z4 isa SVector{3, ComplexF64}
32+
@test all(deepcollect(z4) .=== zero(ComplexF64))
33+
end
34+
35+
@testset "scale" begin
36+
α = randn()
37+
z = @constinferred scale(x, α)
38+
@test z isa SVector{3, Float64}
39+
@test all(deepcollect(z) .== α .* deepcollect(x))
40+
41+
z2 = @constinferred scale!!(x, α)
42+
@test z2 isa SVector{3, Float64}
43+
@test deepcollect(z2) .* deepcollect(x))
44+
z2 = @constinferred scale!!(y, x, α)
45+
@test z2 isa SVector{3, Float64}
46+
@test deepcollect(z2) .* deepcollect(x))
47+
48+
α = randn(ComplexF64)
49+
z4 = @constinferred scale(x, α)
50+
@test z4 isa SVector{3, ComplexF64}
51+
@test deepcollect(z4) .* deepcollect(x))
52+
z5 = @constinferred scale!!(x, α)
53+
@test z5 isa SVector{3, ComplexF64}
54+
@test deepcollect(z5) .* deepcollect(x))
55+
56+
z6 = @constinferred scale!!(zerovector(x), x, α)
57+
@test z6 isa SVector{3, ComplexF64}
58+
@test deepcollect(z6) .* deepcollect(x))
59+
60+
ycomplex = zerovector(y, ComplexF64)
61+
α = randn(Float64)
62+
z8 = @constinferred scale!!(ycomplex, x, α)
63+
@test scalartype(z8) == ComplexF64
64+
@test all(deepcollect(z8) .== α .* deepcollect(x))
65+
end
66+
67+
@testset "add" begin
68+
α, β = randn(2)
69+
z = @constinferred add(y, x)
70+
@test z isa SVector{3, Float64}
71+
@test all(deepcollect(z) .== deepcollect(x) .+ deepcollect(y))
72+
z = @constinferred add(y, x, α)
73+
@test deepcollect(z) muladd.(deepcollect(x), α, deepcollect(y))
74+
z = @constinferred add(y, x, α, β)
75+
@test deepcollect(z) muladd.(deepcollect(x), α, deepcollect(y) .* β)
76+
77+
z2 = @constinferred add!!(y, x)
78+
@test z2 isa SVector{3, Float64}
79+
@test deepcollect(z2) (deepcollect(x) .+ deepcollect(y))
80+
z2 = @constinferred add!!(y, x, α)
81+
@test deepcollect(z2) (muladd.(deepcollect(x), α, deepcollect(y)))
82+
z2 = @constinferred add!!(y, x, α, β)
83+
@test deepcollect(z2) (muladd.(deepcollect(x), α, deepcollect(y) .* β))
84+
85+
α, β = randn(ComplexF64, 2)
86+
z4 = @constinferred add(y, x, α)
87+
@test z4 isa SVector{3, ComplexF64}
88+
@test deepcollect(z4) (muladd.(deepcollect(x), α, deepcollect(y)))
89+
z4 = @constinferred add(y, x, α, β)
90+
@test deepcollect(z4) (muladd.(deepcollect(x), α, deepcollect(y) .* β))
91+
92+
z5 = @constinferred add!!(y, x, α)
93+
@test z5 isa SVector{3, ComplexF64}
94+
@test deepcollect(z5) (muladd.(deepcollect(x), α, deepcollect(y)))
95+
z5 = @constinferred add!!(y, x, α, β)
96+
@test deepcollect(z5) (muladd.(deepcollect(x), α, deepcollect(y) .* β))
97+
end
98+
99+
@testset "inner" begin
100+
s = @constinferred inner(x, y)
101+
@test s inner(deepcollect(x), deepcollect(y))
102+
103+
α, β = randn(ComplexF64, 2)
104+
s2 = @constinferred inner(scale(x, α), scale(y, β))
105+
@test s2 inner* deepcollect(x), β * deepcollect(y))
106+
end
107+
108+
end

0 commit comments

Comments
 (0)