@@ -124,6 +124,18 @@ private class ScriptEngineTest {
124124 3 ,
125125 ScriptEngine .getInstance ().eval (node , new Map <String , Object >{ ' a' = > new List <Object >{ 3 } })
126126 );
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+ );
127139 }
128140
129141 @IsTest
@@ -153,4 +165,140 @@ private class ScriptEngineTest {
153165 private static void instanceTest () {
154166 System .assert (ScriptEngine .getInstance () != null );
155167 }
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+ }
156304}
0 commit comments