public void TestEmptyIterator() { TokenIterator tokenIterator = new TokenIterator(new List <Token>()); Assert.IsFalse(tokenIterator.HasNext()); Assert.AreEqual(0, tokenIterator.Count); int marker = tokenIterator.GetMarker(); Assert.AreEqual(0, marker); Assert.AreEqual(0, tokenIterator.GetMarker()); }
public void TestBadMarker1() { TokenIterator tokenIterator = new TokenIterator(new List <Token>()); // Markers don't work when you have no elements. tokenIterator.SetToMarker(tokenIterator.GetMarker()); }
public void TestIterator() { List <Token> tokens = new List <Token>(); Token tokenReference = new Token(TokenType.DollarIdentifier, "a", 5, 2); tokens.Add(tokenReference); tokens.Add(new Token(TokenType.Word, "hi", 5, 3)); tokens.Add(new Token(TokenType.AtIdentifier, "b", 12, 0)); tokens.Add(new Token(TokenType.Word, "yEs", 14, 42)); TokenIterator tokenIterator = new TokenIterator(tokens); Assert.IsTrue(tokenIterator.HasNext()); Assert.AreEqual(4, tokenIterator.Count); // Compare references to make sure we're getting back what we add. Token token = tokenIterator.Next(); Assert.AreEqual(tokenReference, token); token = tokenIterator.Next(); Assert.AreEqual(TokenType.Word, token.Type); Assert.AreEqual("hi", token.Text, false); Assert.AreEqual(5, token.LineNumber); Assert.AreEqual(3, token.CharOffset); int marker = tokenIterator.GetMarker(); Assert.AreEqual(2, marker); Assert.IsTrue(tokenIterator.HasNext()); token = tokenIterator.Next(); Assert.AreEqual(TokenType.AtIdentifier, token.Type); Assert.AreEqual("b", token.Text, false); Assert.AreEqual(12, token.LineNumber); Assert.AreEqual(0, token.CharOffset); Assert.IsTrue(tokenIterator.HasNext()); token = tokenIterator.Next(); Assert.AreEqual(TokenType.Word, token.Type); Assert.AreEqual("yEs", token.Text, false); Assert.AreEqual(14, token.LineNumber); Assert.AreEqual(42, token.CharOffset); Assert.IsFalse(tokenIterator.HasNext()); // Return to the second token. tokenIterator.SetToMarker(marker); Assert.IsTrue(tokenIterator.HasNext()); token = tokenIterator.Next(); Assert.AreEqual(TokenType.AtIdentifier, token.Type); Assert.AreEqual("b", token.Text, false); Assert.AreEqual(12, token.LineNumber); Assert.AreEqual(0, token.CharOffset); }