@@ -125,17 +125,22 @@ end
125
125
@test_throws DimensionMismatch BlockArray ([1 ,2 ,3 ],[1 ,1 ])
126
126
127
127
@testset " mortar" begin
128
- @testset for sizes in [(1 : 3 ,), (1 : 3 , 1 : 3 ), (1 : 3 , 1 : 3 , 1 : 3 )]
128
+ @testset for sizes in [(1 : 3 ,), (1 : 3 , 1 : 4 ), (1 : 3 , 1 : 4 , 1 : 2 )]
129
129
dims = sum .(sizes)
130
- A = BlockArray (copy (reshape (1 : prod (dims), dims)), sizes... )
131
- @test mortar (A. blocks) == A
130
+ A = @inferred BlockArray (copy (reshape (1 : prod (dims), dims)), sizes... )
131
+ @test @inferred mortar (A. blocks) == A
132
+ if length (dims) == 2
133
+ # compare with hvcat
134
+ rows = ntuple (_-> length (sizes[2 ]), length (sizes[1 ]))
135
+ @test mortar (A. blocks) == hvcat (rows, permutedims (A. blocks)... )
136
+ end
132
137
end
133
138
134
- ret = mortar ([spzeros (2 ), spzeros (3 )])
139
+ ret = @inferred mortar ([spzeros (2 ), spzeros (3 )])
135
140
@test eltype (ret. blocks) <: SparseVector
136
141
@test axes (ret) == (blockedrange ([2 , 3 ]),)
137
142
138
- ret = mortar (
143
+ ret = @inferred mortar (
139
144
(spzeros (1 , 3 ), spzeros (1 , 4 )),
140
145
(spzeros (2 , 3 ), spzeros (2 , 4 )),
141
146
(spzeros (5 , 3 ), spzeros (5 , 4 )),
157
162
(zeros (2 , 3 ), zeros (111 , 222 )),
158
163
)
159
164
end
165
+
166
+ @testset " sizes_from_blocks" begin
167
+ blocks = reshape ([rand (2 ,2 ), zeros (1 ,2 ),
168
+ zeros (2 ,3 ), rand (1 ,3 )], 2 , 2 );
169
+ @test @inferred BlockArrays. sizes_from_blocks (blocks) == ([2 ,1 ], [2 ,3 ])
170
+ blocks = reshape (
171
+ [rand (2 ,2 ), zeros (1 ,2 ), zeros (4 ,2 ),
172
+ zeros (2 ,3 ), rand (1 ,3 ), zeros (4 ,3 ),
173
+ zeros (2 ,1 ), zeros (1 ,1 ), rand (4 ,1 )], 3 , 3 );
174
+ @test @inferred BlockArrays. sizes_from_blocks (blocks) == ([2 , 1 , 4 ], [2 , 3 , 1 ])
175
+ end
160
176
end
161
177
162
178
@testset " BlockVector" begin
0 commit comments