Skip to content

Commit 2a10079

Browse files
ChrisRackauckas-ClaudeChrisRackauckasclaude
authored
Use SciMLTesting v1.2 folder-based run_tests (#65)
Convert test/runtests.jl to the SciMLTesting v1.2 folder-discovery model: bare `using SciMLTesting; run_tests()`. Core = top-level test/*.jl (core_tests.jl extracted self-contained from the inline @safetestsets, alloc_tests.jl unchanged); QA = test/qa/ (unchanged). test_groups.toml unchanged. Behavior-preserving: GROUP=Core/All runs Core only, GROUP=QA runs qa.jl only, matching the prior dispatch. Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 92c5d5d commit 2a10079

4 files changed

Lines changed: 109 additions & 119 deletions

File tree

test/Project.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
44
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
55
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
66
MatrixFactorizations = "a3b82374-2e81-5b9e-98ce-41277c0e4c87"
7-
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
87
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
98
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
9+
SciMLTesting = "09d9d899-5365-40a9-917a-5f67fddea283"
1010
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
1111
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1212

@@ -16,3 +16,4 @@ ArrayLayouts = "1.12.2"
1616
BenchmarkTools = "1.6.3"
1717
MatrixFactorizations = "3.1.3"
1818
SafeTestsets = "0.1.0"
19+
SciMLTesting = "1"

test/core_tests.jl

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
using SafeTestsets
2+
3+
@safetestset "Constructors" begin
4+
using FastAlmostBandedMatrices
5+
6+
A = AlmostBandedMatrix{Float64}(undef, (10, 11), (2, 1), 2)
7+
A[1, 1] = 2
8+
@test A[1, 1] == 2.0
9+
A[4, 1] = 0
10+
@test A[4, 1] == 0.0
11+
@test_throws BandError A[4, 1] = 2
12+
A[1, 3] = 5
13+
@test A[1, 3] == 5.0
14+
15+
@test almostbandwidths(A) == (2, 1)
16+
@test almostbandedrank(A) == 2
17+
end
18+
19+
@safetestset "similar" begin
20+
using FastAlmostBandedMatrices
21+
22+
A = AlmostBandedMatrix(brand(Float64, 10, 10, 2, 1), rand(Float64, 2, 10))
23+
24+
@test similar(A) isa AlmostBandedMatrix
25+
@test similar(A, Float32) isa AlmostBandedMatrix{Float32}
26+
27+
fallback = similar(A, Float32, 10, 10)
28+
@test fallback isa Matrix{Float32}
29+
@test size(fallback) == size(A)
30+
end
31+
32+
@safetestset "Copy" begin
33+
using FastAlmostBandedMatrices
34+
35+
n = 5
36+
m = 2
37+
38+
A1 = AlmostBandedMatrix(brand(Float64, n, n, m + 1, m), rand(Float64, m, n))
39+
A2 = copy(A1)
40+
41+
@test !(A2 isa Matrix)
42+
@test A1 == A2
43+
44+
A2 = deepcopy(A1)
45+
46+
@test !(A2 isa Matrix)
47+
@test A1 == A2
48+
end
49+
50+
@safetestset "QR" begin
51+
using LinearAlgebra, FastAlmostBandedMatrices
52+
import MatrixFactorizations: QRPackedQ
53+
54+
n = 80
55+
A = AlmostBandedMatrix(BandedMatrix(fill(2.0, n, n), (1, 1)), fill(3.0, 2, n))
56+
A[band(0)] .+= 1:n
57+
à = deepcopy(A)
58+
B, L = bandpart(A), fillpart(A)
59+
60+
F = qr(A)
61+
@test F.Q isa LinearAlgebra.QRPackedQ{Float64, <:BandedMatrix}
62+
@test F.R isa UpperTriangular{Float64, <:SubArray{Float64, 2, <:AlmostBandedMatrix}}
63+
@test F.Q' * A F.R
64+
@test A == Ã
65+
66+
@inferred qr(A)
67+
68+
b = randn(n)
69+
@test A \ b Matrix(A) \ b
70+
@test all(A \ b .=== F \ b)
71+
@test all(A \ b .=== F.R \ (F.Q' * b))
72+
= QRPackedQ(F.factors, F.τ)
73+
@test Matrix(Q̃) Matrix(F.Q)
74+
@test lmul!(Q̃, copy(b)) lmul!(F.Q, copy(b)) Matrix(F.Q) * b
75+
@test lmul!(Q̃', copy(b)) lmul!(F.Q', copy(b)) Matrix(F.Q)' * b
76+
end
77+
78+
@safetestset "Triangular" begin
79+
using LinearAlgebra, ArrayLayouts, FastAlmostBandedMatrices
80+
import FastAlmostBandedMatrices: AlmostBandedLayout
81+
82+
n = 80
83+
A = AlmostBandedMatrix(BandedMatrix(fill(2.0, n, n), (1, 1)), fill(3.0, 1, n))
84+
b = randn(n)
85+
@test MemoryLayout(UpperTriangular(A)) ==
86+
TriangularLayout{'U', 'N', AlmostBandedLayout}()
87+
@test_broken UpperTriangular(Matrix(A)) \ b UpperTriangular(A) \ b
88+
@test_broken UnitUpperTriangular(Matrix(A)) \ b UnitUpperTriangular(A) \ b
89+
@test LowerTriangular(Matrix(A)) \ b LowerTriangular(A) \ b
90+
@test UnitLowerTriangular(Matrix(A)) \ b UnitLowerTriangular(A) \ b
91+
end
92+
93+
# https://github.com/SciML/FastAlmostBandedMatrices.jl/issues/19
94+
@safetestset "fill! on sparse array with BigFloat" begin
95+
using FastAlmostBandedMatrices, SparseArrays
96+
97+
A = sparse([1, 2], [1, 5], big.([1.0, 1.0]))
98+
A1 = AlmostBandedMatrix(brand(BigFloat, 5, 5, 1, 1), A)
99+
fill!(A1, BigFloat(0.0))
100+
@test length(A1.fill.nzval) == 2
101+
end

test/qa/Project.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
[deps]
22
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
33
FastAlmostBandedMatrices = "9d29842c-ecb8-4973-b1e9-a27b1157504e"
4+
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
5+
SciMLTesting = "09d9d899-5365-40a9-917a-5f67fddea283"
46
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
57

68
[sources]
79
FastAlmostBandedMatrices = {path = "../.."}
810

911
[compat]
1012
Aqua = "0.8.14"
13+
SafeTestsets = "0.0.1, 0.1"
14+
SciMLTesting = "1"
1115
Test = "1"
1216
julia = "1.10"

test/runtests.jl

Lines changed: 2 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,2 @@
1-
using Pkg
2-
using SafeTestsets, Test
3-
4-
const GROUP = get(ENV, "GROUP", "All")
5-
6-
if GROUP == "QA"
7-
Pkg.activate(joinpath(@__DIR__, "qa"))
8-
Pkg.develop(PackageSpec(path = joinpath(@__DIR__, "..")))
9-
Pkg.instantiate()
10-
include(joinpath(@__DIR__, "qa", "qa.jl"))
11-
end
12-
13-
if GROUP == "Core" || GROUP == "All"
14-
@testset "FastAlmostBandedMatrices" begin
15-
@safetestset "Constructors" begin
16-
using FastAlmostBandedMatrices
17-
18-
A = AlmostBandedMatrix{Float64}(undef, (10, 11), (2, 1), 2)
19-
A[1, 1] = 2
20-
@test A[1, 1] == 2.0
21-
A[4, 1] = 0
22-
@test A[4, 1] == 0.0
23-
@test_throws BandError A[4, 1] = 2
24-
A[1, 3] = 5
25-
@test A[1, 3] == 5.0
26-
27-
@test almostbandwidths(A) == (2, 1)
28-
@test almostbandedrank(A) == 2
29-
end
30-
31-
@safetestset "similar" begin
32-
using FastAlmostBandedMatrices
33-
34-
A = AlmostBandedMatrix(brand(Float64, 10, 10, 2, 1), rand(Float64, 2, 10))
35-
36-
@test similar(A) isa AlmostBandedMatrix
37-
@test similar(A, Float32) isa AlmostBandedMatrix{Float32}
38-
39-
fallback = similar(A, Float32, 10, 10)
40-
@test fallback isa Matrix{Float32}
41-
@test size(fallback) == size(A)
42-
end
43-
44-
@safetestset "Copy" begin
45-
using FastAlmostBandedMatrices
46-
47-
n = 5
48-
m = 2
49-
50-
A1 = AlmostBandedMatrix(brand(Float64, n, n, m + 1, m), rand(Float64, m, n))
51-
A2 = copy(A1)
52-
53-
@test !(A2 isa Matrix)
54-
@test A1 == A2
55-
56-
A2 = deepcopy(A1)
57-
58-
@test !(A2 isa Matrix)
59-
@test A1 == A2
60-
end
61-
62-
@safetestset "QR" begin
63-
using LinearAlgebra, FastAlmostBandedMatrices
64-
import MatrixFactorizations: QRPackedQ
65-
66-
n = 80
67-
A = AlmostBandedMatrix(BandedMatrix(fill(2.0, n, n), (1, 1)), fill(3.0, 2, n))
68-
A[band(0)] .+= 1:n
69-
à = deepcopy(A)
70-
B, L = bandpart(A), fillpart(A)
71-
72-
F = qr(A)
73-
@test F.Q isa LinearAlgebra.QRPackedQ{Float64, <:BandedMatrix}
74-
@test F.R isa UpperTriangular{Float64, <:SubArray{Float64, 2, <:AlmostBandedMatrix}}
75-
@test F.Q' * A F.R
76-
@test A == Ã
77-
78-
@inferred qr(A)
79-
80-
b = randn(n)
81-
@test A \ b Matrix(A) \ b
82-
@test all(A \ b .=== F \ b)
83-
@test all(A \ b .=== F.R \ (F.Q' * b))
84-
= QRPackedQ(F.factors, F.τ)
85-
@test Matrix(Q̃) Matrix(F.Q)
86-
@test lmul!(Q̃, copy(b)) lmul!(F.Q, copy(b)) Matrix(F.Q) * b
87-
@test lmul!(Q̃', copy(b)) lmul!(F.Q', copy(b)) Matrix(F.Q)' * b
88-
end
89-
90-
@safetestset "Triangular" begin
91-
using LinearAlgebra, ArrayLayouts, FastAlmostBandedMatrices
92-
import FastAlmostBandedMatrices: AlmostBandedLayout
93-
94-
n = 80
95-
A = AlmostBandedMatrix(BandedMatrix(fill(2.0, n, n), (1, 1)), fill(3.0, 1, n))
96-
b = randn(n)
97-
@test MemoryLayout(UpperTriangular(A)) ==
98-
TriangularLayout{'U', 'N', AlmostBandedLayout}()
99-
@test_broken UpperTriangular(Matrix(A)) \ b UpperTriangular(A) \ b
100-
@test_broken UnitUpperTriangular(Matrix(A)) \ b UnitUpperTriangular(A) \ b
101-
@test LowerTriangular(Matrix(A)) \ b LowerTriangular(A) \ b
102-
@test UnitLowerTriangular(Matrix(A)) \ b UnitLowerTriangular(A) \ b
103-
end
104-
105-
# https://github.com/SciML/FastAlmostBandedMatrices.jl/issues/19
106-
@safetestset "fill! on sparse array with BigFloat" begin
107-
using FastAlmostBandedMatrices, SparseArrays
108-
109-
A = sparse([1, 2], [1, 5], big.([1.0, 1.0]))
110-
A1 = AlmostBandedMatrix(brand(BigFloat, 5, 5, 1, 1), A)
111-
fill!(A1, BigFloat(0.0))
112-
@test length(A1.fill.nzval) == 2
113-
end
114-
end
115-
116-
# Allocation tests run separately to avoid precompilation interference
117-
include("alloc_tests.jl")
118-
end
1+
using SciMLTesting
2+
run_tests()

0 commit comments

Comments
 (0)