Skip to content

Commit bada5cf

Browse files
committed
Add isless and == for numbers
1 parent 6538750 commit bada5cf

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/utils.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ Base.iszero(q::Quantity) = iszero(q.value)
3737
Base.getindex(d::Dimensions, k::Symbol) = getfield(d, k)
3838
Base.:(==)(l::Dimensions, r::Dimensions) = @all_dimensions(==, l, r)
3939
Base.:(==)(l::Quantity, r::Quantity) = l.value == r.value && l.dimensions == r.dimensions
40+
Base.:(==)(l, r::Quantity) = ustrip(l) == ustrip(r) && dimension(l) == dimension(r)
41+
Base.:(==)(l::Quantity, r) = ustrip(l) == ustrip(r) && dimension(l) == dimension(r)
42+
Base.isless(l::Quantity, r::Quantity) = dimension(l) == dimension(r) ? isless(ustrip(l), ustrip(r)) : throw(DimensionError(l, r))
43+
Base.isless(l::Quantity, r) = dimension(l) == dimension(r) ? isless(ustrip(l), r) : throw(DimensionError(l, r))
44+
Base.isless(l, r::Quantity) = dimension(l) == dimension(r) ? isless(l, ustrip(r)) : throw(DimensionError(l, r))
4045
Base.isapprox(l::Quantity, r::Quantity; kws...) = isapprox(l.value, r.value; kws...) && l.dimensions == r.dimensions
4146
Base.length(::Dimensions) = 1
4247
Base.length(::Quantity) = 1

test/unittests.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,19 @@ end
220220
@test cbrt(z) == Quantity(cbrt(-52), length=1 // 3, mass=2 // 3)
221221

222222
@test 1.0 * (Dimensions(length=3)^2) == Quantity(1.0, length=6)
223+
224+
x = 0.9u"km/s"
225+
y = 0.3 * x
226+
@test x > y
227+
@test y < x
228+
229+
x = Quantity(1.0)
230+
231+
@test x == 1.0
232+
@test x >= 1.0
233+
@test x < 2.0
234+
235+
@test_throws DimensionError x < 1.0u"m"
223236
end
224237

225238
@testset "Manual construction" begin

0 commit comments

Comments
 (0)