1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 package fr.ifremer.isisfish.util;
27
28 import java.lang.reflect.Method;
29 import java.util.HashMap;
30 import java.util.Map;
31
32 import org.junit.Assert;
33 import org.junit.Test;
34
35 import fr.ifremer.isisfish.AbstractIsisFishTest;
36 import fr.ifremer.isisfish.equation.EmigrationEquation;
37 import fr.ifremer.isisfish.equation.PopulationGrowth;
38 import fr.ifremer.isisfish.equation.PopulationGrowthReverse;
39 import fr.ifremer.isisfish.equation.PopulationReproductionEquation;
40 import fr.ifremer.isisfish.simulator.SimulationContext;
41 import fr.ifremer.isisfish.simulator.SimulationPreScript;
42
43
44
45
46
47
48
49
50
51
52 public class EvaluatorHelperTest extends AbstractIsisFishTest {
53
54
55
56
57 @Test
58 public void testNormalizeClassName() {
59 Assert.assertEquals("Test", EvaluatorHelper.normalizeClassName("Test"));
60 Assert.assertEquals("Te_t", EvaluatorHelper.normalizeClassName("Te/t"));
61 Assert.assertEquals("org_test_Test", EvaluatorHelper
62 .normalizeClassName("org.test.Test"));
63 }
64
65
66
67
68 @Test
69 public void testCheck() {
70 String equationContent = "return 12.0;";
71
72 int result = EvaluatorHelper.check(EmigrationEquation.class,
73 equationContent, null);
74 Assert.assertEquals(0, result);
75 }
76
77
78
79
80 @Test
81 public void testEvaluate() {
82 String equationContent = "return age * 2.0;";
83
84 Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
85 "TestEvaluate", PopulationGrowth.class, equationContent, null, 2.0, null);
86
87 Assert.assertNotNull(result);
88 Assert.assertEquals("4.0", result.toString());
89 }
90
91
92
93
94
95 @Test
96 public void testDoubleContentEvaluate() {
97
98 Map<String, Object> args = new HashMap<String, Object>();
99 args.put("context", null);
100 args.put("length", 2.0);
101 args.put("group", null);
102
103 String equationContent = "return length * 2.0;";
104 Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
105 "TestDoubleContentEvaluate", PopulationGrowthReverse.class,
106 equationContent, null, 2.0, null);
107 Assert.assertNotNull(result);
108 Assert.assertEquals("4.0", result.toString());
109
110 equationContent = "return length * 3.0;";
111 result = EvaluatorHelper.evaluate("fr.isisfish.equation",
112 "TestDoubleContentEvaluate", PopulationGrowthReverse.class,
113 equationContent, null, 2.0, null);
114 Assert.assertNotNull(result);
115 Assert.assertEquals("6.0", result.toString());
116 }
117
118
119
120
121
122 @Test
123 public void testEquationWithDatabaseContent() {
124
125 String equationContent = "String name = scripts.ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP;";
126 equationContent += "return length * 2.0;";
127 Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
128 "TestEquationWithDatabaseContent", PopulationGrowthReverse.class,
129 equationContent, null, 2.0, null);
130 Assert.assertNotNull(result);
131 Assert.assertEquals("4.0", result.toString());
132 }
133
134
135
136
137 @Test
138 public void testEquationWithLogger() {
139
140 String equationContent = "log.info(\"Test logger\");";
141 equationContent += "return 1.0;";
142 Object result = EvaluatorHelper.evaluate("fr.isisfish.equation",
143 "TestEquationWithDatabaseContent", PopulationGrowthReverse.class,
144 equationContent, null, 2.0, null);
145 Assert.assertNotNull(result);
146 Assert.assertEquals("1.0", result.toString());
147 }
148
149
150
151
152
153
154
155 @Test
156 public void testGenerateContent() {
157 Class clazz = PopulationReproductionEquation.class;
158 Method method = clazz.getDeclaredMethods()[0];
159 String content = EvaluatorHelper.generateContent("fr.ifremer.isisfish.equation",
160 "Test", method, "return 42.0;");
161
162 Assert.assertTrue(content.contains("fr.ifremer.isisfish.simulator.SimulationContext context"));
163 Assert.assertTrue(content.contains("java.util.List<PopulationGroup> groups"));
164 }
165
166
167
168
169 @Test
170 public void testPrescriptContent() {
171 String content = "if (context != null) {\n" +
172 " // test\n" +
173 "}\n";
174 EvaluatorHelper.evaluate("fr.isisfish.prescript",
175 "TestPrescript", SimulationPreScript.class, content, SimulationContext.get(), null);
176 }
177 }