public void BodyPropertyReturnsPassedBody2() { var name = new IdentifierExpr(RandomGenerator.String()); var arguments = new VarDefinitionStmt[0]; var body = new ScopeBlockStmt(new [] { new NoOpStatement() }); var returnType = new IdentifierExpr(RandomGenerator.String()); var target = new FunctionDefinitionExpr(name, arguments, body, returnType); Assert.AreSame(body, target.Body); }
public void BodyPropertyReturnsPassedBody2() { var name = new IdentifierExpr(RandomGenerator.String()); var arguments = new VarDefinitionStmt[0]; var body = new ScopeBlockStmt(new [] { new NoOpStatement()}); var returnType = new IdentifierExpr(RandomGenerator.String()); var target = new FunctionDefinitionExpr(name, arguments, body, returnType); Assert.AreSame(body, target.Body); }
public Value Visit(ScopeBlockStmt stmt, Scope scope) { using (scope.PushScope()) { foreach (var statement in stmt.Statements) { statement.Accept(this, scope); } } return(Value.Unit); }
public string Visit(ScopeBlockStmt stmt, Scope scope) { var block = "{{\r\n"; foreach (var statement in stmt.Statements) { block += string.Format("\t{0}\r\n", statement.Accept(this, scope)); } block += "}}"; return(block); }
public void StatementBlockCallsAllStatementsTest() { var target = new EvaluateVisitor(); var statement1 = new Mock <Statement>(); var statement2 = new Mock <Statement>(); var statement3 = new Mock <Statement>(); var stmt = new ScopeBlockStmt(new[] { statement1.Object, statement2.Object, statement3.Object }); target.Visit(stmt, _scope); statement1.Verify(s => s.Accept(target, It.IsAny <Scope>()), Times.Once); statement2.Verify(s => s.Accept(target, It.IsAny <Scope>()), Times.Once); statement3.Verify(s => s.Accept(target, It.IsAny <Scope>()), Times.Once); }
public void StatementBlockAllStatementsAreExecutedInOrderTest() { var target = new EvaluateVisitor(); var statement1 = new Mock <Statement>(); var statement2 = new Mock <Statement>(); var statement3 = new Mock <Statement>(); int invocations = 0; var invocationOrder = new int[3]; statement1.Setup(c => c.Accept(It.IsAny <IExpressionVisitor <Value, Scope> >(), It.IsAny <Scope>())) .Returns <IExpressionVisitor <Value, Scope>, Scope>( (v, s) => { invocationOrder[0] = invocations; invocations++; return(Value.Unit);; }); statement2.Setup(c => c.Accept(It.IsAny <IExpressionVisitor <Value, Scope> >(), It.IsAny <Scope>())) .Returns <IExpressionVisitor <Value, Scope>, Scope>( (v, s) => { invocationOrder[1] = invocations; invocations++; return(Value.Unit);; }); statement3.Setup(c => c.Accept(It.IsAny <IExpressionVisitor <Value, Scope> >(), It.IsAny <Scope>())) .Returns <IExpressionVisitor <Value, Scope>, Scope>( (v, s) => { invocationOrder[2] = invocations; invocations++; return(Value.Unit);; }); var stmt = new ScopeBlockStmt(new[] { statement1.Object, statement2.Object, statement3.Object }); target.Visit(stmt, _scope); for (int i = 0; i < invocationOrder.Length; i++) { Assert.AreEqual(i, invocationOrder[i]); } }
public ValueType Visit(ScopeBlockStmt stmt, Scope scope) { return(ValueType.Unit); }
public void StatementBlockAllStatementsAreExecutedInOrderTest() { var target = new EvaluateVisitor(); var statement1 = new Mock<Statement>(); var statement2 = new Mock<Statement>(); var statement3 = new Mock<Statement>(); int invocations = 0; var invocationOrder = new int[3]; statement1.Setup(c => c.Accept(It.IsAny<IExpressionVisitor<Value, Scope>>(), It.IsAny<Scope>())) .Returns<IExpressionVisitor<Value, Scope>, Scope>( (v, s) => { invocationOrder[0] = invocations; invocations++; return Value.Unit;; }); statement2.Setup(c => c.Accept(It.IsAny<IExpressionVisitor<Value, Scope>>(), It.IsAny<Scope>())) .Returns<IExpressionVisitor<Value, Scope>, Scope>( (v, s) => { invocationOrder[1] = invocations; invocations++; return Value.Unit;; }); statement3.Setup(c => c.Accept(It.IsAny<IExpressionVisitor<Value, Scope>>(), It.IsAny<Scope>())) .Returns<IExpressionVisitor<Value, Scope>, Scope>( (v, s) => { invocationOrder[2] = invocations; invocations++; return Value.Unit;; }); var stmt = new ScopeBlockStmt(new[] { statement1.Object, statement2.Object, statement3.Object }); target.Visit(stmt, _scope); for (int i = 0; i < invocationOrder.Length; i++) { Assert.AreEqual(i, invocationOrder[i]); } }
public void StatementBlockCallsAllStatementsTest() { var target = new EvaluateVisitor(); var statement1 = new Mock<Statement>(); var statement2 = new Mock<Statement>(); var statement3 = new Mock<Statement>(); var stmt = new ScopeBlockStmt(new[] { statement1.Object, statement2.Object, statement3.Object }); target.Visit(stmt, _scope); statement1.Verify(s => s.Accept(target, It.IsAny<Scope>()), Times.Once); statement2.Verify(s => s.Accept(target, It.IsAny<Scope>()), Times.Once); statement3.Verify(s => s.Accept(target, It.IsAny<Scope>()), Times.Once); }