use of io.github.wysohn.triggerreactor.core.script.interpreter.Interpreter in project TriggerReactor by wysohn.
the class TriggerTest method testStringAppend.
@Test
public void testStringAppend() throws Exception {
Charset charset = Charset.forName("UTF-8");
String text = "" + "arr = array(4)\n" + "arr[0] = \"beh\"+player.in.health\n" + "arr[1] = player.in.health+\"beh\"\n" + "arr[2] = \"beh\"+1+1\n" + "arr[3] = \"beh\"+(1+1)\n" + "#MESSAGE arr\n";
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
public Integer execute(boolean sync, Object context, Object... args) {
Object[] arr = (Object[]) args[0];
Assert.assertEquals("beh0.82", arr[0]);
Assert.assertEquals("0.82beh", arr[1]);
Assert.assertEquals("beh11", arr[2]);
Assert.assertEquals("beh2", arr[3]);
return null;
}
});
TheTest reference = new TheTest();
Interpreter interpreter = new Interpreter(root, executorMap, new HashMap<>(), new HashMap<String, Object>(), new HashMap<>(), new CommonFunctions(null));
interpreter.getVars().put("player", reference);
interpreter.getVars().put("text", "hello");
interpreter.startWithContext(null);
}
use of io.github.wysohn.triggerreactor.core.script.interpreter.Interpreter in project TriggerReactor by wysohn.
the class TriggerTest method testEnumParse.
@Test
public void testEnumParse() throws Exception {
Charset charset = Charset.forName("UTF-8");
String text = "" + "result = parseEnum(\"io.github.wysohn.triggerreactor.TriggerTest$TestEnum\", value);";
Lexer lexer = new Lexer(text, charset);
Parser parser = new Parser(lexer);
Node root = parser.parse();
Map<String, Executor> executorMap = new HashMap<>();
Interpreter interpreter = new Interpreter(root, executorMap, new HashMap<>(), new HashMap<String, Object>(), new HashMap<String, Object>() {
{
put("value", "IMTEST");
}
}, new CommonFunctions(null));
interpreter.startWithContext(null);
Assert.assertEquals(TestEnum.IMTEST, interpreter.getVars().get("result"));
}
use of io.github.wysohn.triggerreactor.core.script.interpreter.Interpreter in project TriggerReactor by wysohn.
the class TriggerTest method testReference.
@Test
public void testReference() throws Exception {
Charset charset = Charset.forName("UTF-8");
String text = "" + "X = 5\n" + "str = \"abc\"\n" + "WHILE 1 > 0\n" + " str = str + X\n" + " IF player.in.health > 2 && player.in.health > 0\n" + " #MESSAGE 3*4\n" + " ELSE\n" + " #MESSAGE str\n" + " ENDIF\n" + " #MESSAGE text\n" + " player.getTest().in.health = player.getTest().in.getHealth() + 1.2\n" + " #MESSAGE player.in.hasPermission(\"t\")\n" + " X = X - 1\n" + " IF X < 0\n" + " #STOP\n" + " ENDIF\n" + "ENDWHILE";
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
public Integer execute(boolean sync, Object context, Object... args) {
return null;
}
});
TheTest reference = new TheTest();
Interpreter interpreter = new Interpreter(root, executorMap, new HashMap<>(), new HashMap<String, Object>(), new HashMap<>(), new CommonFunctions(null));
interpreter.getVars().put("player", reference);
interpreter.getVars().put("text", "hello");
interpreter.startWithContext(null);
Assert.assertEquals(12.43, reference.getTest().in.getHealth(), 0.001);
}
use of io.github.wysohn.triggerreactor.core.script.interpreter.Interpreter in project TriggerReactor by wysohn.
the class TriggerTest method testIfWithElse.
@Test
public void testIfWithElse() throws Exception {
Charset charset = Charset.forName("UTF-8");
String text = "x = 4.0;" + "IF x < 0.0;" + " #TEST \"no\";" + "ELSE;" + " #TEST \"pass\";" + "ENDIF;";
Lexer lexer = new Lexer(text, charset);
Parser parser = new Parser(lexer);
Node root = parser.parse();
Map<String, Executor> executorMap = new HashMap<>();
executorMap.put("TEST", new Executor() {
@Override
protected Integer execute(boolean sync, Object context, Object... args) throws Exception {
Assert.assertEquals("pass", args[0]);
return null;
}
});
Map<String, Placeholder> placeholderMap = new HashMap<>();
Interpreter interpreter = new Interpreter(root, executorMap, placeholderMap, new HashMap<String, Object>(), new HashMap<>(), new CommonFunctions(null));
interpreter.startWithContext(null);
}
use of io.github.wysohn.triggerreactor.core.script.interpreter.Interpreter in project TriggerReactor by wysohn.
the class TriggerTest method testGlobalVariable.
@Test
public void testGlobalVariable() throws Exception {
Charset charset = Charset.forName("UTF-8");
String text = "" + "{text+\".something\"} = 12.54\n" + "#MESSAGE {text+\".something\"}\n";
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
public Integer execute(boolean sync, Object context, Object... args) {
Assert.assertEquals(12.54, args[0]);
return null;
}
});
Map<String, Object> map = new HashMap<String, Object>();
Interpreter interpreter = new Interpreter(root, executorMap, new HashMap<>(), map, new HashMap<>(), new CommonFunctions(null));
interpreter.getVars().put("text", "someplayername");
interpreter.startWithContext(null);
Assert.assertTrue(map.containsKey("someplayername.something"));
Assert.assertEquals(12.54, map.get("someplayername.something"));
}
Aggregations