Skip to content

Commit 8fd5b14

Browse files
committed
Expand types in Unitful test
1 parent 0305d7c commit 8fd5b14

File tree

5 files changed

+35
-23
lines changed

5 files changed

+35
-23
lines changed

ext/DynamicQuantitiesUnitfulExt.jl

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,22 @@ Base.convert(::Type{Unitful.Quantity}, x::DynamicQuantities.Quantity) =
2929
cumulator
3030
end
3131

32-
Base.convert(::Type{DynamicQuantities.Quantity}, x::Unitful.Quantity) =
32+
Base.convert(::Type{DynamicQuantities.Quantity}, x::Unitful.Quantity{T}) where {T} = convert(DynamicQuantities.Quantity{T,DynamicQuantities.DEFAULT_DIM_TYPE}, x)
33+
Base.convert(::Type{DynamicQuantities.Quantity{T,R}}, x::Unitful.Quantity) where {T,R} =
3334
let
3435
value = Unitful.ustrip(Unitful.upreferred(x))
35-
dimension = convert(DynamicQuantities.Dimensions, Unitful.dimension(x))
36-
return DynamicQuantities.Quantity(value, dimension)
36+
dimension = convert(DynamicQuantities.Dimensions{R}, Unitful.dimension(x))
37+
return DynamicQuantities.Quantity(convert(T, value), dimension)
3738
end
3839

39-
Base.convert(::Type{DynamicQuantities.Dimensions}, d::Unitful.Dimensions{D}) where {D} =
40+
Base.convert(::Type{DynamicQuantities.Dimensions}, d::Unitful.Dimensions) = convert(DynamicQuantities.Dimensions{DynamicQuantities.DEFAULT_DIM_TYPE}, d)
41+
Base.convert(::Type{DynamicQuantities.Dimensions{R}}, d::Unitful.Dimensions{D}) where {R,D} =
4042
let
41-
cumulator = DynamicQuantities.Dimensions()
43+
cumulator = DynamicQuantities.Dimensions{R}()
4244
for dim in D
4345
dim_symbol = _map_dim_name_to_dynamic_units(typeof(dim))
4446
dim_power = dim.power
45-
cumulator *= DynamicQuantities.Dimensions(; dim_symbol => dim_power)
47+
cumulator *= DynamicQuantities.Dimensions(R; dim_symbol => dim_power)
4648
end
4749
cumulator
4850
end

test/runtests.jl

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
using SafeTestsets
2+
import Ratios: SimpleRatio
23

3-
@safetestset "Unit tests" begin
4-
include("unittests.jl")
4+
@static if !hasmethod(round, Tuple{Int, SimpleRatio{Int}})
5+
@eval Base.round(T, x::SimpleRatio) = round(T, x.num // x.den)
56
end
67

78
@safetestset "Unitful.jl integration tests" begin
8-
include("unitful.jl")
9+
include("test_unitful.jl")
10+
end
11+
12+
@safetestset "Unit tests" begin
13+
include("unittests.jl")
914
end

test/test_unitful.jl

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import DynamicQuantities
2+
import Unitful
3+
import Unitful: @u_str
4+
import Ratios: SimpleRatio
5+
import SaferIntegers: SafeInt16
6+
using Test
7+
8+
# Try to work with different preferred units:
9+
Unitful.preferunits(u"mA")
10+
Unitful.preferunits(u"km")
11+
12+
for T in [Float16, Float32, Float64], R in [Rational{Int16}, Rational{Int32}, SimpleRatio{Int}, SimpleRatio{SafeInt16}]
13+
x = DynamicQuantities.Quantity(T(0.2), R, length=1, amount=2, current=-1 // 2, luminosity=2 // 5)
14+
x_unitful = T(0.2)u"km*mol^2*A^(-1//2)*cd^(2//5)"
15+
16+
@test convert(Unitful.Quantity, x) x_unitful
17+
@test typeof(convert(DynamicQuantities.Quantity, convert(Unitful.Quantity, x))) <: DynamicQuantities.Quantity{T,DynamicQuantities.DEFAULT_DIM_TYPE}
18+
@test convert(DynamicQuantities.Quantity{T,R}, convert(Unitful.Quantity, x)) x
19+
end

test/unitful.jl

Lines changed: 0 additions & 10 deletions
This file was deleted.

test/unittests.jl

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@ using Ratios: SimpleRatio
44
using SaferIntegers: SafeInt16
55
using Test
66

7-
@static if !hasmethod(round, Tuple{Int, SimpleRatio{Int}})
8-
@eval Base.round(T, x::SimpleRatio) = round(T, x.num // x.den)
9-
end
10-
117
@testset "Basic utilities" begin
128

139
for T in [Float16, Float32, Float64], R in [Rational{Int16}, Rational{Int32}, SimpleRatio{Int}, SimpleRatio{SafeInt16}]

0 commit comments

Comments
 (0)