Skip to content

Commit 53032fe

Browse files
authored
Rearrange tests (#1157)
1 parent 9bc292d commit 53032fe

File tree

12 files changed

+803
-697
lines changed

12 files changed

+803
-697
lines changed

test/bidiag.jl

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ using LinearAlgebra: BlasReal, BlasFloat
77

88
const BASE_TEST_PATH = joinpath(Sys.BINDIR, "..", "share", "julia", "test")
99

10-
isdefined(Main, :Furlongs) || @eval Main include(joinpath($(BASE_TEST_PATH), "testhelpers", "Furlongs.jl"))
11-
using .Main.Furlongs
12-
1310
isdefined(Main, :Quaternions) || @eval Main include(joinpath($(BASE_TEST_PATH), "testhelpers", "Quaternions.jl"))
1411
using .Main.Quaternions
1512

@@ -354,36 +351,33 @@ Random.seed!(1)
354351
@test norm(x-tx,Inf) <= 4*condT*max(eps()*norm(tx,Inf), eps(promty)*norm(x,Inf))
355352
end
356353
@testset "Specialized multiplication/division" begin
357-
getval(x) = x
358-
getval(x::Furlong) = x.val
359354
function _bidiagdivmultest(T,
360355
x,
361356
typemul=T.uplo == 'U' ? UpperTriangular : Matrix,
362357
typediv=T.uplo == 'U' ? UpperTriangular : Matrix,
363358
typediv2=T.uplo == 'U' ? UpperTriangular : Matrix)
364359
TM = Matrix(T)
365-
@test map(getval, (T*x)::typemul) map(getval, TM*x)
366-
@test map(getval, (x*T)::typemul) map(getval, x*TM)
367-
@test map(getval, (x\T)::typediv) map(getval, x\TM)
368-
@test map(getval, (T/x)::typediv) map(getval, TM/x)
360+
@test (T*x)::typemul TM*x
361+
@test (x*T)::typemul x*TM
362+
@test (x\T)::typediv x\TM
363+
@test (T/x)::typediv TM/x
369364
if !isa(x, Number)
370-
@test map(getval, Array((T\x)::typediv2)) map(getval, Array(TM\x))
371-
@test map(getval, Array((x/T)::typediv2)) map(getval, Array(x/TM))
365+
@test Array((T\x)::typediv2) Array(TM\x)
366+
@test Array((x/T)::typediv2) Array(x/TM)
372367
end
373368
return nothing
374369
end
375370
A = Matrix(T)
376-
for t in (T, Furlong.(T)), (A, dv, ev) in ((A, dv, ev), (Furlong.(A), Furlong.(dv), Furlong.(ev)))
377-
_bidiagdivmultest(t, 5, Bidiagonal, Bidiagonal)
378-
_bidiagdivmultest(t, 5I, Bidiagonal, Bidiagonal, t.uplo == 'U' ? UpperTriangular : LowerTriangular)
379-
_bidiagdivmultest(t, Diagonal(dv), Bidiagonal, Bidiagonal, t.uplo == 'U' ? UpperTriangular : LowerTriangular)
380-
_bidiagdivmultest(t, UpperTriangular(A))
381-
_bidiagdivmultest(t, UnitUpperTriangular(A))
382-
_bidiagdivmultest(t, LowerTriangular(A), t.uplo == 'L' ? LowerTriangular : Matrix, t.uplo == 'L' ? LowerTriangular : Matrix, t.uplo == 'L' ? LowerTriangular : Matrix)
383-
_bidiagdivmultest(t, UnitLowerTriangular(A), t.uplo == 'L' ? LowerTriangular : Matrix, t.uplo == 'L' ? LowerTriangular : Matrix, t.uplo == 'L' ? LowerTriangular : Matrix)
384-
_bidiagdivmultest(t, Bidiagonal(dv, ev, :U), Matrix, Matrix, Matrix)
385-
_bidiagdivmultest(t, Bidiagonal(dv, ev, :L), Matrix, Matrix, Matrix)
386-
end
371+
t = T
372+
_bidiagdivmultest(t, 5, Bidiagonal, Bidiagonal)
373+
_bidiagdivmultest(t, 5I, Bidiagonal, Bidiagonal, t.uplo == 'U' ? UpperTriangular : LowerTriangular)
374+
_bidiagdivmultest(t, Diagonal(dv), Bidiagonal, Bidiagonal, t.uplo == 'U' ? UpperTriangular : LowerTriangular)
375+
_bidiagdivmultest(t, UpperTriangular(A))
376+
_bidiagdivmultest(t, UnitUpperTriangular(A))
377+
_bidiagdivmultest(t, LowerTriangular(A), t.uplo == 'L' ? LowerTriangular : Matrix, t.uplo == 'L' ? LowerTriangular : Matrix, t.uplo == 'L' ? LowerTriangular : Matrix)
378+
_bidiagdivmultest(t, UnitLowerTriangular(A), t.uplo == 'L' ? LowerTriangular : Matrix, t.uplo == 'L' ? LowerTriangular : Matrix, t.uplo == 'L' ? LowerTriangular : Matrix)
379+
_bidiagdivmultest(t, Bidiagonal(dv, ev, :U), Matrix, Matrix, Matrix)
380+
_bidiagdivmultest(t, Bidiagonal(dv, ev, :L), Matrix, Matrix, Matrix)
387381
end
388382
end
389383

test/diagonal.jl

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ using Test, LinearAlgebra, Random
66
using LinearAlgebra: BlasFloat, BlasComplex
77

88
const BASE_TEST_PATH = joinpath(Sys.BINDIR, "..", "share", "julia", "test")
9-
isdefined(Main, :Furlongs) || @eval Main include(joinpath($(BASE_TEST_PATH), "testhelpers", "Furlongs.jl"))
10-
using .Main.Furlongs
119

1210
isdefined(Main, :OffsetArrays) || @eval Main include(joinpath($(BASE_TEST_PATH), "testhelpers", "OffsetArrays.jl"))
1311
using .Main.OffsetArrays
@@ -470,23 +468,6 @@ Random.seed!(1)
470468
@test svdvals(D) == s
471469
@test svd(D).V == V
472470
end
473-
474-
@testset "svd/eigen with Diagonal{Furlong}" begin
475-
Du = Furlong.(D)
476-
@test Du isa Diagonal{<:Furlong{1}}
477-
F = svd(Du)
478-
U, s, V = F
479-
@test map(x -> x.val, Matrix(F)) map(x -> x.val, Du)
480-
@test svdvals(Du) == s
481-
@test U isa AbstractMatrix{<:Furlong{0}}
482-
@test V isa AbstractMatrix{<:Furlong{0}}
483-
@test s isa AbstractVector{<:Furlong{1}}
484-
E = eigen(Du)
485-
vals, vecs = E
486-
@test Matrix(E) == Du
487-
@test vals isa AbstractVector{<:Furlong{1}}
488-
@test vecs isa AbstractMatrix{<:Furlong{0}}
489-
end
490471
end
491472

492473
@testset "axes" begin

test/givens.jl

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -82,16 +82,6 @@ using LinearAlgebra: Givens, Rotation, givensAlgorithm
8282
end
8383
end
8484

85-
# 36430
86-
# dimensional correctness:
87-
const BASE_TEST_PATH = joinpath(Sys.BINDIR, "..", "share", "julia", "test")
88-
isdefined(Main, :Furlongs) || @eval Main include(joinpath($(BASE_TEST_PATH), "testhelpers", "Furlongs.jl"))
89-
using .Main.Furlongs
90-
91-
@testset "testing dimensions with Furlongs" begin
92-
@test_throws MethodError givens(Furlong(1.0), Furlong(2.0), 1, 2)
93-
end
94-
9585
const TNumber = Union{Float64,ComplexF64}
9686
struct MockUnitful{T<:TNumber} <: Number
9787
data::T

test/hessenberg.jl

Lines changed: 16 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@ module TestHessenberg
55
using Test, LinearAlgebra, Random
66

77
const BASE_TEST_PATH = joinpath(Sys.BINDIR, "..", "share", "julia", "test")
8-
isdefined(Main, :Furlongs) || @eval Main include(joinpath($(BASE_TEST_PATH), "testhelpers", "Furlongs.jl"))
9-
using .Main.Furlongs
10-
118
isdefined(Main, :SizedArrays) || @eval Main include(joinpath($(BASE_TEST_PATH), "testhelpers", "SizedArrays.jl"))
129
using .Main.SizedArrays
1310

@@ -68,29 +65,20 @@ let n = 10
6865
@test Array(Hc + H) == Array(Hc) + Array(H)
6966
@test Array(Hc - H) == Array(Hc) - Array(H)
7067
@testset "Preserve UpperHessenberg shape (issue #39388)" begin
71-
for H = (UpperHessenberg(Areal), UpperHessenberg(Furlong.(Areal)))
72-
if eltype(H) <: Furlong
73-
A = Furlong.(rand(n,n))
74-
d = Furlong.(rand(n))
75-
dl = Furlong.(rand(n-1))
76-
du = Furlong.(rand(n-1))
77-
us = Furlong(1)*I
78-
else
79-
A = rand(n,n)
80-
d = rand(n)
81-
dl = rand(n-1)
82-
du = rand(n-1)
83-
us = 1*I
84-
end
85-
@testset "$op" for op = (+,-)
86-
for x = (us, Diagonal(d), Bidiagonal(d,dl,:U), Bidiagonal(d,dl,:L),
87-
Tridiagonal(dl,d,du), SymTridiagonal(d,dl),
88-
UpperTriangular(A), UnitUpperTriangular(A))
89-
@test op(H,x) == op(Array(H),x)
90-
@test op(x,H) == op(x,Array(H))
91-
@test op(H,x) isa UpperHessenberg
92-
@test op(x,H) isa UpperHessenberg
93-
end
68+
H = UpperHessenberg(Areal)
69+
A = rand(n,n)
70+
d = rand(n)
71+
dl = rand(n-1)
72+
du = rand(n-1)
73+
us = 1*I
74+
@testset "$op" for op = (+,-)
75+
for x = (us, Diagonal(d), Bidiagonal(d,dl,:U), Bidiagonal(d,dl,:L),
76+
Tridiagonal(dl,d,du), SymTridiagonal(d,dl),
77+
UpperTriangular(A), UnitUpperTriangular(A))
78+
@test op(H,x) == op(Array(H),x)
79+
@test op(x,H) == op(x,Array(H))
80+
@test op(H,x) isa UpperHessenberg
81+
@test op(x,H) isa UpperHessenberg
9482
end
9583
end
9684
H = UpperHessenberg(Areal)
@@ -102,8 +90,8 @@ let n = 10
10290
UpperTriangular(A), UnitUpperTriangular(A))
10391
@test (H*x)::UpperHessenberg Array(H)*x
10492
@test (x*H)::UpperHessenberg x*Array(H)
105-
@test H/x Array(H)/x# broken = eltype(H) <: Furlong && x isa UpperTriangular
106-
@test x\H x\Array(H)# broken = eltype(H) <: Furlong && x isa UpperTriangular
93+
@test H/x Array(H)/x
94+
@test x\H x\Array(H)
10795
@test H/x isa UpperHessenberg
10896
@test x\H isa UpperHessenberg
10997
end
@@ -113,23 +101,6 @@ let n = 10
113101
@test H/x == Array(H)/x
114102
@test x\H == x\Array(H)
115103
end
116-
H = UpperHessenberg(Furlong.(Areal))
117-
for A in (A, Furlong.(A))
118-
@testset "Multiplication/division Furlong" begin
119-
for x = (5, 5I, Diagonal(d), Bidiagonal(d,dl,:U),
120-
UpperTriangular(A), UnitUpperTriangular(A))
121-
@test map(x -> x.val, (H*x)::UpperHessenberg) map(x -> x.val, Array(H)*x)
122-
@test map(x -> x.val, (x*H)::UpperHessenberg) map(x -> x.val, x*Array(H))
123-
@test map(x -> x.val, (H/x)::UpperHessenberg) map(x -> x.val, Array(H)/x)
124-
@test map(x -> x.val, (x\H)::UpperHessenberg) map(x -> x.val, x\Array(H))
125-
end
126-
x = Bidiagonal(d, dl, :L)
127-
@test H*x == Array(H)*x
128-
@test x*H == x*Array(H)
129-
@test H/x == Array(H)/x
130-
@test x\H == x\Array(H)
131-
end
132-
end
133104
end
134105
end
135106

