コード例 #1
0
ファイル: LogicalTests.cs プロジェクト: GregEakin/Dragon
        public void LogicalGenTest()
        {
            using (var cout = new StringWriter())
            {
                Node.Cout = cout;

                var token = new Token('&');
                var exp1  = new Expr(Word.TRUE, VarType.BOOL);
                var exp2  = new Expr(Word.FALSE, VarType.BOOL);
                var and   = new And(token, exp1, exp2);

                var exp = and.Gen();
                Assert.IsInstanceOfType(exp, typeof(Temp));
                Assert.AreEqual(VarType.BOOL, exp.Type);

                var actual = cout.ToString();
                Assert.AreEqual("\tif true goto L1\r\n\tiffalse false goto L1\r\n\tt1 = true\r\n\tgoto L2\r\nL1:\r\n\tt1 = false\r\nL2:\r\n", actual);
            }
        }