public void CompileJumps() { Block block = new Block(); block.CompileJumpByteCode(ByteCode.Jump, 10); block.CompileJumpByteCode(ByteCode.JumpIfFalse, 256); block.CompileJumpByteCode(ByteCode.JumpIfTrue, 1024); Assert.AreEqual(9, block.Bytecodes.Length); Assert.AreEqual((byte)ByteCode.Jump, block.Bytecodes[0]); Assert.AreEqual(0, block.Bytecodes[1]); Assert.AreEqual(10, block.Bytecodes[2]); Assert.AreEqual((byte)ByteCode.JumpIfFalse, block.Bytecodes[3]); Assert.AreEqual(1, block.Bytecodes[4]); Assert.AreEqual(0, block.Bytecodes[5]); Assert.AreEqual((byte)ByteCode.JumpIfTrue, block.Bytecodes[6]); Assert.AreEqual(4, block.Bytecodes[7]); Assert.AreEqual(0, block.Bytecodes[8]); }
public void DecompileJumps() { Block block = new Block(); block.CompileJumpByteCode(ByteCode.Jump, 100); block.CompileJumpByteCode(ByteCode.JumpIfFalse, 99); block.CompileJumpByteCode(ByteCode.JumpIfTrue, 101); BlockDecompiler decompiler = new BlockDecompiler(block); var result = decompiler.Decompile(); Assert.IsNotNull(result); Assert.AreEqual(3, result.Count); Assert.AreEqual("Jump 100", result[0]); Assert.AreEqual("JumpIfFalse 99", result[1]); Assert.AreEqual("JumpIfTrue 101", result[2]); }