test/lu.jl

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -338,22 +338,6 @@ include("trickyarithmetic.jl")
338338
@test B isa LinearAlgebra.LU{ElT,Matrix{ElT}}
339339
end
340340

341-
# dimensional correctness:
342-
const BASE_TEST_PATH = joinpath(Sys.BINDIR, "..", "share", "julia", "test")
343-
isdefined(Main, :Furlongs) || @eval Main include(joinpath($(BASE_TEST_PATH), "testhelpers", "Furlongs.jl"))
344-
using .Main.Furlongs
345-
346-
@testset "lu factorization with dimension type" begin
347-
n = 4
348-
A = Matrix(Furlong(1.0) * I, n, n)
349-
F = lu(A).factors
350-
@test Diagonal(F) == Diagonal(A)
351-
# upper triangular part has a unit Furlong{1}
352-
@test all(x -> typeof(x) == Furlong{1, Float64}, F[i,j] for j=1:n for i=1:j)
353-
# lower triangular part is unitless Furlong{0}
354-
@test all(x -> typeof(x) == Furlong{0, Float64}, F[i,j] for j=1:n for i=j+1:n)
355-
end
356-
357341
@testset "Issue #30917. Determinant of integer matrix" begin
358342
@test det([1 1 0 0 1 0 0 0
359343
1 0 1 0 0 1 0 0

test/special.jl

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -376,11 +376,6 @@ end
376376
end
377377
end
378378

379-
# for testing types with a dimension
380-
const BASE_TEST_PATH = joinpath(Sys.BINDIR, "..", "share", "julia", "test")
381-
isdefined(Main, :Furlongs) || @eval Main include(joinpath($(BASE_TEST_PATH), "testhelpers", "Furlongs.jl"))
382-
using .Main.Furlongs
383-
384379
@testset "zero and one for structured matrices" begin
385380
for elty in (Int64, Float64, ComplexF64)
386381
D = Diagonal(rand(elty, 10))
@@ -440,27 +435,6 @@ using .Main.Furlongs
440435
@test one(T) isa Tridiagonal
441436
@test zero(S) isa SymTridiagonal
442437
@test one(S) isa SymTridiagonal
443-
444-
# eltype with dimensions
445-
D0 = Diagonal{Furlong{0, Int64}}([1, 2, 3, 4])
446-
Bu0 = Bidiagonal{Furlong{0, Int64}}([1, 2, 3, 4], [1, 2, 3], 'U')
447-
Bl0 = Bidiagonal{Furlong{0, Int64}}([1, 2, 3, 4], [1, 2, 3], 'L')
448-
T0 = Tridiagonal{Furlong{0, Int64}}([1, 2, 3], [1, 2, 3, 4], [1, 2, 3])
449-
S0 = SymTridiagonal{Furlong{0, Int64}}([1, 2, 3, 4], [1, 2, 3])
450-
F2 = Furlongs.Furlong{2}(1)
451-
D2 = Diagonal{Furlong{2, Int64}}([1, 2, 3, 4].*F2)
452-
Bu2 = Bidiagonal{Furlong{2, Int64}}([1, 2, 3, 4].*F2, [1, 2, 3].*F2, 'U')
453-
Bl2 = Bidiagonal{Furlong{2, Int64}}([1, 2, 3, 4].*F2, [1, 2, 3].*F2, 'L')
454-
T2 = Tridiagonal{Furlong{2, Int64}}([1, 2, 3].*F2, [1, 2, 3, 4].*F2, [1, 2, 3].*F2)
455-
S2 = SymTridiagonal{Furlong{2, Int64}}([1, 2, 3, 4].*F2, [1, 2, 3].*F2)
456-
mats = Any[D0, Bu0, Bl0, T0, S0, D2, Bu2, Bl2, T2, S2]
457-
for A in mats
458-
@test iszero(zero(A))
459-
@test isone(one(A))
460-
@test zero(A) == zero(Matrix(A))
461-
@test one(A) == one(Matrix(A))
462-
@test eltype(one(A)) == typeof(one(eltype(A)))
463-
end
464438
end
465439

466440
@testset "== for structured matrices" begin

test/testgroups

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,34 @@
1-
triangular
2-
addmul
1+
unitful
2+
triangular2
3+
triangular3
34
bidiag
4-
bitarray
5+
special
6+
addmul
57
matmul
68
dense
79
symmetric
810
diagonal
9-
special
10-
qr
11+
lu
12+
bunchkaufman
1113
cholesky
14+
tridiag
15+
triangular
16+
qr
1217
blas
13-
lu
1418
uniformscaling
1519
structuredbroadcast
20+
generic
1621
hessenberg
1722
svd
1823
eigen
19-
tridiag
2024
lapack
2125
lq
2226
adjtrans
23-
generic
2427
schur
25-
bunchkaufman
2628
givens
2729
pinv
2830
factorization
2931
abstractq
3032
ldlt
3133
symmetriceigen
34+
bitarray

0 commit comments

Comments
 (0)