Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [Test]
- public void TestBasicOps()
- {
- string testProgram = @"
- module Main
- {
- function FuncAdd(valA: int, valB: int) : int
- {
- return valA + valB;
- }
- function FuncSub(valA: int, valB: int) : int
- {
- return valA - valB;
- }
- function FuncMul(valA: int, valB: int) : int
- {
- return valA * valB;
- }
- function FuncDiv(valA: int, valB: int) : int
- {
- return valA / valB;
- }
- function FuncMod(valA: int, valB: int) : int
- {
- return valA % valB;
- }
- function FuncAnd(valA: int, valB: int) : int
- {
- return valA & valB;
- }
- function FuncOr(valA: int, valB: int) : int
- {
- return valA | valB;
- }
- function FuncXor(valA: int, valB: int) : int
- {
- return valA ^ valB;
- }
- }
- ";
- var lexer = new Lexer();
- var tokens = lexer.Extract(testProgram, "");
- var parser = new Parser();
- var ast = parser.Parse(tokens);
- var compiler = new Compiler();
- compiler.Compile(ast);
- using (var execEngine = compiler.InitRuntime()) {
- var funcAdd = execEngine.GetFunc<TestDelegate_int_int>("Main", "FuncAdd");
- var funcSub = execEngine.GetFunc<TestDelegate_int_int>("Main", "FuncSub");
- var funcMul = execEngine.GetFunc<TestDelegate_int_int>("Main", "FuncMul");
- var funcDiv = execEngine.GetFunc<TestDelegate_int_int>("Main", "FuncDiv");
- var funcMod = execEngine.GetFunc<TestDelegate_int_int>("Main", "FuncMod");
- var funcAnd = execEngine.GetFunc<TestDelegate_int_int>("Main", "FuncAnd");
- var funcOr = execEngine.GetFunc<TestDelegate_int_int>("Main", "FuncOr");
- var funcXor = execEngine.GetFunc<TestDelegate_int_int>("Main", "FuncXor");
- Assert.True(funcAdd(10, 5) == 10 + 5);
- Assert.True(funcSub(10, 5) == 10 - 5);
- Assert.True(funcMul(10, 5) == 10 * 5);
- Assert.True(funcDiv(10, 5) == 10 / 5);
- Assert.True(funcMod(10, 5) == 10 % 5);
- Assert.True(funcAnd(10, 5) == (10 & 5));
- Assert.True(funcOr(10, 5) == (10 | 5));
- Assert.True(funcXor(10, 5) == (10 ^ 5));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement