|
1 | 1 | using Test: @test, @testset, @test_broken, @inferred |
2 | | -using DiagonalArrays: DiagonalArrays, DiagonalArray, DiagonalMatrix, diaglength, diagonal |
| 2 | +using DiagonalArrays: |
| 3 | + DiagonalArrays, DiagonalArray, DiagonalMatrix, δ, delta, diaglength, diagonal, diagview |
| 4 | +using FillArrays: Fill, Ones |
3 | 5 | using SparseArraysBase: SparseArrayDOK, storedlength |
4 | 6 | using LinearAlgebra: Diagonal |
5 | 7 |
|
@@ -52,5 +54,38 @@ using LinearAlgebra: Diagonal |
52 | 54 | @test @inferred(diagonal(rand(2))) isa AbstractMatrix |
53 | 55 | @test diagonal(zeros(Int, 2)) isa Diagonal |
54 | 56 | end |
| 57 | + @testset "delta" begin |
| 58 | + for (a, elt′) in ( |
| 59 | + (delta(2, 3), Float64), |
| 60 | + (δ(2, 3), Float64), |
| 61 | + (delta((2, 3)), Float64), |
| 62 | + (δ((2, 3)), Float64), |
| 63 | + (delta(Bool, 2, 3), Bool), |
| 64 | + (δ(Bool, 2, 3), Bool), |
| 65 | + (delta(Bool, (2, 3)), Bool), |
| 66 | + (δ(Bool, (2, 3)), Bool), |
| 67 | + ) |
| 68 | + @test eltype(a) === elt′ |
| 69 | + @test diaglength(a) == 2 |
| 70 | + @test a isa DiagonalArray{elt′} |
| 71 | + @test size(a) == (2, 3) |
| 72 | + @test diaglength(a) == 2 |
| 73 | + @test storedlength(a) == 2 |
| 74 | + @test a == DiagonalArray(ones(2), (2, 3)) |
| 75 | + @test diagview(a) == ones(2) |
| 76 | + @test diagview(a) isa Ones{elt′} |
| 77 | + |
| 78 | + a′ = 2a |
| 79 | + @test diagview(a′) == 2ones(2) |
| 80 | + # TODO: Fix this. Mapping doesn't preserve |
| 81 | + # the diagonal structure properly. |
| 82 | + # https://github.com/ITensor/DiagonalArrays.jl/issues/7 |
| 83 | + @test_broken diagview(a′) isa Fill |
| 84 | + |
| 85 | + b = randn(elt, (3, 4)) |
| 86 | + a_dest = a * b |
| 87 | + @test a_dest ≈ Array(a) * Array(b) |
| 88 | + end |
| 89 | + end |
55 | 90 | end |
56 | 91 | end |
0 commit comments