Skip to content

Commit 17193da

Browse files
committed
Basic Symbolics tests -- pass!
1 parent 0453339 commit 17193da

File tree

3 files changed

+81
-1
lines changed

3 files changed

+81
-1
lines changed

Project.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
2424
QuadGK = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
2525
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
2626
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
27+
Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7"
2728
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
2829
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
2930

3031
[targets]
31-
test = ["Aqua", "QuadGK", "SpecialFunctions", "Statistics", "Test", "Unitful"]
32+
test = ["Aqua", "QuadGK", "SpecialFunctions", "Statistics", "Symbolics", "Test", "Unitful"]

test/runtests.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,3 +1051,7 @@ end
10511051
# JuliaLang/julia#30944
10521052
@test range(0±0, step=1±.1, length=10) isa StepRangeLen
10531053
end
1054+
1055+
@testset "Symbolics" begin
1056+
include("symbolics.jl")
1057+
end

test/symbolics.jl

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
using Symbolics
2+
3+
isapprox(x::Symbolics.Num, y::Symbolics.Num; rest...) = isequal(x, y)
4+
5+
@testset "measurement" begin
6+
@variables x, x_err
7+
8+
@test typeof(@inferred(measurement(x))) == Measurement{Num}
9+
@test typeof(@inferred(measurement(x, 0))) == Measurement{Num}
10+
@test typeof(@inferred(measurement(x, 1))) == Measurement{Num}
11+
@test typeof(@inferred(measurement(x, 0.0))) == Measurement{Num}
12+
@test typeof(@inferred(measurement(x, 1.0))) == Measurement{Num}
13+
@test typeof(@inferred(measurement(x, big(0)))) == Measurement{Num}
14+
@test typeof(@inferred(measurement(x, big(1)))) == Measurement{Num}
15+
@test typeof(@inferred(measurement(x, x_err))) == Measurement{Num}
16+
@test typeof(@inferred(measurement(0, x_err))) == Measurement{Num}
17+
@test typeof(@inferred(measurement(0.0, x_err))) == Measurement{Num}
18+
@test typeof(@inferred(measurement(big(0), x_err))) == Measurement{Num}
19+
20+
@test iszero(@inferred(measurement(x)).err)
21+
@test @inferred(measurement(x)).tag === UInt64(0)
22+
@test length(@inferred(measurement(x)).der) == 0
23+
@test !(@inferred(measurement(x, x_err)).tag === UInt64(0))
24+
@test length(@inferred(measurement(x, 0)).der) == 0
25+
@test length(@inferred(measurement(x, x_err)).der) == 1
26+
end
27+
28+
@testset "Type representation" begin
29+
@variables x_val, x_err
30+
31+
x = measurement(x_val, x_err)
32+
33+
# test pretty printing at the REPL
34+
@test_throws ErrorException repr(x, context=:error_digits=>-4)
35+
@test repr(x) == "x_val ± x_err"
36+
@test repr(x, context=:compact=>true) == "x_val±x_err"
37+
for error_digits in (0, 7)
38+
@test repr(x, context=:error_digits=>error_digits) == "x_val ± x_err"
39+
@test repr(x, context=IOContext(stdout, :error_digits=>error_digits, :compact=>true)) == "x_val±x_err"
40+
end
41+
42+
@test repr("text/plain", x) == "x_val ± x_err"
43+
@test repr("text/plain", x, context=:compact=>true) == "x_val±x_err"
44+
for error_digits in (0, 7)
45+
@test repr("text/plain", x, context=:error_digits=>error_digits) == "x_val ± x_err"
46+
@test repr("text/plain", x, context=IOContext(stdout, :error_digits=>error_digits, :compact=>true)) == "x_val±x_err"
47+
end
48+
49+
@test repr("text/latex", x) == "\$x_val \\pm x_err\$"
50+
@test repr("text/latex", x, context=:compact=>true) == "\$x_val\\pmx_err\$"
51+
for error_digits in (0, 7)
52+
@test repr("text/latex", x, context=:error_digits=>error_digits) == "\$x_val \\pm x_err\$"
53+
@test repr("text/latex", x, context=IOContext(stdout, :error_digits=>error_digits, :compact=>true)) == "\$x_val\\pmx_err\$"
54+
end
55+
56+
for mime in ("text/x-tex", "text/x-latex")
57+
@test repr(mime, x) == "x_val \\pm x_err"
58+
@test repr(mime, x, context=:compact=>true) == "x_val\\pmx_err"
59+
for error_digits in (0, 7)
60+
@test repr(mime, x, context=:error_digits=>error_digits) == "x_val \\pm x_err"
61+
@test repr(mime, x, context=IOContext(stdout, :error_digits=>error_digits, :compact=>true)) == "x_val\\pmx_err"
62+
end
63+
end
64+
end
65+
66+
##### Mathematical Operations
67+
@testset "Addition" begin
68+
@variables x_val, x_err, y_val, y_err
69+
70+
x = measurement(x_val, x_err)
71+
y = measurement(y_val, y_err)
72+
73+
# abs2(v) === abs(x)^2, but maybe faster.
74+
@test @inferred(x + y) measurement(x_val + y_val, sqrt(abs2(x_err) + abs2(y_err)))
75+
end

0 commit comments

Comments
 (0)