public void CheckRRTokenStreamBehaviourWhileEmpty1() {
			string description = "RewriteRuleTokenStream test";
			RewriteRuleTokenStream tokenTest =
				new RewriteRuleTokenStream(CreateTreeAdaptor(),	description);

			Assert.IsFalse(tokenTest.HasNext(), "tokenTest has to give back false here.");
			Assert.AreEqual(description.ToString(), tokenTest.Description,
				"Description strings should be equal.");
			Assert.AreEqual(0, tokenTest.Size(), "The number of elements should be zero.");
			tokenTest.Reset();
			Assert.IsTrue(true, "Reset() shouldn't make any problems here.");
			Assert.AreEqual(0, tokenTest.Size(),
				"The number of elements should be still zero.");
			tokenTest.NextNode();
		}
		public void CheckRRTokenStreamBehaviourWithElements() {
			RewriteRuleTokenStream tokenTest = new RewriteRuleTokenStream(CreateTreeAdaptor(),
				"RewriteRuleTokenStream test");

			IToken token1 = CreateToken(1, "test token without any real context");

			// Test Add()
			tokenTest.Add(token1);
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (1).");
			Assert.IsTrue(tokenTest.HasNext(), "HasNext() should be true here (1).");

			// Test NextNode()
			CommonTree tree = (CommonTree) tokenTest.NextNode();
			Assert.AreEqual(token1, tree.Token,
				"The returned token should be equal to the given token (1).");
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (2).");
			Assert.IsFalse(tokenTest.HasNext(), "HasNext() should be false here (1).");
			tokenTest.Reset();
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (3).");
			Assert.IsTrue(tokenTest.HasNext(), "HasNext() should be true here (2).");

			// Test NextToken()
			IToken returnedToken = tokenTest.NextToken();
			Assert.AreEqual(token1, returnedToken,
				"The returned token should be equal to the given token (2).");
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (4).");
			Assert.IsFalse(tokenTest.HasNext(), "HasNext() should be false here (2).");
			tokenTest.Reset();
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (5).");
			Assert.IsTrue(tokenTest.HasNext(), "HasNext() should be true here (3).");

			// Test NextTree()
			returnedToken = (IToken) tokenTest.NextTree();
			Assert.AreEqual(token1, returnedToken,
				"The returned token should be equal to the given token (3).");
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (6).");
			Assert.IsFalse(tokenTest.HasNext(), "HasNext() should be false here (2).");
			tokenTest.Reset();
			Assert.AreEqual(1, tokenTest.Size(), "tokenTest should have the size 1 (7).");
			Assert.IsTrue(tokenTest.HasNext(), "HasNext() should be true here (3).");

			// Test, what happens with two elements
			IToken token2 = CreateToken(2, "test token without any real context");

			tokenTest.Add(token2);
			Assert.AreEqual(2, tokenTest.Size(), "tokenTest should have the size 2 (1).");
			Assert.IsTrue(tokenTest.HasNext(), "HasNext() should be true here (4).");
			returnedToken = tokenTest.NextToken();
			Assert.AreEqual(token1, returnedToken,
				"The returned token should be equal to the given token (4).");
			Assert.AreEqual(2, tokenTest.Size(), "tokenTest should have the size 2 (2).");
			Assert.IsTrue(tokenTest.HasNext(), "HasNext() should be true here (5).");
			returnedToken = tokenTest.NextToken();
			Assert.AreEqual(token2, returnedToken,
				"The returned token should be equal to the given token (5).");
			Assert.IsFalse(tokenTest.HasNext(), "HasNext() should be false here (3).");

			// Test exception
			tokenTest.NextToken();
		}