Mercurial > repos > public > sbplib_julia
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