public void CompileSimpleArithmeticWithParenthesis()
{
ModelParser parser = new ModelParser("1 * (2 + 3)");
IExpression expr = parser.ParseExpression();
this.compiler.CompileExpression(expr);
Assert.IsNotNull(this.block);
Assert.AreEqual(5, this.block.NoConstants);
Assert.AreEqual(0, this.block.NoLocals);
Assert.IsNotNull(this.block.ByteCodes);
Assert.AreEqual(12, this.block.ByteCodes.Length);
Assert.AreEqual(0, this.block.Arity);
BlockDecompiler decompiler = new BlockDecompiler(this.block);
var program = decompiler.Decompile();
Assert.IsNotNull(program);
Assert.AreEqual(5, program.Count);
Assert.AreEqual("GetConstant 1", program[0]);
Assert.AreEqual("GetConstant 2", program[1]);
Assert.AreEqual("GetConstant 3", program[2]);
Assert.AreEqual("Send + 1", program[3]);
Assert.AreEqual("Send * 1", program[4]);
}