public void SerializeBlock() { var block = new CodeBlockStatement(); Assert.NotNull(block.Statements); Assert.Empty(block.Statements); Assert.Null(block.Label); block.Statements.Add(new EmptyStatement()); Assert.NotEmpty(block.Statements); Assert.Equal(1, block.Statements.Count); var child = block.Statements.First(); Assert.IsType <EmptyStatement>(child); Assert.NotNull(child); var parent = typeof(SqlStatement).GetTypeInfo().GetProperty("Parent", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(child); Assert.NotNull(parent); var result = BinarySerializeUtil.Serialize(block); Assert.NotNull(result); Assert.NotEmpty(result.Statements); Assert.Equal(1, result.Statements.Count); }
protected override SqlStatement PrepareStatement(IContext context) { var block = new CodeBlockStatement(Label); foreach (var statement in Statements) { var prepared = statement.Prepare(context); block.Statements.Add(prepared); } return(block); }
protected virtual SqlStatement VisitCodeBlock(CodeBlockStatement statement) { if (statement is LoopStatement) { return(VisitLoop((LoopStatement)statement)); } if (statement is PlSqlBlockStatement) { return(VisitPlSqlBlock((PlSqlBlockStatement)statement)); } return(statement); }
public void GetString() { var block = new CodeBlockStatement(); block.Statements.Add(new NullStatement()); var sql = new StringBuilder(); sql.AppendLine("BEGIN"); sql.AppendLine(" NULL;"); sql.Append("END;"); Assert.Equal(sql.ToString(), block.ToString()); }
public async void GoToBreak() { var loop = new LoopStatement(); loop.Statements.Add(new GoToStatement("exitLoop")); var exitLoop = new CodeBlockStatement("exitLoop"); exitLoop.Statements.Add(new ExitStatement()); loop.Statements.Add(exitLoop); var result = await loop.ExecuteAsync(context); Assert.Null(result); }
public void AddAndRemoveStatements() { var block = new CodeBlockStatement("block"); var statement = new EmptyStatement(); block.Statements.Add(statement); block.Statements.Add(new EmptyStatement()); Assert.Null(statement.Previous); Assert.NotNull(statement.Next); var parent = typeof(SqlStatement).GetTypeInfo().GetProperty("Parent", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(statement); Assert.NotNull(parent); Assert.Equal(2, block.Statements.Count); block.Statements.Remove(statement); Assert.Null(statement.Next); Assert.Equal(1, block.Statements.Count); block.Statements.Clear(); Assert.Equal(0, block.Statements.Count); }
public StatementCollection(CodeBlockStatement block) { this.block = block; }
public StatementCollection(CodeBlockStatement codeBlock) { this.codeBlock = codeBlock; }