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); } }