public void TestResultScopeCurrentScope() { var gc = new GeneratedCode(); var b1 = new StatementInlineBlock(); gc.Add(b1); gc.SetCurrentScopeAsResultScope(); var outterScope = gc.CurrentScope; var b2 = new StatementInlineBlock(); gc.Add(b2); gc.SetCurrentScopeAsResultScope(); gc.AddAtResultScope(DeclarableParameter.CreateDeclarableParameterExpression(typeof(int))); Assert.AreEqual(0, b1.DeclaredVariables.Count(), "variables at outside loop after 0 add"); Assert.AreEqual(1, b2.DeclaredVariables.Count(), "variables at inner loop after 1 add"); gc.CurrentScope = outterScope; gc.AddAtResultScope(DeclarableParameter.CreateDeclarableParameterExpression(typeof(int))); Assert.AreEqual(1, b1.DeclaredVariables.Count(), "variables at outside loop after 1 add"); Assert.AreEqual(1, b2.DeclaredVariables.Count(), "variables at inner loop after 2 add"); }
public void TestResultScopeNull() { var gc = new GeneratedCode(); var b = new StatementInlineBlock(); gc.Add(b); gc.AddAtResultScope(DeclarableParameter.CreateDeclarableParameterExpression(typeof(int))); }
public void TestResultScopePop() { var gc = new GeneratedCode(); var b1 = new StatementInlineBlock(); gc.Add(b1); var b2 = new StatementInlineBlock(); gc.Add(b2); gc.SetCurrentScopeAsResultScope(); gc.AddAtResultScope(DeclarableParameter.CreateDeclarableParameterExpression(typeof(int))); // This pop should remove the result scope, and it should be back to "null" now, which // should cause an exception. gc.Pop(); gc.AddAtResultScope(DeclarableParameter.CreateDeclarableParameterExpression(typeof(int))); }