annotate test/SbpOperators/readoperator_test.jl @ 877:dd2ab001a7b6 feature/equidistant_grid/refine

Implement refine function, move exports to the top of the file, change location of constuctors. The constructors were changed have only one inner constructor and simpler outer constructors.
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 14 Feb 2022 09:39:58 +0100
parents 760c11e81fd4
children 06c510d40ebb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 using Test
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 using TOML
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 using Sbplib.SbpOperators
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5
732
6114274447f5 Add missing using and imports in test files
Jonatan Werpers <jonatan@werpers.com>
parents: 728
diff changeset
6 import Sbplib.SbpOperators.Stencil
6114274447f5 Add missing using and imports in test files
Jonatan Werpers <jonatan@werpers.com>
parents: 728
diff changeset
7
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 @testset "readoperator" begin
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9 toml_str = """
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 [meta]
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
11 authors = "Ken Mattson"
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
12 description = "Standard operators for equidistant grids"
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 type = "equidistant"
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
14 cite = "A paper a long time ago in a galaxy far far away."
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
16 [[stencil_set]]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
17
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
18 order = 2
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
19 test = 2
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
20
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21 H.inner = ["1"]
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
22 H.closure = ["1/2"]
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 D1.inner_stencil = ["-1/2", "0", "1/2"]
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 D1.closure_stencils = [
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
26 {s = ["-1", "1"], c = 1},
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
27 ]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
28
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
29 D2.inner_stencil = ["1", "-2", "1"]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
30 D2.closure_stencils = [
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
31 {s = ["1", "-2", "1"], c = 1},
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 ]
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
34 e.closure = ["1"]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
35 d1.closure = {s = ["-3/2", "2", "-1/2"], c = 1}
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
37 [[stencil_set]]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
38
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
39 order = 4
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
40 test = 1
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
41 H.inner = ["1"]
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42 H.closure = ["17/48", "59/48", "43/48", "49/48"]
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
43
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44 D2.inner_stencil = ["-1/12","4/3","-5/2","4/3","-1/12"]
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 D2.closure_stencils = [
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
46 {s = [ "2", "-5", "4", "-1", "0", "0"], c = 1},
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
47 {s = [ "1", "-2", "1", "0", "0", "0"], c = 2},
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
48 {s = [ "-4/43", "59/43", "-110/43", "59/43", "-4/43", "0"], c = 3},
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
49 {s = [ "-1/49", "0", "59/49", "-118/49", "64/49", "-4/49"], c = 4},
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50 ]
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
51
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
52 e.closure = ["1"]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
53 d1.closure = {s = ["-11/6", "3", "-3/2", "1/3"], c = 1}
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
54
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
55 [[stencil_set]]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
56 order = 4
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
57 test = 2
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
58
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
59 H.closure = ["-1/49", "0", "59/49", "-118/49", "64/49", "-4/49"]
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
60 """
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62 parsed_toml = TOML.parse(toml_str)
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
64 @testset "get_stencil_set" begin
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
65 @test get_stencil_set(parsed_toml; order = 2) isa Dict
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
66 @test get_stencil_set(parsed_toml; order = 2) == parsed_toml["stencil_set"][1]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
67 @test get_stencil_set(parsed_toml; test = 1) == parsed_toml["stencil_set"][2]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
68 @test get_stencil_set(parsed_toml; order = 4, test = 2) == parsed_toml["stencil_set"][3]
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
69
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
70 @test_throws ArgumentError get_stencil_set(parsed_toml; test = 2)
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
71 @test_throws ArgumentError get_stencil_set(parsed_toml; order = 4)
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
72 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
73
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
74 @testset "parse_stencil" begin
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
75 toml = """
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
76 s1 = ["-1/12","4/3","-5/2","4/3","-1/12"]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
77 s2 = {s = ["2", "-5", "4", "-1", "0", "0"], c = 1}
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
78 s3 = {s = ["1", "-2", "1", "0", "0", "0"], c = 2}
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
79 s4 = "not a stencil"
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
80 s5 = [-1, 4, 3]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
81 s6 = {k = ["1", "-2", "1", "0", "0", "0"], c = 2}
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
82 s7 = {s = [-1, 4, 3], c = 2}
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
83 s8 = {s = ["1", "-2", "1", "0", "0", "0"], c = [2,2]}
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
84 """
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
85
809
219c9661e700 Always parse as rationals
Jonatan Werpers <jonatan@werpers.com>
parents: 769
diff changeset
86 @test parse_stencil(TOML.parse(toml)["s1"]) == CenteredStencil(-1//12, 4//3, -5//2, 4//3, -1//12)
219c9661e700 Always parse as rationals
Jonatan Werpers <jonatan@werpers.com>
parents: 769
diff changeset
87 @test parse_stencil(TOML.parse(toml)["s2"]) == Stencil(2//1, -5//1, 4//1, -1//1, 0//1, 0//1; center=1)
219c9661e700 Always parse as rationals
Jonatan Werpers <jonatan@werpers.com>
parents: 769
diff changeset
88 @test parse_stencil(TOML.parse(toml)["s3"]) == Stencil(1//1, -2//1, 1//1, 0//1, 0//1, 0//1; center=2)
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
89
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
90 @test_throws ArgumentError parse_stencil(TOML.parse(toml)["s4"])
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
91 @test_throws ArgumentError parse_stencil(TOML.parse(toml)["s5"])
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
92 @test_throws ArgumentError parse_stencil(TOML.parse(toml)["s6"])
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
93 @test_throws ArgumentError parse_stencil(TOML.parse(toml)["s7"])
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
94 @test_throws ArgumentError parse_stencil(TOML.parse(toml)["s8"])
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
95
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
96 stencil_set = get_stencil_set(parsed_toml; order = 4, test = 1)
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
97
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
98 @test parse_stencil.(stencil_set["D2"]["closure_stencils"]) == [
809
219c9661e700 Always parse as rationals
Jonatan Werpers <jonatan@werpers.com>
parents: 769
diff changeset
99 Stencil( 2//1, -5//1, 4//1, -1//1, 0//1, 0//1; center=1),
219c9661e700 Always parse as rationals
Jonatan Werpers <jonatan@werpers.com>
parents: 769
diff changeset
100 Stencil( 1//1, -2//1, 1//1, 0//1, 0//1, 0//1; center=2),
219c9661e700 Always parse as rationals
Jonatan Werpers <jonatan@werpers.com>
parents: 769
diff changeset
101 Stencil(-4//43, 59//43, -110//43, 59//43, -4//43, 0//1; center=3),
219c9661e700 Always parse as rationals
Jonatan Werpers <jonatan@werpers.com>
parents: 769
diff changeset
102 Stencil(-1//49, 0//1, 59//49, -118//49, 64//49, -4//49; center=4),
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
103 ]
828
ca182cbb8f49 Add a method to parse_stencil which allows controlling the element type
Jonatan Werpers <jonatan@werpers.com>
parents: 809
diff changeset
104
ca182cbb8f49 Add a method to parse_stencil which allows controlling the element type
Jonatan Werpers <jonatan@werpers.com>
parents: 809
diff changeset
105
ca182cbb8f49 Add a method to parse_stencil which allows controlling the element type
Jonatan Werpers <jonatan@werpers.com>
parents: 809
diff changeset
106 @test parse_stencil(Float64, TOML.parse(toml)["s1"]) == CenteredStencil(-1/12, 4/3, -5/2, 4/3, -1/12)
ca182cbb8f49 Add a method to parse_stencil which allows controlling the element type
Jonatan Werpers <jonatan@werpers.com>
parents: 809
diff changeset
107 @test parse_stencil(Float64, TOML.parse(toml)["s2"]) == Stencil(2/1, -5/1, 4/1, -1/1, 0/1, 0/1; center=1)
ca182cbb8f49 Add a method to parse_stencil which allows controlling the element type
Jonatan Werpers <jonatan@werpers.com>
parents: 809
diff changeset
108 @test parse_stencil(Float64, TOML.parse(toml)["s3"]) == Stencil(1/1, -2/1, 1/1, 0/1, 0/1, 0/1; center=2)
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
109 end
831
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
110
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
111 @testset "parse_scalar" begin
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
112 toml = TOML.parse("""
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
113 a1 = 1
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
114 a2 = 1.5
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
115 a3 = 1.0
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
116 a4 = 10
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
117 a5 = "1/2"
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
118 a6 = "1.5"
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
119
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
120 e1 = [1,2,3]
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
121 e2 = "a string value"
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
122 """)
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
123
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
124 @test parse_scalar(toml["a1"]) == 1//1
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
125 @test parse_scalar(toml["a2"]) == 3//2
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
126 @test parse_scalar(toml["a3"]) == 1//1
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
127 @test parse_scalar(toml["a4"]) == 10//1
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
128 @test parse_scalar(toml["a5"]) == 1//2
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
129 @test parse_scalar(toml["a6"]) == 3//2
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
130
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
131 @test_throws ArgumentError parse_scalar(toml["e1"])
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
132 @test_throws ArgumentError parse_scalar(toml["e2"])
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
133 end
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
134
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
135 @testset "parse_tuple" begin
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
136 toml = TOML.parse("""
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
137 t1 = [1,3,4]
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
138 t2 = ["1/2","3/4","2/1"]
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
139
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
140 e1 = "not a tuple"
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
141 e2.a="1"
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
142 e3 = 1
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
143 e4 = ["1/2","3/4","not a number"]
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
144 """)
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
145
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
146 @test parse_tuple(toml["t1"]) == (1//1,3//1,4//1)
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
147 @test parse_tuple(toml["t2"]) == (1//2,3//4,2//1)
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
148
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
149 @test_throws ArgumentError parse_tuple(toml["e1"])
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
150 @test_throws ArgumentError parse_tuple(toml["e2"])
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
151 @test_throws ArgumentError parse_tuple(toml["e3"])
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
152 @test_throws ArgumentError parse_tuple(toml["e4"])
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
153 end
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
154 end
831
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
155
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
156 @testset "parse_rational" begin
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
157 @test SbpOperators.parse_rational("1") isa Rational
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
158 @test SbpOperators.parse_rational("1") == 1//1
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
159 @test SbpOperators.parse_rational("1/2") isa Rational
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
160 @test SbpOperators.parse_rational("1/2") == 1//2
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
161 @test SbpOperators.parse_rational("37/13") isa Rational
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
162 @test SbpOperators.parse_rational("37/13") == 37//13
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
163
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
164 @test SbpOperators.parse_rational(0.5) isa Rational
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
165 @test SbpOperators.parse_rational(0.5) == 1//2
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
166
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
167 @test SbpOperators.parse_rational("0.5") isa Rational
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
168 @test SbpOperators.parse_rational("0.5") == 1//2
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
169
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
170 @test SbpOperators.parse_rational(2) isa Rational
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
171 @test SbpOperators.parse_rational(2) == 2//1
760c11e81fd4 Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents: 830
diff changeset
172 end