Skip to content

Commit a7df659

Browse files
authored
Add == for Zeros-backed CachedArrays (#328)
* Add == for CacheArrays * Test * rm extra using * Add better tests, fix definition for unequal axes * Fix namespace * Move the test to a better file
1 parent 9c335fb commit a7df659

File tree

4 files changed

+42
-1
lines changed

4 files changed

+42
-1
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "LazyArrays"
22
uuid = "5078a376-72f3-5289-bfd5-ec5146d43c02"
3-
version = "2.1.2"
3+
version = "2.1.3"
44

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

src/padded.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,14 @@ function ==(A::CachedVector{<:Any,<:Any,<:Zeros}, B::CachedVector{<:Any,<:Any,<:
125125
view(A.data,OneTo(n)) == view(B.data,OneTo(n))
126126
end
127127

128+
function ==(A::CachedArray{<:Any,<:Any,<:Any,<:Zeros}, B::CachedArray{<:Any,<:Any,<:Any,<:Zeros})
129+
size(A) == size(B) || return false
130+
m = max(A.datasize[1], B.datasize[1])
131+
n = max(A.datasize[2], B.datasize[2])
132+
resizedata!(A, m, n); resizedata!(B, m, n)
133+
view(A.data, OneTo(m), OneTo(n)) == view(B.data, OneTo(m), OneTo(n))
134+
end
135+
128136
function copyto!_layout(::PaddedColumns, ::PaddedColumns, dest::AbstractVector, src::AbstractVector)
129137
length(src) length(dest) || throw(BoundsError())
130138
src_data = paddeddata(src)

test/cachetests.jl

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import LazyArrays: CachedArray, CachedMatrix, CachedVector, PaddedLayout, Cached
88

99
include("infinitearrays.jl")
1010
using .InfiniteArrays
11+
using .InfiniteArrays: OneToInf
1112
using Infinities
1213

1314
@testset "Cache" begin
@@ -456,6 +457,35 @@ using Infinities
456457
view(a, 2:ℵ₀) .= 0.0;
457458
@test a[1:5] == zeros(5)
458459
end
460+
461+
462+
@testset "Issue #327" begin
463+
A = cache(Zeros((1:5, OneToInf())))
464+
B = cache(Zeros((1:5, OneToInf())))
465+
@test A == B
466+
A[2, 7] = 2.0
467+
@test A B
468+
B[2, 7] = 2.0
469+
@test A == B
470+
471+
A = cache(Zeros((OneToInf(), 1:7)))
472+
B = cache(Zeros((OneToInf(), 1:10)))
473+
@test A B
474+
B = cache(Zeros((OneToInf(), 1:7)))
475+
@test A == B
476+
B[2, 2] = 1.0
477+
@test A B
478+
A[2, 2] = 1.0
479+
@test A == B
480+
481+
A = cache(Zeros((OneToInf(), OneToInf())))
482+
B = cache(Zeros((OneToInf(), OneToInf())))
483+
@test A == B
484+
A[5, 7] = 3.4
485+
@test A B
486+
B[5, 7] = 3.4
487+
@test A == B
488+
end
459489
end
460490

461491
end # module

test/paddedtests.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import ArrayLayouts: OnesLayout
77
import Base: setindex
88
using LinearAlgebra
99

10+
include("infinitearrays.jl")
11+
using .InfiniteArrays: OneToInf
12+
1013
# padded block arrays have padded data that is also padded. This is to test this
1114
struct PaddedPadded <: LayoutVector{Int} end
1215

0 commit comments

Comments
 (0)