@@ -6,36 +6,36 @@ using Test: @test, @testset
66elts = (Float32, ComplexF64)
77arrayts = (Array, JLArray)
88@testset " dense (arraytype=$arrayt , eltype=$elt )" for arrayt in arrayts, elt in elts
9- dev (x) = adapt (arrayt, x)
9+ dev (x) = adapt (arrayt, x)
1010
11- @testset " SparseArrayDOK" begin
12- s = sparsezeros (elt, 3 , 4 )
13- s[1 , 2 ] = 2
14- d = dense (s)
15- @test d isa Matrix{elt}
16- @test d == [0 2 0 0 ; 0 0 0 0 ; 0 0 0 0 ]
17- end
18-
19- @testset " Custom sparse array" begin
20- struct MySparseArrayDOK{T,N,S<: AbstractVector{T} } <: AbstractArray{T,N}
21- storedvalues:: S
22- storedindices:: Dict{CartesianIndex{N},Int}
23- size:: NTuple{N,Int}
24- end
25- Base. size (a:: MySparseArrayDOK ) = a. size
26- function Base. getindex (a:: MySparseArrayDOK{<:Any,N} , I:: Vararg{Int,N} ) where {N}
27- storageindex = get (a. storedindices, CartesianIndex (I), nothing )
28- isnothing (storageindex) && return zero (eltype (a))
29- return a. storedvalues[storageindex]
11+ @testset " SparseArrayDOK" begin
12+ s = sparsezeros (elt, 3 , 4 )
13+ s[1 , 2 ] = 2
14+ d = dense (s)
15+ @test d isa Matrix{elt}
16+ @test d == [0 2 0 0 ; 0 0 0 0 ; 0 0 0 0 ]
3017 end
31- Base. parent (a:: MySparseArrayDOK ) = a. storedvalues
3218
33- s = MySparseArrayDOK (
34- dev (elt[2 , 4 ]), Dict ([CartesianIndex (1 , 2 ) => 1 , CartesianIndex (3 , 4 ) => 2 ]), (3 , 4 )
35- )
36- d = dense (s)
37- @show typeof (d)
38- @test d isa arrayt{elt,2 }
39- @test d == dev (elt[0 2 0 0 ; 0 0 0 0 ; 0 0 0 4 ])
40- end
19+ @testset " Custom sparse array" begin
20+ struct MySparseArrayDOK{T, N, S <: AbstractVector{T} } <: AbstractArray{T, N}
21+ storedvalues:: S
22+ storedindices:: Dict{CartesianIndex{N}, Int}
23+ size:: NTuple{N, Int}
24+ end
25+ Base. size (a:: MySparseArrayDOK ) = a. size
26+ function Base. getindex (a:: MySparseArrayDOK{<:Any, N} , I:: Vararg{Int, N} ) where {N}
27+ storageindex = get (a. storedindices, CartesianIndex (I), nothing )
28+ isnothing (storageindex) && return zero (eltype (a))
29+ return a. storedvalues[storageindex]
30+ end
31+ Base. parent (a:: MySparseArrayDOK ) = a. storedvalues
32+
33+ s = MySparseArrayDOK (
34+ dev (elt[2 , 4 ]), Dict ([CartesianIndex (1 , 2 ) => 1 , CartesianIndex (3 , 4 ) => 2 ]), (3 , 4 )
35+ )
36+ d = dense (s)
37+ @show typeof (d)
38+ @test d isa arrayt{elt, 2 }
39+ @test d == dev (elt[0 2 0 0 ; 0 0 0 0 ; 0 0 0 4 ])
40+ end
4141end
0 commit comments