annotate +grid/evalOnTest.m @ 1344:b4e5e45bd239 feature/D2_boundary_opt

Remove round off zeros from D2Nonequidistant operators
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Sat, 15 Oct 2022 15:48:20 +0200
parents 190941ec12d8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
157
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 function tests = evalOnTest()
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 tests = functiontests(localfunctions);
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 end
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 function testInputConstant(testCase)
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 in = {
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 0,
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 47,
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9 1,
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 [1; 2],
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 };
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 out = {
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 [0; 0; 0],
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 [47; 47; 47],
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16 [1; 1; 1],
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 [1; 2; 1; 2; 1; 2],
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 };
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 g = getTestGrid('1d');
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 for i = 1:length(in)
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 gf = grid.evalOn(g,in{i});
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 testCase.verifyEqual(gf, out{i});
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 end
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 end
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27
277
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
28 % evalOn should give and error if the number of inputs to func is not the same as
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
29 % the number of dimensions of the grid.
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
30 function testNumberOfInputs(testCase)
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
31 cases = {
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
32 {getTestGrid('1d'), @(x,y)x-y},
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
33 {getTestGrid('2d'), @(x)x },
623
190941ec12d8 Print cleaning of evalOn and evalOnTest
Jonatan Werpers <jonatan@werpers.com>
parents: 277
diff changeset
34 };
277
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
35
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
36 for i = 1:length(cases)
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
37 g = cases{i}{1};
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
38 f = cases{i}{2};
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
39 testCase.verifyError(@()grid.evalOn(g, f),'grid:evalOn:WrongNumberOfInputs',sprintf('in(%d) = %s',i,toString(f)));
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
40 end
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
41 end
4c3f55a628c8 Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 157
diff changeset
42
157
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
43 function testInputScalarFunction1d(testCase)
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44 in = {
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 @(x)1+x*0,
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46 @(x)x,
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
47 @(x)x.*x,
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48 };
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
49
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50 out = {
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
51 [1; 1; 1],
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
52 [0; 1; 2],
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53 [0; 1; 4],
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
54 };
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
55
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
56 g = getTestGrid('1d');
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
57
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
58 for i = 1:length(in)
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
59 gf = grid.evalOn(g,in{i});
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
60 testCase.verifyEqual(gf, out{i});
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61 end
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62 end
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 function testInputScalarFunction2d(testCase)
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
65 in = {
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
66 @(x,y)1+x*0,
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
67 @(x,y)x-y,
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
68 @(x,y)x./(1+y),
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
69 };
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
70
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
71 out = {
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
72 [1; 1; 1; 1; 1; 1; 1; 1; 1],
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
73 [0; -1; -2; 1; 0; -1; 2; 1; 0],
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
74 [0; 0; 0; 1; 1/2; 1/3; 2; 1; 2/3],
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
75 };
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
76
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
77 g = getTestGrid('2d');
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
78
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
79 for i = 1:length(in)
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
80 gf = grid.evalOn(g, in{i});
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
81 testCase.verifyEqual(gf, out{i});
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
82 end
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
83 end
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
84
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
85
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
86 function testInputVectorFunction(testCase)
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
87 g = getTestGrid('1d');
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
88 in = @(x)[x; -2*x];
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
89 out = [0; 0; 1; -2; 2; -4];
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
90
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
91 gf = grid.evalOn(g,in);
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
92 testCase.verifyEqual(gf, out);
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
93
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
94 g = getTestGrid('2d');
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
95 in = @(x,y)[x.^2; -2*y];
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
96 out = [
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
97 0; 0;
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
98 0; -2;
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
99 0; -4;
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
100 1; 0;
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
101 1; -2;
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
102 1; -4;
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
103 4; 0;
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
104 4; -2;
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
105 4; -4;
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
106 ];
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
107
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
108 gf = grid.evalOn(g,in);
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
109 testCase.verifyEqual(gf, out);
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
110 end
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
111
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
112
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
113 function testInputErrorVectorValued(testCase)
623
190941ec12d8 Print cleaning of evalOn and evalOnTest
Jonatan Werpers <jonatan@werpers.com>
parents: 277
diff changeset
114 in = {
157
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
115 [1,2,3],
623
190941ec12d8 Print cleaning of evalOn and evalOnTest
Jonatan Werpers <jonatan@werpers.com>
parents: 277
diff changeset
116 @(x,y)[x,-y],
157
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
117 };
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
118
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
119 g = getTestGrid('2d');
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
120
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
121 for i = 1:length(in)
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
122 testCase.verifyError(@()grid.evalOn(g, in{i}),'grid:evalOn:VectorValuedWrongDim',sprintf('in(%d) = %s',i,toString(in{i})));
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
123 end
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
124 end
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
125
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
126 function g = getTestGrid(d)
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
127 switch d
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
128 case '1d'
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
129 g = grid.equidistant(3,{0,2});
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
130 case '2d'
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
131 g = grid.equidistant([3,3],{0,2},{0,2});
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
132 end
ea8103ad2cc5 Added function eval on.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
133 end