public void CompileAndRun() { Machine machine = new Machine(); Block block; block = new Block(); block.CompileArgument("newX"); block.CompileGet("newX"); block.CompileSet("GlobalX"); block.Execute(machine, new object[] { 10 }); Assert.AreEqual(10, machine.GetGlobalObject("GlobalX")); }
public void CompileWithLocals() { Machine machine = new Machine(); IClass cls = machine.CreateClass("TestClass"); cls.DefineInstanceVariable("x"); Block block; block = new Block(); block.CompileArgument("newX"); block.CompileLocal("l"); block.CompileGet("newX"); block.CompileSet("l"); Assert.AreEqual(1, block.NoLocals); Assert.IsNotNull(block.ByteCodes); Assert.IsTrue(block.ByteCodes.Length > 0); }
public void CompileAndRunWithGlobal() { Block block; block = new Block(); block.CompileGetConstant(10); block.CompileSet("Global"); Machine machine = new Machine(); block.Execute(machine, null); Assert.AreEqual(10, machine.GetGlobalObject("Global")); }
public void CompileGlobal() { Block block; block = new Block(); block.CompileGetConstant(10); block.CompileSet("Global"); Assert.AreEqual("Global", block.GetGlobalName(0)); }
public void DecompileSetLocalVariable() { Block block = new Block(); block.CompileLocal("foo"); block.CompileSet("foo"); BlockDecompiler decompiler = new BlockDecompiler(block); var result = decompiler.Decompile(); Assert.IsNotNull(result); Assert.AreEqual(1, result.Count); Assert.AreEqual("SetLocal foo", result[0]); }