Mercurial > repos > public > sbplib_julia
annotate test/SbpOperators/readoperator_test.jl @ 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 | ca182cbb8f49 |
children | 760c11e81fd4 |
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 |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 @testset "parse_rational" begin |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 @test SbpOperators.parse_rational("1") isa Rational |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 @test SbpOperators.parse_rational("1") == 1//1 |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 @test SbpOperators.parse_rational("1/2") isa Rational |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 @test SbpOperators.parse_rational("1/2") == 1//2 |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 @test SbpOperators.parse_rational("37/13") isa Rational |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 @test SbpOperators.parse_rational("37/13") == 37//13 |
830
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
16 |
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
17 @test SbpOperators.parse_rational(0.5) isa Rational |
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
18 @test SbpOperators.parse_rational(0.5) == 1//2 |
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
19 |
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
20 @test SbpOperators.parse_rational("0.5") isa Rational |
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
21 @test SbpOperators.parse_rational("0.5") == 1//2 |
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
22 |
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
23 @test SbpOperators.parse_rational(2) isa Rational |
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
24 @test SbpOperators.parse_rational(2) == 2//1 |
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 end |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
26 |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 @testset "readoperator" begin |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
28 toml_str = """ |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 [meta] |
769 | 30 authors = "Ken Mattson" |
31 description = "Standard operators for equidistant grids" | |
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
32 type = "equidistant" |
769 | 33 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
|
34 |
769 | 35 [[stencil_set]] |
36 | |
37 order = 2 | |
38 test = 2 | |
39 | |
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
40 H.inner = ["1"] |
769 | 41 H.closure = ["1/2"] |
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
43 D1.inner_stencil = ["-1/2", "0", "1/2"] |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
44 D1.closure_stencils = [ |
769 | 45 {s = ["-1", "1"], c = 1}, |
46 ] | |
47 | |
48 D2.inner_stencil = ["1", "-2", "1"] | |
49 D2.closure_stencils = [ | |
50 {s = ["1", "-2", "1"], c = 1}, | |
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 ] |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
52 |
769 | 53 e.closure = ["1"] |
54 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
|
55 |
769 | 56 [[stencil_set]] |
57 | |
58 order = 4 | |
59 test = 1 | |
60 H.inner = ["1"] | |
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
61 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
|
62 |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
63 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
|
64 D2.closure_stencils = [ |
769 | 65 {s = [ "2", "-5", "4", "-1", "0", "0"], c = 1}, |
66 {s = [ "1", "-2", "1", "0", "0", "0"], c = 2}, | |
67 {s = [ "-4/43", "59/43", "-110/43", "59/43", "-4/43", "0"], c = 3}, | |
68 {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
|
69 ] |
769 | 70 |
71 e.closure = ["1"] | |
72 d1.closure = {s = ["-11/6", "3", "-3/2", "1/3"], c = 1} | |
73 | |
74 [[stencil_set]] | |
75 order = 4 | |
76 test = 2 | |
77 | |
78 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
|
79 """ |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
81 parsed_toml = TOML.parse(toml_str) |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 |
769 | 83 @testset "get_stencil_set" begin |
84 @test get_stencil_set(parsed_toml; order = 2) isa Dict | |
85 @test get_stencil_set(parsed_toml; order = 2) == parsed_toml["stencil_set"][1] | |
86 @test get_stencil_set(parsed_toml; test = 1) == parsed_toml["stencil_set"][2] | |
87 @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
|
88 |
769 | 89 @test_throws ArgumentError get_stencil_set(parsed_toml; test = 2) |
90 @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
|
91 end |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
92 |
769 | 93 @testset "parse_stencil" begin |
94 toml = """ | |
95 s1 = ["-1/12","4/3","-5/2","4/3","-1/12"] | |
96 s2 = {s = ["2", "-5", "4", "-1", "0", "0"], c = 1} | |
97 s3 = {s = ["1", "-2", "1", "0", "0", "0"], c = 2} | |
98 s4 = "not a stencil" | |
99 s5 = [-1, 4, 3] | |
100 s6 = {k = ["1", "-2", "1", "0", "0", "0"], c = 2} | |
101 s7 = {s = [-1, 4, 3], c = 2} | |
102 s8 = {s = ["1", "-2", "1", "0", "0", "0"], c = [2,2]} | |
103 """ | |
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
104 |
809
219c9661e700
Always parse as rationals
Jonatan Werpers <jonatan@werpers.com>
parents:
769
diff
changeset
|
105 @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
|
106 @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
|
107 @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
|
108 |
769 | 109 @test_throws ArgumentError parse_stencil(TOML.parse(toml)["s4"]) |
110 @test_throws ArgumentError parse_stencil(TOML.parse(toml)["s5"]) | |
111 @test_throws ArgumentError parse_stencil(TOML.parse(toml)["s6"]) | |
112 @test_throws ArgumentError parse_stencil(TOML.parse(toml)["s7"]) | |
113 @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
|
114 |
769 | 115 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
|
116 |
769 | 117 @test parse_stencil.(stencil_set["D2"]["closure_stencils"]) == [ |
809
219c9661e700
Always parse as rationals
Jonatan Werpers <jonatan@werpers.com>
parents:
769
diff
changeset
|
118 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
|
119 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
|
120 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
|
121 Stencil(-1//49, 0//1, 59//49, -118//49, 64//49, -4//49; center=4), |
769 | 122 ] |
828
ca182cbb8f49
Add a method to parse_stencil which allows controlling the element type
Jonatan Werpers <jonatan@werpers.com>
parents:
809
diff
changeset
|
123 |
ca182cbb8f49
Add a method to parse_stencil which allows controlling the element type
Jonatan Werpers <jonatan@werpers.com>
parents:
809
diff
changeset
|
124 |
ca182cbb8f49
Add a method to parse_stencil which allows controlling the element type
Jonatan Werpers <jonatan@werpers.com>
parents:
809
diff
changeset
|
125 @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
|
126 @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
|
127 @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
|
128 end |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
129 end |