changeset 830:21ab60cc0a5c operator_storage_array_of_table

Let parse_rational handle numbers and not just strings
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 12 Jan 2022 14:59:03 +0100
parents 1de10f5b2008
children 760c11e81fd4
files src/SbpOperators/readoperator.jl test/SbpOperators/readoperator_test.jl
diffstat 2 files changed, 16 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/SbpOperators/readoperator.jl	Wed Jan 12 13:07:43 2022 +0100
+++ b/src/SbpOperators/readoperator.jl	Wed Jan 12 14:59:03 2022 +0100
@@ -109,9 +109,13 @@
     end
 end
 
-function parse_rational(str)
-    expr = Meta.parse(replace(str, "/"=>"//"))
-    return eval(:(Rational($expr)))
+function parse_rational(toml)
+    if toml isa String
+        expr = Meta.parse(replace(toml, "/"=>"//"))
+        return eval(:(Rational($expr)))
+    else
+        return Rational(toml)
+    end
 end
 
 sbp_operators_path() = (@__DIR__) * "/operators/"
--- a/test/SbpOperators/readoperator_test.jl	Wed Jan 12 13:07:43 2022 +0100
+++ b/test/SbpOperators/readoperator_test.jl	Wed Jan 12 14:59:03 2022 +0100
@@ -13,6 +13,15 @@
     @test SbpOperators.parse_rational("1/2") == 1//2
     @test SbpOperators.parse_rational("37/13") isa Rational
     @test SbpOperators.parse_rational("37/13") == 37//13
+
+    @test SbpOperators.parse_rational(0.5) isa Rational
+    @test SbpOperators.parse_rational(0.5) == 1//2
+
+    @test SbpOperators.parse_rational("0.5") isa Rational
+    @test SbpOperators.parse_rational("0.5") == 1//2
+
+    @test SbpOperators.parse_rational(2) isa Rational
+    @test SbpOperators.parse_rational(2) == 2//1
 end
 
 @testset "readoperator" begin