Skip to content

Commit eaed58f

Browse files
authored
Fix bug in length of BlockedUnitRange with non-1 start (#167)
1 parent 0303eaf commit eaed58f

File tree

3 files changed

+16
-10
lines changed

3 files changed

+16
-10
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "BlockArrays"
22
uuid = "8e7c35d0-a365-5155-bbbb-fb81a777f24e"
3-
version = "0.15.1"
3+
version = "0.15.2"
44

55
[deps]
66
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"

src/blockaxis.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ _diff(a::AbstractVector) = diff(a)
6262
_diff(a::Tuple) = diff(collect(a))
6363
@inline blocklengths(a::BlockedUnitRange) = [first(a.lasts)-a.first+1; _diff(a.lasts)]
6464

65-
length(a::BlockedUnitRange) = isempty(a.lasts) ? 0 : Integer(last(a.lasts))
65+
length(a::BlockedUnitRange) = isempty(a.lasts) ? 0 : Integer(last(a.lasts)-a.first+1)
6666

6767
"""
6868
blockisequal(a::AbstractUnitRange{Int}, b::AbstractUnitRange{Int})

test/test_blockindices.jl

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -224,17 +224,23 @@ end
224224
end
225225

226226
@testset "BlockIndex indexing" begin
227-
b = blockedrange([1,2,3])
228-
@test b[Block(3)[2]] == b[Block(3)][2] == 5
229-
@test b[Block(3)[2:3]] == b[Block(3)][2:3] == 5:6
227+
b = blockedrange([1,2,3])
228+
@test b[Block(3)[2]] == b[Block(3)][2] == 5
229+
@test b[Block(3)[2:3]] == b[Block(3)][2:3] == 5:6
230230
end
231231

232232
@testset "BlockRange indexing" begin
233-
b = blockedrange([1,2,3])
234-
@test b[Block.(1:2)] == blockedrange([1,2])
235-
@test b[Block.(1:3)] == b
236-
@test_throws BlockBoundsError b[Block.(0:2)]
237-
@test_throws BlockBoundsError b[Block.(1:4)]
233+
b = blockedrange([1,2,3])
234+
@test b[Block.(1:2)] == blockedrange([1,2])
235+
@test b[Block.(1:3)] == b
236+
@test_throws BlockBoundsError b[Block.(0:2)]
237+
@test_throws BlockBoundsError b[Block.(1:4)]
238+
239+
@testset "bug" begin
240+
b = blockedrange(1:4)
241+
@test b[Block.(2:4)] == 2:10
242+
@test length(b[Block.(2:4)]) == 9
243+
end
238244
end
239245

240246
@testset "misc" begin

0 commit comments

Comments
 (0)