public void SetTerminalShouldRecognizeCharacterInSet() { var setTerminal = new SetTerminal("az"); Assert.IsTrue(setTerminal.CanApply('a')); Assert.IsTrue(setTerminal.CanApply('z')); }
public void SetTerminalGetIntervalsShouldReturnMergedIntervalWhenCharactersOverlap() { var setTerminal = new SetTerminal("abcdez"); var intervals = setTerminal.GetIntervals(); Assert.AreEqual(2, intervals.Count); Assert.AreEqual('a', intervals[0].Min); Assert.AreEqual('e', intervals[0].Max); Assert.AreEqual('z', intervals[1].Min); Assert.AreEqual('z', intervals[1].Max); }
public void ProductionExpressionShouldSupportConcatenationOfStringAndTerminal() { ProductionExpression S = "S"; AtomTerminal a = new SetTerminal("ab"); S.Rule = (Expr)"b" + a; Assert.IsNotNull(S.ProductionModel); Assert.AreEqual(1, S.ProductionModel.Alterations.Count); Assert.AreEqual(2, S.ProductionModel.Alterations[0].Symbols.Count); }
public void SetTerminalShouldUseIntervalsForToString() { var setTerminal = new SetTerminal("abcdez"); Assert.AreEqual("[a-ez]", setTerminal.ToString()); setTerminal = new SetTerminal("zabcde"); Assert.AreEqual("[a-ez]", setTerminal.ToString()); setTerminal = new SetTerminal("abcde"); Assert.AreEqual("[a-e]", setTerminal.ToString()); setTerminal = new SetTerminal("z"); Assert.AreEqual("[z]", setTerminal.ToString()); }
public void SetTerminalShouldNotRecognizeCharacterOutOfSet() { var setTerminal = new SetTerminal("az"); Assert.IsFalse(setTerminal.CanApply('b')); }
public void SetTerminalShouldRecognizeCharacterInSet() { var setTerminal = new SetTerminal('a', 'z'); Assert.IsTrue(setTerminal.IsMatch('a')); }
public void SetTerminalShouldNotRecognizeCharacterOutOfSet() { var setTerminal = new SetTerminal('a', 'z'); Assert.IsFalse(setTerminal.IsMatch('b')); }