@@ -95,37 +95,48 @@ const elts = (Float32, Float64, Complex{Float32}, Complex{Float64})
95
95
end
96
96
@testset " dual axes" begin
97
97
r = gradedrange ([U1 (0 ) => 2 , U1 (1 ) => 2 ])
98
- a = BlockSparseArray {elt} (dual (r), r)
99
- @views for b in [Block (1 , 1 ), Block (2 , 2 )]
100
- a[b] = randn (elt, size (a[b]))
101
- end
102
- # TODO : Define and use `isdual` here.
103
- @test axes (a, 1 ) isa UnitRangeDual
104
- @test axes (a, 2 ) isa GradedUnitRange
105
- @test ! (axes (a, 2 ) isa UnitRangeDual)
106
- a_dense = Array (a)
107
- @test eachindex (a) == CartesianIndices (size (a))
108
- for I in eachindex (a)
109
- @test a[I] == a_dense[I]
110
- end
111
- @test axes (a' ) == dual .(reverse (axes (a)))
112
- # TODO : Define and use `isdual` here.
113
- @test axes (a' , 1 ) isa UnitRangeDual
114
- @test axes (a' , 2 ) isa GradedUnitRange
115
- @test ! (axes (a' , 2 ) isa UnitRangeDual)
116
- @test isnothing (show (devnull , MIME (" text/plain" ), a))
117
-
118
- # Check preserving dual in tensor algebra.
119
- for b in (a + a, 2 * a, 3 * a - a)
120
- @test Array (b) ≈ 2 * Array (a)
98
+ for ax in ((r, r), (dual (r), r), (r, dual (r)), (dual (r), dual (r)))
99
+ a = BlockSparseArray {elt} (ax... )
100
+ @views for b in [Block (1 , 1 ), Block (2 , 2 )]
101
+ a[b] = randn (elt, size (a[b]))
102
+ end
121
103
# TODO : Define and use `isdual` here.
122
- @test axes (b, 1 ) isa UnitRangeDual
123
- @test axes (b, 2 ) isa GradedUnitRange
124
- @test ! (axes (b, 2 ) isa UnitRangeDual)
125
- end
104
+ for dim in 1 : ndims (a)
105
+ @test typeof (ax[dim]) === typeof (axes (a, dim))
106
+ end
107
+ @test @view (a[Block (1 , 1 )])[1 , 1 ] == a[1 , 1 ]
108
+ @test @view (a[Block (1 , 1 )])[2 , 1 ] == a[2 , 1 ]
109
+ @test @view (a[Block (1 , 1 )])[1 , 2 ] == a[1 , 2 ]
110
+ @test @view (a[Block (1 , 1 )])[2 , 2 ] == a[2 , 2 ]
111
+ @test @view (a[Block (2 , 2 )])[1 , 1 ] == a[3 , 3 ]
112
+ @test @view (a[Block (2 , 2 )])[2 , 1 ] == a[4 , 3 ]
113
+ @test @view (a[Block (2 , 2 )])[1 , 2 ] == a[3 , 4 ]
114
+ @test @view (a[Block (2 , 2 )])[2 , 2 ] == a[4 , 4 ]
115
+ @test @view (a[Block (1 , 1 )])[1 : 2 , 1 : 2 ] == a[1 : 2 , 1 : 2 ]
116
+ @test @view (a[Block (2 , 2 )])[1 : 2 , 1 : 2 ] == a[3 : 4 , 3 : 4 ]
117
+ a_dense = Array (a)
118
+ @test eachindex (a) == CartesianIndices (size (a))
119
+ for I in eachindex (a)
120
+ @test a[I] == a_dense[I]
121
+ end
122
+ @test axes (a' ) == dual .(reverse (axes (a)))
123
+ # TODO : Define and use `isdual` here.
124
+ @test typeof (axes (a' , 1 )) === typeof (dual (axes (a, 2 )))
125
+ @test typeof (axes (a' , 2 )) === typeof (dual (axes (a, 1 )))
126
+ @test isnothing (show (devnull , MIME (" text/plain" ), a))
126
127
127
- @test isnothing (show (devnull , MIME (" text/plain" ), @view (a[Block (1 , 1 )])))
128
- @test @view (a[Block (1 , 1 )]) == a[Block (1 , 1 )]
128
+ # Check preserving dual in tensor algebra.
129
+ for b in (a + a, 2 * a, 3 * a - a)
130
+ @test Array (b) ≈ 2 * Array (a)
131
+ # TODO : Define and use `isdual` here.
132
+ for dim in 1 : ndims (a)
133
+ @test typeof (axes (b, dim)) === typeof (axes (b, dim))
134
+ end
135
+ end
136
+
137
+ @test isnothing (show (devnull , MIME (" text/plain" ), @view (a[Block (1 , 1 )])))
138
+ @test @view (a[Block (1 , 1 )]) == a[Block (1 , 1 )]
139
+ end
129
140
130
141
# Test case when all axes are dual.
131
142
for r in (gradedrange ([U1 (0 ) => 2 , U1 (1 ) => 2 ]), blockedrange ([2 , 2 ]))
0 commit comments