Skip to content

Commit 685b4f4

Browse files
authored
Fix equality/isapprox tests for comparisons between different AbstractAffineMap subtypes (#86)
Co-authored-by: Greg Peairs <gpeairs@amazon.com>
1 parent 78f5a5c commit 685b4f4

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

src/affine.jl

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -60,23 +60,23 @@ function Base.isapprox(t1::LinearMap, t2::LinearMap; kwargs...)
6060
end
6161

6262
function Base.isapprox(t1::LinearMap, t2::Translation; kwargs...)
63-
isapprox(vecnorm(t1.linear), 0; kwargs...) &&
64-
isapprox(vecnorm(t2.translation),0; kwargs...)
63+
isapprox(t1.linear, one(t1.linear); kwargs...) &&
64+
isapprox(norm(t2.translation),0; kwargs...)
6565
end
6666

6767
function Base.isapprox(t1::Translation, t2::LinearMap; kwargs...)
68-
isapprox(vecnorm(t1.translation), 0; kwargs...) &&
69-
isapprox(vecnorm(t2.linear),0; kwargs...)
68+
isapprox(norm(t1.translation), 0; kwargs...) &&
69+
isapprox(t2.linear, one(t2.linear); kwargs...)
7070
end
7171

7272
function Base.:(==)(t1::LinearMap, t2::Translation)
73-
vecnorm(t1.linear) == 0 &&
74-
0 == vecnorm(t2.translation)
73+
isone(t1.linear) &&
74+
0 == norm(t2.translation)
7575
end
7676

7777
function Base.:(==)(t1::Translation, t2::LinearMap)
78-
vecnorm(t1.translation) == 0 &&
79-
vecnorm(t2.linear) == 0
78+
norm(t1.translation) == 0 &&
79+
isone(t2.linear)
8080
end
8181

8282
transform_deriv(trans::LinearMap, x) = trans.linear
@@ -165,44 +165,44 @@ function Base.isapprox(t1::AffineMap, t2::AffineMap; kwargs...)
165165
end
166166

167167
function Base.isapprox(t1::AffineMap, t2::Translation; kwargs...)
168-
isapprox(vecnorm(t1.linear), 0; kwargs...) &&
168+
isapprox(t1.linear, one(t1.linear); kwargs...) &&
169169
isapprox(t1.translation, t2.translation; kwargs...)
170170
end
171171

172172
function Base.isapprox(t1::Translation, t2::AffineMap; kwargs...)
173-
isapprox(vecnorm(t2.linear), 0; kwargs...) &&
173+
isapprox(t2.linear, one(t2.linear); kwargs...) &&
174174
isapprox(t1.translation, t2.translation; kwargs...)
175175
end
176176

177177
function Base.isapprox(t1::AffineMap, t2::LinearMap; kwargs...)
178178
isapprox(t1.linear, t2.linear; kwargs...) &&
179-
isapprox(vecnorm(t1.translation), 0; kwargs...)
179+
isapprox(norm(t1.translation), 0; kwargs...)
180180
end
181181

182182
function Base.isapprox(t1::LinearMap, t2::AffineMap; kwargs...)
183183
isapprox(t1.linear, t2.linear; kwargs...) &&
184-
isapprox(0, vecnorm(t2.translation); kwargs...)
184+
isapprox(0, norm(t2.translation); kwargs...)
185185
end
186186

187187

188188
function Base.:(==)(t1::AffineMap, t2::Translation)
189-
vecnorm(t1.linear) == 0 &&
189+
isone(t1.linear) &&
190190
t1.translation == t2.translation
191191
end
192192

193193
function Base.:(==)(t1::Translation, t2::AffineMap)
194-
vecnorm(t2.linear) == 0 &&
194+
isone(t2.linear) &&
195195
t1.translation == t2.translation
196196
end
197197

198198
function Base.:(==)(t1::AffineMap, t2::LinearMap)
199199
t1.linear == t2.linear &&
200-
vecnorm(t1.translation) == 0
200+
norm(t1.translation) == 0
201201
end
202202

203203
function Base.:(==)(t1::LinearMap, t2::AffineMap)
204204
t1.linear == t2.linear &&
205-
0 == vecnorm(t2.translation)
205+
0 == norm(t2.translation)
206206
end
207207

208208
recenter(trans::AbstractMatrix, origin::Union{AbstractVector, Tuple}) = recenter(LinearMap(trans), origin)

test/affine.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,13 @@ end
7373
@test inv(L)(L(x)) x
7474
@test inv(L)(L(y)) y
7575
@test (LL)(x) == (M*M)*x
76+
@test L == AffineMap(M, [0, 0])
7677
end
7778

7879
@testset "Translation" begin
7980
x = SVector(1.0, 2.0)
8081
trans = Translation(2.0, -1.0)
82+
@test trans == AffineMap([1 0; 0 1], [2.0, -1.0])
8183

8284
# Inverse
8385
@test inv(trans) == Translation(-2.0, 1.0)

0 commit comments

Comments
 (0)