using NUnit.Framework.Constraints; using System.Collections.Generic; namespace NewLanguage { public class LexerConstraint : Constraint { readonly object[] _expected; public LexerConstraint(params object[] expected) { _expected = expected; } public override bool Matches(object actual) { List fromLex = new List(); object lex = (object) actual; //for (Token tok = lex.GetNext(); tok.cls != TokenClass.EOF; tok = lex.GetNext()) //{ // fromLex.Add(tok.cls); // fromLex.Add(tok.str); //} base.actual = fromLex; if (fromLex.Count != _expected.Length) return false; for (int i = 0; i < fromLex.Count; ++i) { // null is a wildcard if (_expected[i] != null) if (!_expected[i].Equals(fromLex[i])) return false; } return true; } public override void WriteDescriptionTo(NUnit.Framework.MessageWriter writer) { } } }