use of io.github.wysohn.triggerreactor.core.script.interpreter.Placeholder in project TriggerReactor by wysohn.
the class TriggerTest method testPlaceholder.
@Test
public void testPlaceholder() throws Exception {
Charset charset = Charset.forName("UTF-8");
String text = "x = 100.0;" + "returnvalue = $test:0:x:true:\"hoho\";" + "#MESSAGE $playername returnvalue;" + "#TESTSTRING $string;" + "#TESTINTEGER $integer;" + "#TESTDOUBLE $double;" + "#TESTBOOLEAN $boolean;";
Lexer lexer = new Lexer(text, charset);
Parser parser = new Parser(lexer);
Node root = parser.parse();
Map<String, Executor> executorMap = new HashMap<>();
executorMap.put("MESSAGE", new Executor() {
@Override
protected Integer execute(boolean sync, Object context, Object... args) throws Exception {
Assert.assertEquals("testplayer", args[0]);
Assert.assertEquals("testwithargs", args[1]);
return null;
}
});
executorMap.put("TESTSTRING", new Executor() {
@Override
protected Integer execute(boolean sync, Object context, Object... args) throws Exception {
Assert.assertTrue(args[0] instanceof String);
return null;
}
});
executorMap.put("TESTINTEGER", new Executor() {
@Override
protected Integer execute(boolean sync, Object context, Object... args) throws Exception {
Assert.assertTrue(args[0] instanceof Integer);
return null;
}
});
executorMap.put("TESTDOUBLE", new Executor() {
@Override
protected Integer execute(boolean sync, Object context, Object... args) throws Exception {
Assert.assertTrue(args[0] instanceof Double);
return null;
}
});
executorMap.put("TESTBOOLEAN", new Executor() {
@Override
protected Integer execute(boolean sync, Object context, Object... args) throws Exception {
Assert.assertTrue(args[0] instanceof Boolean);
return null;
}
});
Map<String, Placeholder> placeholderMap = new HashMap<>();
placeholderMap.put("playername", new Placeholder() {
@Override
public Object parse(Object context, Object... args) throws Exception {
return "testplayer";
}
});
placeholderMap.put("test", new Placeholder() {
@Override
public Object parse(Object context, Object... args) throws Exception {
Assert.assertEquals(0, args[0]);
Assert.assertEquals(100.0, args[1]);
Assert.assertEquals(true, args[2]);
Assert.assertEquals("hoho", args[3]);
return "testwithargs";
}
});
placeholderMap.put("string", new Placeholder() {
@Override
public Object parse(Object context, Object... args) throws Exception {
return "testplayer";
}
});
placeholderMap.put("integer", new Placeholder() {
@Override
public Object parse(Object context, Object... args) throws Exception {
return 1;
}
});
placeholderMap.put("double", new Placeholder() {
@Override
public Object parse(Object context, Object... args) throws Exception {
return 1.5;
}
});
placeholderMap.put("boolean", new Placeholder() {
@Override
public Object parse(Object context, Object... args) throws Exception {
return false;
}
});
Interpreter interpreter = new Interpreter(root, executorMap, placeholderMap, new HashMap<String, Object>(), new HashMap<>(), new CommonFunctions(null));
interpreter.startWithContext(null);
Assert.assertEquals("testwithargs", interpreter.getVars().get("returnvalue"));
}
use of io.github.wysohn.triggerreactor.core.script.interpreter.Placeholder in project TriggerReactor by wysohn.
the class TriggerTest method testUnaryMinus.
@Test
public void testUnaryMinus() throws Exception {
Charset charset = Charset.forName("UTF-8");
String text = "x = 4.0;" + "#TEST1 -1+-5;" + "#TEST2 -2.0--5;" + "#TEST3 -$test3-5;" + "#TEST4 -x-5;";
Lexer lexer = new Lexer(text, charset);
Parser parser = new Parser(lexer);
Node root = parser.parse();
Map<String, Executor> executorMap = new HashMap<>();
executorMap.put("TEST1", new Executor() {
@Override
protected Integer execute(boolean sync, Object context, Object... args) throws Exception {
Assert.assertEquals(-6, args[0]);
return null;
}
});
executorMap.put("TEST2", new Executor() {
@Override
protected Integer execute(boolean sync, Object context, Object... args) throws Exception {
Assert.assertEquals(3.0, args[0]);
return null;
}
});
executorMap.put("TEST3", new Executor() {
@Override
protected Integer execute(boolean sync, Object context, Object... args) throws Exception {
Assert.assertEquals(-8, args[0]);
return null;
}
});
executorMap.put("TEST4", new Executor() {
@Override
protected Integer execute(boolean sync, Object context, Object... args) throws Exception {
Assert.assertEquals(-9.0, args[0]);
return null;
}
});
Map<String, Placeholder> placeholderMap = new HashMap<>();
placeholderMap.put("test3", new Placeholder() {
@Override
public Object parse(Object context, Object... args) throws Exception {
return 3;
}
});
Interpreter interpreter = new Interpreter(root, executorMap, placeholderMap, new HashMap<String, Object>(), new HashMap<>(), new CommonFunctions(null));
interpreter.startWithContext(null);
}
Aggregations