@@ -4,15 +4,20 @@ using JLArrays: JLArray, @allowscalar
4
4
using SparseArraysBase:
5
5
SparseArraysBase,
6
6
SparseArrayDOK,
7
+ SparseMatrixDOK,
7
8
eachstoredindex,
8
9
getstoredindex,
9
10
getunstoredindex,
10
11
isstored,
11
12
setstoredindex!,
12
13
setunstoredindex!,
14
+ sparse,
15
+ sparserand,
16
+ sparsezeros,
13
17
storedlength,
14
18
storedpairs,
15
19
storedvalues
20
+ using StableRNGs: StableRNG
16
21
using Test: @test , @testset
17
22
18
23
elts = (Float32, Float64, Complex{Float32}, Complex{Float64})
@@ -216,4 +221,53 @@ arrayts = (Array,)
216
221
@test storedlength (r1) == 2
217
222
@test a == [11 12 ; 12 22 ]
218
223
@test storedlength (a) == 4
224
+
225
+ d = Dict ([CartesianIndex (1 , 2 ) => elt (12 ), CartesianIndex (2 , 1 ) => elt (21 )])
226
+ for a in (
227
+ sparse (d, 2 , 2 ),
228
+ sparse (d, 2 , 2 ; getunstored= Returns (zero (elt))),
229
+ sparse (d, (2 , 2 )),
230
+ sparse (d, (2 , 2 ); getunstored= Returns (zero (elt))),
231
+ )
232
+ @test ! iszero (a)
233
+ @test iszero (a[1 , 1 ])
234
+ @test a[2 , 1 ] == elt (21 )
235
+ @test a[1 , 2 ] == elt (12 )
236
+ @test iszero (a[2 , 2 ])
237
+ @test size (a) == (2 , 2 )
238
+ @test storedlength (a) == 2
239
+ @test eltype (a) === elt
240
+ @test a isa SparseMatrixDOK{elt}
241
+ end
242
+
243
+ for (a, elt′) in (
244
+ (sparsezeros (elt, 2 , 2 ), elt),
245
+ (sparsezeros (elt, 2 , 2 ; getunstored= Returns (zero (elt))), elt),
246
+ (sparsezeros (elt, (2 , 2 )), elt),
247
+ (sparsezeros (elt, (2 , 2 ); getunstored= Returns (zero (elt))), elt),
248
+ (sparsezeros (2 , 2 ), Float64),
249
+ (sparsezeros (2 , 2 ; getunstored= Returns (zero (Float64))), Float64),
250
+ (sparsezeros ((2 , 2 )), Float64),
251
+ (sparsezeros ((2 , 2 ); getunstored= Returns (zero (Float64))), Float64),
252
+ )
253
+ @test iszero (a)
254
+ @test size (a) == (2 , 2 )
255
+ @test storedlength (a) == 0
256
+ @test eltype (a) === elt′
257
+ @test a isa SparseMatrixDOK{elt′}
258
+ end
259
+
260
+ rng = StableRNG (123 )
261
+ for (a, elt′) in (
262
+ (sparserand (rng, elt, 20 , 20 ; density= 0.5 ), elt),
263
+ (sparserand (rng, elt, (20 , 20 ); density= 0.5 ), elt),
264
+ (sparserand (rng, 20 , 20 ; density= 0.5 ), Float64),
265
+ (sparserand (rng, (20 , 20 ); density= 0.5 ), Float64),
266
+ )
267
+ @test ! iszero (a)
268
+ @test size (a) == (20 , 20 )
269
+ @test ! iszero (storedlength (a))
270
+ @test eltype (a) === elt′
271
+ @test a isa SparseMatrixDOK{elt′}
272
+ end
219
273
end
0 commit comments