private void _checkTag(string sequence, Couple[] expected) { Lexer lexer; int returned_tag; TestingClassifier classifier; StringBuilder recognized; string error; int i; classifier = new TestingClassifier(); lexer = new Lexer(); lexer.Parse(sequence); recognized = new StringBuilder(); i = 0; while (lexer.Next()) { recognized.Append(lexer.CurrentToken.Text); error = String.Format( "Token [{0}] was expected, but [{1}] was returned instead, near: [{2}].", expected[i].Text, lexer.CurrentToken.Text, recognized.ToString()); Assert.That(lexer.CurrentToken.Text, Is.EqualTo(expected[i].Text), error); returned_tag = classifier.AcceptLexToken(lexer.CurrentToken); error = String.Format( "Tag [{0}] was expected, but [{1}] was returned instead, near: [{2}].", expected[i].Value, returned_tag, recognized.ToString()); Assert.That(returned_tag, Is.EqualTo(expected[i].Value), error); i++; } Assert.That(lexer.Next(), Is.False, "Error, there are unvisited tokens left."); Assert.That(i == expected.Length, "Error, more tokens were expected."); return; }