diff --git a/Project.toml b/Project.toml index c102112..6817bce 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "SparseArraysBase" uuid = "0d5efcca-f356-4864-8770-e1ed8d78f208" authors = ["ITensor developers and contributors"] -version = "0.8.0" +version = "0.8.1" [deps] Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" diff --git a/src/abstractsparsearraystyle.jl b/src/abstractsparsearraystyle.jl index 45bd02c..24c1f08 100644 --- a/src/abstractsparsearraystyle.jl +++ b/src/abstractsparsearraystyle.jl @@ -60,7 +60,7 @@ abstract type AbstractSparseArrayStyle <: AbstractArrayStyle end function FunctionImplementations.Style( style1::AbstractSparseArrayStyle, style2::AbstractSparseArrayStyle ) - return error("Rule not defined.") + return SparseArrayStyle() end function FunctionImplementations.Style( style1::AbstractSparseArrayStyle, style2::AbstractArrayStyle diff --git a/test/Project.toml b/test/Project.toml index 761f1bb..f625478 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -4,6 +4,7 @@ Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" Dictionaries = "85a47980-9c8c-11e8-2b9f-f7ca1fa99fb4" FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b" +FunctionImplementations = "7c7cc465-9c6a-495f-bdd1-f42428e86d0c" JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" NamedDimsArrays = "60cbd0c0-df58-4cb7-918c-6f5607b73fde" diff --git a/test/test_sparse_style.jl b/test/test_sparse_style.jl new file mode 100644 index 0000000..9463607 --- /dev/null +++ b/test/test_sparse_style.jl @@ -0,0 +1,26 @@ +using FunctionImplementations: Style, style +using SparseArraysBase: AbstractSparseArrayStyle, SparseArrayStyle, sparse_style, sparsezeros +using Test: @test, @testset + +module TestSparseStyleUtils + using SparseArraysBase: AbstractSparseArray, AbstractSparseArrayStyle + using FunctionImplementations: FunctionImplementations + struct MySparseArrayStyle <: AbstractSparseArrayStyle end + struct MySparseArray{T, N} <: AbstractSparseArray{T, N} + size::NTuple{N, Int} + end + FunctionImplementations.Style(::Type{<:MySparseArray}) = MySparseArrayStyle() +end + +@testset "Combine Sparse Styles" begin + @test sparse_style ≡ SparseArrayStyle() + @test Style(SparseArrayStyle(), SparseArrayStyle()) ≡ SparseArrayStyle() + @test Style(TestSparseStyleUtils.MySparseArrayStyle(), SparseArrayStyle()) ≡ + SparseArrayStyle() + @test Style(SparseArrayStyle(), TestSparseStyleUtils.MySparseArrayStyle()) ≡ + SparseArrayStyle() + @test style(TestSparseStyleUtils.MySparseArray{Float64, 2}((2, 2))) ≡ + TestSparseStyleUtils.MySparseArrayStyle() + @test style(sparsezeros(2, 2), TestSparseStyleUtils.MySparseArray{Float64, 2}((2, 2))) ≡ + SparseArrayStyle() +end