Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jishnub committed Aug 31, 2024
1 parent 1c6f53c commit 3dc5550
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion stdlib/LinearAlgebra/test/triangular.jl
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ debug = false
using Test, LinearAlgebra, Random
using LinearAlgebra: BlasFloat, errorbounds, full!, transpose!,
UnitUpperTriangular, UnitLowerTriangular,
mul!, rdiv!, rmul!, lmul!
mul!, rdiv!, rmul!, lmul!, BandIndex

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

Expand Down Expand Up @@ -1228,4 +1228,31 @@ end
end
end

@testset "indexing with a BandIndex" begin
# these tests should succeed even if the linear index along
# the band isn't a constant, or type-inferred at all
M = rand(Int,2,2)
f(A,j, v::Val{n}) where {n} = Val(A[BandIndex(n,j)])
function common_tests(M, ind)
j = ind[]
@test @inferred(f(UpperTriangular(M), j, Val(-1))) == Val(0)
@test @inferred(f(UnitUpperTriangular(M), j, Val(-1))) == Val(0)
@test @inferred(f(UnitUpperTriangular(M), j, Val(0))) == Val(1)
@test @inferred(f(LowerTriangular(M), j, Val(1))) == Val(0)
@test @inferred(f(UnitLowerTriangular(M), j, Val(1))) == Val(0)
@test @inferred(f(UnitLowerTriangular(M), j, Val(0))) == Val(1)
end
common_tests(M, Any[1])

M = Diagonal(Int[1,2])
common_tests(M, Any[1])
# extra tests for banded structure of the parent
for T in (UpperTriangular, UnitUpperTriangular)
@test @inferred(f(T(M), 1, Val(1))) == Val(0)
end
for T in (LowerTriangular, UnitLowerTriangular)
@test @inferred(f(T(M), 1, Val(-1))) == Val(0)
end
end

end # module TestTriangular

0 comments on commit 3dc5550

Please sign in to comment.