@@ -21,9 +21,12 @@ using BlockSparseArrays:
2121 BlockSparseArray,
2222 BlockSparseMatrix,
2323 BlockSparseVector,
24+ BlockType,
2425 BlockView,
2526 blockdiagindices,
2627 blockreshape,
28+ blocksparse,
29+ blocksparsezeros,
2730 blockstoredlength,
2831 blockstype,
2932 blocktype,
@@ -131,6 +134,37 @@ arrayts = (Array, JLArray)
131134 )
132135 @test_throws ArgumentError BlockSparseVector {elt} (undef, dims... )
133136 end
137+
138+ # Convenient constructors.
139+ a = blocksparsezeros (elt, [2 , 3 ], [2 , 3 ])
140+ @test iszero (a)
141+ @test iszero (blockstoredlength (a))
142+ @test a isa BlockSparseMatrix{elt,Matrix{elt}}
143+ @test blocktype (a) == Matrix{elt}
144+ @test blockstype (a) <: SparseMatrixDOK{Matrix{elt}}
145+ @test blocksize (a) == (2 , 2 )
146+ @test blocksizes (a) == [(2 , 2 ) (2 , 3 ); (3 , 2 ) (3 , 3 )]
147+
148+ a = blocksparsezeros (BlockType (arrayt{elt,2 }), [2 , 3 ], [2 , 3 ])
149+ @test iszero (a)
150+ @test iszero (blockstoredlength (a))
151+ @test a isa BlockSparseMatrix{elt,arrayt{elt,2 }}
152+ @test blocktype (a) == arrayt{elt,2 }
153+ @test blockstype (a) <: SparseMatrixDOK{arrayt{elt,2}}
154+ @test blocksize (a) == (2 , 2 )
155+ @test blocksizes (a) == [(2 , 2 ) (2 , 3 ); (3 , 2 ) (3 , 3 )]
156+
157+ d = Dict (Block (1 , 1 ) => dev (randn (elt, 2 , 2 )), Block (2 , 2 ) => dev (randn (elt, 3 , 3 )))
158+ a = blocksparse (d, [2 , 3 ], [2 , 3 ])
159+ @test ! iszero (a)
160+ @test a[Block (1 , 1 )] == d[Block (1 , 1 )]
161+ @test a[Block (2 , 2 )] == d[Block (2 , 2 )]
162+ @test blockstoredlength (a) == 2
163+ @test a isa BlockSparseMatrix{elt,arrayt{elt,2 }}
164+ @test blocktype (a) == arrayt{elt,2 }
165+ @test blockstype (a) <: SparseMatrixDOK{arrayt{elt,2}}
166+ @test blocksize (a) == (2 , 2 )
167+ @test blocksizes (a) == [(2 , 2 ) (2 , 3 ); (3 , 2 ) (3 , 3 )]
134168 end
135169 @testset " blockstype, blocktype" begin
136170 a = arrayt (randn (elt, 2 , 2 ))
0 commit comments