public void CheckRRNodeStreamBehaviourWhileEmpty1() { string description = "RewriteRuleNodeStream test"; RewriteRuleNodeStream nodeTest = new RewriteRuleNodeStream(CreateTreeAdaptor(), description); Assert.IsFalse(nodeTest.HasNext(), "HasNext() has to give back false here."); Assert.AreEqual(description.ToString(), nodeTest.Description, "Description strings should be equal."); Assert.AreEqual(0, nodeTest.Size(), "The number of elements should be zero."); nodeTest.Reset(); Assert.IsTrue(true, "Reset() shouldn't make any problems here."); Assert.AreEqual(0, nodeTest.Size(), "The number of elements should be still zero."); nodeTest.NextNode(); }
public void CheckRRNodeStreamBehaviourWithElements() { RewriteRuleNodeStream nodeTest = new RewriteRuleNodeStream(CreateTreeAdaptor(), "RewriteRuleNodeStream test"); IToken token1 = CreateToken(1, "test token without any real context"); ITree tree1 = CreateTree(token1); // Test Add() nodeTest.Add(tree1); Assert.AreEqual(1, nodeTest.Size(), "nodeTest should have the size 1 (1)."); Assert.IsTrue(nodeTest.HasNext(), "HasNext() should be true here (1)."); // Test NextNode() CommonTree returnedTree = (CommonTree) nodeTest.NextNode(); Assert.AreEqual(tree1.Type, returnedTree.Type, "The returned tree should be equal to the given tree (1)."); Assert.AreEqual(1, nodeTest.Size(), "nodeTest should have the size 1 (2)."); Assert.IsFalse(nodeTest.HasNext(), "HasNext() should be false here (1)."); nodeTest.Reset(); Assert.AreEqual(1, nodeTest.Size(), "nodeTest should have the size 1 (3)."); Assert.IsTrue(nodeTest.HasNext(), "HasNext() should be true here (2)."); // Test NextTree() returnedTree = (CommonTree) nodeTest.NextTree(); Assert.AreEqual(token1, returnedTree.Token, "The returned token should be equal to the given token (3)."); Assert.AreEqual(1, nodeTest.Size(), "nodeTest should have the size 1 (4)."); Assert.IsFalse(nodeTest.HasNext(), "HasNext() should be false here (2)."); nodeTest.Reset(); Assert.AreEqual(1, nodeTest.Size(), "nodeTest should have the size 1 (5)."); Assert.IsTrue(nodeTest.HasNext(), "HasNext() should be true here (3)."); // Test, what happens with two elements IToken token2 = CreateToken(2, "test token without any real context"); ITree tree2 = CreateTree(token2); nodeTest.Add(tree2); Assert.AreEqual(2, nodeTest.Size(), "nodeTest should have the size 2 (1)."); Assert.IsTrue(nodeTest.HasNext(), "HasNext() should be true here (4)."); returnedTree = (CommonTree) nodeTest.NextTree(); Assert.AreEqual(token1, returnedTree.Token, "The returned token should be equal to the given token (4)."); Assert.AreEqual(2, nodeTest.Size(), "nodeTest should have the size 2 (2)."); Assert.IsTrue(nodeTest.HasNext(), "HasNext() should be true here (5)."); returnedTree = (CommonTree) nodeTest.NextTree(); Assert.AreEqual(token2, returnedTree.Token, "The returned token should be equal to the given token (5)."); Assert.IsFalse(nodeTest.HasNext(), "HasNext() should be false here (3)."); // Test exception nodeTest.NextTree(); }
// $ANTLR start "selectClause" // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:151:1: selectClause : ^( SELECT (d= DISTINCT )? x= selectExprList ) -> ^( SELECT_CLAUSE[\"{select clause}\"] ( $d)? $x) ; public HqlSqlWalker.selectClause_return selectClause() // throws RecognitionException [1] { HqlSqlWalker.selectClause_return retval = new HqlSqlWalker.selectClause_return(); retval.Start = input.LT(1); IASTNode root_0 = null; IASTNode _first_0 = null; IASTNode _last = null; IASTNode d = null; IASTNode SELECT36 = null; HqlSqlWalker.selectExprList_return x = default(HqlSqlWalker.selectExprList_return); IASTNode d_tree=null; IASTNode SELECT36_tree=null; RewriteRuleNodeStream stream_DISTINCT = new RewriteRuleNodeStream(adaptor,"token DISTINCT"); RewriteRuleNodeStream stream_SELECT = new RewriteRuleNodeStream(adaptor,"token SELECT"); RewriteRuleSubtreeStream stream_selectExprList = new RewriteRuleSubtreeStream(adaptor,"rule selectExprList"); try { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:152:2: ( ^( SELECT (d= DISTINCT )? x= selectExprList ) -> ^( SELECT_CLAUSE[\"{select clause}\"] ( $d)? $x) ) // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:152:4: ^( SELECT (d= DISTINCT )? x= selectExprList ) { _last = (IASTNode)input.LT(1); { IASTNode _save_last_1 = _last; IASTNode _first_1 = null; IASTNode root_1 = (IASTNode)adaptor.GetNilNode();_last = (IASTNode)input.LT(1); SELECT36=(IASTNode)Match(input,SELECT,FOLLOW_SELECT_in_selectClause689); stream_SELECT.Add(SELECT36); HandleClauseStart( SELECT ); BeforeSelectClause(); Match(input, Token.DOWN, null); // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:152:68: (d= DISTINCT )? int alt17 = 2; int LA17_0 = input.LA(1); if ( (LA17_0 == DISTINCT) ) { alt17 = 1; } switch (alt17) { case 1 : // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:152:69: d= DISTINCT { _last = (IASTNode)input.LT(1); d=(IASTNode)Match(input,DISTINCT,FOLLOW_DISTINCT_in_selectClause696); stream_DISTINCT.Add(d); } break; } _last = (IASTNode)input.LT(1); PushFollow(FOLLOW_selectExprList_in_selectClause702); x = selectExprList(); state.followingStackPointer--; stream_selectExprList.Add(x.Tree); Match(input, Token.UP, null); adaptor.AddChild(root_0, root_1);_last = _save_last_1; } // AST REWRITE // elements: x, d // token labels: d // rule labels: retval, x // token list labels: // rule list labels: // wildcard labels: retval.Tree = root_0; RewriteRuleNodeStream stream_d = new RewriteRuleNodeStream(adaptor, "token d", d); RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval!=null ? retval.Tree : null); RewriteRuleSubtreeStream stream_x = new RewriteRuleSubtreeStream(adaptor, "rule x", x!=null ? x.Tree : null); root_0 = (IASTNode)adaptor.GetNilNode(); // 153:2: -> ^( SELECT_CLAUSE[\"{select clause}\"] ( $d)? $x) { // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:153:5: ^( SELECT_CLAUSE[\"{select clause}\"] ( $d)? $x) { IASTNode root_1 = (IASTNode)adaptor.GetNilNode(); root_1 = (IASTNode)adaptor.BecomeRoot((IASTNode)adaptor.Create(SELECT_CLAUSE, "{select clause}"), root_1); // /Users/Steve/Projects/NHibernate/Branches/2.1.x/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.g:153:40: ( $d)? if ( stream_d.HasNext() ) { adaptor.AddChild(root_1, stream_d.NextNode()); } stream_d.Reset(); adaptor.AddChild(root_1, stream_x.NextTree()); adaptor.AddChild(root_0, root_1); } } retval.Tree = root_0; } retval.Tree = (IASTNode)adaptor.RulePostProcessing(root_0); } catch (RecognitionException re) { ReportError(re); Recover(input,re); } finally { } return retval; }