annotate test/SbpOperators/stencil_set_test.jl @ 2002:4300c59bbeff feature/grids/geometry_functions

Merge feature/grids/manifolds
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 29 Apr 2025 09:00:42 +0200
parents 471a948cd2b2
children
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
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1608
diff changeset
4 using Diffinitive.SbpOperators
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1608
diff changeset
6 import Diffinitive.SbpOperators.Stencil
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1608
diff changeset
7 import Diffinitive.SbpOperators.NestedStencil
732
6114274447f5 Add missing using and imports in test files
Jonatan Werpers <jonatan@werpers.com>
parents: 728
diff changeset
8
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9 @testset "readoperator" begin
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 toml_str = """
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 [meta]
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
12 authors = "Ken Mattson"
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
13 description = "Standard operators for equidistant grids"
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 type = "equidistant"
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
15 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
16
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
17 [[stencil_set]]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
18
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
19 order = 2
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
20 test = 2
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
21
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 H.inner = ["1"]
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
23 H.closure = ["1/2"]
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 D1.inner_stencil = ["-1/2", "0", "1/2"]
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 D1.closure_stencils = [
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
27 {s = ["-1", "1"], c = 1},
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
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
30 D2.inner_stencil = ["1", "-2", "1"]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
31 D2.closure_stencils = [
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
32 {s = ["1", "-2", "1"], c = 1},
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 ]
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
35 e.closure = ["1"]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
36 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
37
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
38 [[stencil_set]]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
39
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
40 order = 4
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
41 test = 1
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
42 H.inner = ["1"]
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
43 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
44
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 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
46 D2.closure_stencils = [
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
47 {s = [ "2", "-5", "4", "-1", "0", "0"], c = 1},
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
48 {s = [ "1", "-2", "1", "0", "0", "0"], c = 2},
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
49 {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
50 {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
51 ]
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
52
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
53 e.closure = ["1"]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
54 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
55
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
56 [[stencil_set]]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
57 order = 4
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
58 test = 2
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
59
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
60 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
61 """
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63 parsed_toml = TOML.parse(toml_str)
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
65 @testset "get_stencil_set" begin
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
66 @test get_stencil_set(parsed_toml; order = 2) isa Dict
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
67 @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
68 @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
69 @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
70
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
71 @test_throws ArgumentError get_stencil_set(parsed_toml; test = 2)
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
72 @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
73 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
74
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
75 @testset "parse_stencil" begin
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
76 toml = """
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
77 s1 = ["-1/12","4/3","-5/2","4/3","-1/12"]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
78 s2 = {s = ["2", "-5", "4", "-1", "0", "0"], c = 1}
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
79 s3 = {s = ["1", "-2", "1", "0", "0", "0"], c = 2}
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
80 s4 = "not a stencil"
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
81 s5 = [-1, 4, 3]
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
82 s6 = {k = ["1", "-2", "1", "0", "0", "0"], c = 2}
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
83 s7 = {s = [-1, 4, 3], c = 2}
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
84 s8 = {s = ["1", "-2", "1", "0", "0", "0"], c = [2,2]}
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
85 """
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
86
809
219c9661e700 Always parse as rationals
Jonatan Werpers <jonatan@werpers.com>
parents: 769
diff changeset
87 @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
88 @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
89 @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
90
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
91 @test_throws ArgumentError parse_stencil(TOML.parse(toml)["s4"])
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
92 @test_throws ArgumentError parse_stencil(TOML.parse(toml)["s5"])
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
93 @test_throws ArgumentError parse_stencil(TOML.parse(toml)["s6"])
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
94 @test_throws ArgumentError parse_stencil(TOML.parse(toml)["s7"])
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
95 @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
96
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
97 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
98
769
0158c3fd521c Merge in default
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
99 @test parse_stencil.(stencil_set["D2"]["closure_stencils"]) == [
809
219c9661e700 Always parse as rationals
Jonatan Werpers <jonatan@werpers.com>
parents: 769
diff changeset
100 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
101 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
102 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
103 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
104 ]
828
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
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)["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
108 @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
109 @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
110 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
111
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 @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
113 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
114 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
115 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
116 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
117 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
118 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
119 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
120
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 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
122 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
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
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["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
126 @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
127 @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
128 @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
129 @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
130 @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
131
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["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
133 @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
134 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
135
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 @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
137 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
138 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
139 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
140
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 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
142 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
143 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
144 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
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
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["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
148 @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
149
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["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
151 @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
152 @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
153 @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
154 end
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
155 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
156
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 @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
158 @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
159 @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
160 @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
161 @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
162 @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
163 @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
164
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) 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
166 @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
167
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") 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
169 @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
170
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) 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
172 @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
173 end
892
06c510d40ebb Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents: 831
diff changeset
174
06c510d40ebb Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents: 831
diff changeset
175 @testset "parse_nested_stencil" begin
06c510d40ebb Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents: 831
diff changeset
176 toml = TOML.parse("""
06c510d40ebb Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents: 831
diff changeset
177 s1 = [["1/2", "1/2", "0"],[ "-1/2", "-1", "-1/2"],["0", "1/2", "1/2"]]
06c510d40ebb Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents: 831
diff changeset
178 s2 = {s = [[ "2", "-1", "0"],[ "-3", "1", "0"],["1", "0", "0"]], c = 1}
06c510d40ebb Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents: 831
diff changeset
179 s3 = {s = [[ "2", "-1", "0"],[ "-3", "1", "0"],["1", "0", "0"]], c = 2}
06c510d40ebb Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents: 831
diff changeset
180 """)
06c510d40ebb Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents: 831
diff changeset
181
06c510d40ebb Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents: 831
diff changeset
182 @test parse_nested_stencil(toml["s1"]) == CenteredNestedStencil((1//2, 1//2, 0//1),( -1//2, -1//1, -1//2),(0//1, 1//2, 1//2))
06c510d40ebb Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents: 831
diff changeset
183 @test parse_nested_stencil(toml["s2"]) == NestedStencil((2//1, -1//1, 0//1),( -3//1, 1//1, 0//1),(1//1, 0//1, 0//1), center = 1)
06c510d40ebb Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents: 831
diff changeset
184 @test parse_nested_stencil(toml["s3"]) == NestedStencil((2//1, -1//1, 0//1),( -3//1, 1//1, 0//1),(1//1, 0//1, 0//1), center = 2)
895
d24b331547f3 Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents: 892
diff changeset
185
d24b331547f3 Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents: 892
diff changeset
186 @test parse_nested_stencil(Float64, toml["s1"]) == CenteredNestedStencil((1/2, 1/2, 0.),( -1/2, -1., -1/2),(0., 1/2, 1/2))
d24b331547f3 Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents: 892
diff changeset
187 @test parse_nested_stencil(Int, toml["s2"]) == NestedStencil((2, -1, 0),( -3, 1, 0),(1, 0, 0), center = 1)
892
06c510d40ebb Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents: 831
diff changeset
188 end