public void Setup() { this._letterOrDigit = Prims.LetterOrDigit; this._letterOrDigit.Act += OnLetterOrDigitParserSuccess; this._letter = Prims.Letter; this._letter.Act += OnLetterParserSuccess; this._symbol = Prims.Symbol; this._symbol.Act += OnSymbolParserSuccess; this._LetterOrDigitButNotLetterDifferenceParser = new DifferenceParser(this._letterOrDigit, this._letter); this._LetterOrDigitButNotLetterDifferenceParser.Act += OnDifferenceParserSuccess; this._symbolParserSuccess = false; this._letterParserSuccess = false; this._letterOrDigitParserSuccess = false; this._differenceParserSuccess = false; }
public void InputMatchesFirstParserAndSecondParser_SecondParserShorter_Success() { IScanner letter = new StringScanner("abc"); DifferenceParser parser = new DifferenceParser(Ops.Sequence(this._letterOrDigit, this._letterOrDigit), this._letterOrDigit); Assert.IsTrue(parser.Parse(letter).Success); }
public void InputMatchesFirstParserAndSecondParser_SecondParserLonger_Fail() { IScanner letter = new StringScanner("abc"); DifferenceParser parser = new DifferenceParser(this._letterOrDigit, Ops.Sequence(this._letterOrDigit, this._letterOrDigit)); Assert.IsFalse(parser.Parse(letter).Success); }
public void DifferenceParser() { DifferenceParser parser = new DifferenceParser(this._letterOrDigit, this._symbol); Assert.AreEqual(this._letterOrDigit, parser.FirstParser); Assert.AreEqual(this._symbol, parser.SecondParser); }
public void InputDoesNotMatchFirstParserButMatchesSecondParser_ScanPosition_NoChange() { IScanner symbol = new StringScanner("+hello"); DifferenceParser parser = new DifferenceParser(this._letterOrDigit, this._symbol); parser.Parse(symbol); Assert.AreEqual(0, symbol.Offset); }
public void InputDoesNotMatchFirstParserButMatchesSecondParser_Actions_None() { IScanner symbol = new StringScanner("+"); DifferenceParser parser = new DifferenceParser(this._letterOrDigit, this._symbol); parser.Act += OnDifferenceParserSuccess; parser.Parse(symbol); Assert.IsFalse(_differenceParserSuccess); Assert.IsFalse(_letterOrDigitParserSuccess); Assert.IsFalse(_symbolParserSuccess); // should never call since first parser doesn't match }
public void InputDoesNotMatchFirstParserButMatchesSecondParser_Fail() { IScanner symbol = new StringScanner("+"); DifferenceParser parser = new DifferenceParser(this._letterOrDigit, this._symbol); parser.Act += OnDifferenceParserSuccess; Assert.IsFalse(parser.Parse(symbol).Success); }