@@ -124,6 +124,18 @@ private class ScriptEngineTest {
124
124
3 ,
125
125
ScriptEngine .getInstance ().eval (node , new Map <String , Object >{ ' a' = > new List <Object >{ 3 } })
126
126
);
127
+
128
+ node = new Jsep (' a[0]' ).parse ();
129
+ System .assertEquals (
130
+ ' 3' ,
131
+ ScriptEngine .getInstance ().eval (node , new Map <String , Object >{ ' a' = > ' 345' })
132
+ );
133
+
134
+ node = new Jsep (' a.Description' ).parse ();
135
+ System .assertEquals (
136
+ ' desc' ,
137
+ ScriptEngine .getInstance ().eval (node , new Map <String , Object >{ ' a' = > new Account (Description = ' desc' )})
138
+ );
127
139
}
128
140
129
141
@IsTest
@@ -153,4 +165,140 @@ private class ScriptEngineTest {
153
165
private static void instanceTest () {
154
166
System .assert (ScriptEngine .getInstance () != null );
155
167
}
168
+
169
+ @IsTest
170
+ private static void evalTest () {
171
+ System .assertEquals (' abc' , ScriptEngine .getInstance ().eval (' "a" + "b" + "c"' ));
172
+ }
173
+
174
+ @IsTest
175
+ private static void evalContextTest () {
176
+ Map <String , Object > context = new Map <String , Object >{
177
+ ' a' = > true ,
178
+ ' b' = > false
179
+ };
180
+ System .assertEquals (false , ScriptEngine .getInstance ().eval (' a && b' , context ));
181
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a || b' , context ));
182
+ }
183
+
184
+ @IsTest
185
+ private static void callTest () {
186
+ System .assertEquals (null , ScriptEngine .getInstance ().eval (' test(1)' ));
187
+ }
188
+
189
+ @IsTest
190
+ private static void assignmentTest () {
191
+ System .assertEquals (null , ScriptEngine .getInstance ().eval (' a = 1' ));
192
+ }
193
+
194
+ @IsTest
195
+ private static void moreUnaryTest () {
196
+ System .assertEquals (- 1 , ScriptEngine .getInstance ().eval (' -1' ));
197
+
198
+ System .assertEquals (1 , ScriptEngine .getInstance ().eval (' +1' ));
199
+
200
+ System .assertEquals (false , ScriptEngine .getInstance ().eval (' !true' ));
201
+
202
+ System .assertEquals (2 , ScriptEngine .getInstance ().eval (' ++1' ));
203
+
204
+ System .assertEquals (0 , ScriptEngine .getInstance ().eval (' --1' ));
205
+ }
206
+
207
+ @IsTest
208
+ private static void moreBinaryTest () {
209
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' 1 == 1' ));
210
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' 1 != 2' ));
211
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' 1 < 2' ));
212
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' 3 > 2' ));
213
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' 1 <= 2' ));
214
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' 3 >= 2' ));
215
+
216
+ System .assertEquals (1 , ScriptEngine .getInstance ().eval (' 1 + 0' ));
217
+ System .assertEquals (1 , ScriptEngine .getInstance ().eval (' 1 - 0' ));
218
+ System .assertEquals (1 , ScriptEngine .getInstance ().eval (' 1 * 1' ));
219
+ System .assertEquals (1 , ScriptEngine .getInstance ().eval (' 1 / 1' ));
220
+ System .assertEquals (1 , ScriptEngine .getInstance ().eval (' 1 % 2' ));
221
+
222
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' "a" == "a"' ));
223
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' "a" != "b"' ));
224
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' "a" < "b"' ));
225
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' "c" > "b"' ));
226
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' "a" <= "b"' ));
227
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' "c" >= "b"' ));
228
+
229
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a == b' , new Map <String , Object >{
230
+ ' a' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ).date (),
231
+ ' b' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ).date ()
232
+ }));
233
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a != b' , new Map <String , Object >{
234
+ ' a' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ).date (),
235
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 ).date ()
236
+ }));
237
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a < b' , new Map <String , Object >{
238
+ ' a' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ).date (),
239
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 ).date ()
240
+ }));
241
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a <= b' , new Map <String , Object >{
242
+ ' a' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ).date (),
243
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 ).date ()
244
+ }));
245
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a > b' , new Map <String , Object >{
246
+ ' a' = > Datetime .newInstance (2018 , 1 , 3 , 3 , 0 , 0 ).date (),
247
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 ).date ()
248
+ }));
249
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a >= b' , new Map <String , Object >{
250
+ ' a' = > Datetime .newInstance (2018 , 1 , 3 , 3 , 0 , 0 ).date (),
251
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 ).date ()
252
+ }));
253
+
254
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a == b' , new Map <String , Object >{
255
+ ' a' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ).time (),
256
+ ' b' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ).time ()
257
+ }));
258
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a != b' , new Map <String , Object >{
259
+ ' a' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ).time (),
260
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 ).time ()
261
+ }));
262
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a < b' , new Map <String , Object >{
263
+ ' a' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ).time (),
264
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 ).time ()
265
+ }));
266
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a <= b' , new Map <String , Object >{
267
+ ' a' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ).time (),
268
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 ).time ()
269
+ }));
270
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a > b' , new Map <String , Object >{
271
+ ' a' = > Datetime .newInstance (2018 , 1 , 3 , 3 , 0 , 0 ).time (),
272
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 ).time ()
273
+ }));
274
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a >= b' , new Map <String , Object >{
275
+ ' a' = > Datetime .newInstance (2018 , 1 , 3 , 3 , 0 , 0 ).time (),
276
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 ).time ()
277
+ }));
278
+
279
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a == b' , new Map <String , Object >{
280
+ ' a' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ),
281
+ ' b' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 )
282
+ }));
283
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a != b' , new Map <String , Object >{
284
+ ' a' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ),
285
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 )
286
+ }));
287
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a < b' , new Map <String , Object >{
288
+ ' a' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ),
289
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 )
290
+ }));
291
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a <= b' , new Map <String , Object >{
292
+ ' a' = > Datetime .newInstance (2018 , 1 , 1 , 1 , 0 , 0 ),
293
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 )
294
+ }));
295
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a > b' , new Map <String , Object >{
296
+ ' a' = > Datetime .newInstance (2018 , 1 , 3 , 3 , 0 , 0 ),
297
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 )
298
+ }));
299
+ System .assertEquals (true , ScriptEngine .getInstance ().eval (' a >= b' , new Map <String , Object >{
300
+ ' a' = > Datetime .newInstance (2018 , 1 , 3 , 3 , 0 , 0 ),
301
+ ' b' = > Datetime .newInstance (2018 , 1 , 2 , 2 , 0 , 0 )
302
+ }));
303
+ }
156
304
}
0 commit comments