protected override bool MatchCore(string text)
 {
     for (int n = 0; n < text.Length; n++)
     {
         finiteAutomaton.MakeTransition(text[n]);
         if (finiteAutomaton.IsStringAccepted)
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 2
0
        public void StringMatchAutomatonBuilderTest2()
        {
            IFiniteAutomaton <char> finiteAutomaton = CreateFiniteAutomaton("ABCDABD");

            finiteAutomaton.AssertID(0);
            finiteAutomaton.AssertDegree(1);
            finiteAutomaton.AssertTransition('A', 1);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('A');
            finiteAutomaton.AssertID(1);
            finiteAutomaton.AssertDegree(2);
            finiteAutomaton.AssertTransition('B', 2);
            finiteAutomaton.AssertTransition('A', 1);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('B');
            finiteAutomaton.AssertID(2);
            finiteAutomaton.AssertDegree(2);
            finiteAutomaton.AssertTransition('C', 3);
            finiteAutomaton.AssertTransition('A', 1);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('C');
            finiteAutomaton.AssertID(3);
            finiteAutomaton.AssertDegree(2);
            finiteAutomaton.AssertTransition('D', 4);
            finiteAutomaton.AssertTransition('A', 1);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('D');
            finiteAutomaton.AssertID(4);
            finiteAutomaton.AssertDegree(1);
            finiteAutomaton.AssertTransition('A', 5);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('A');
            finiteAutomaton.AssertID(5);
            finiteAutomaton.AssertDegree(2);
            finiteAutomaton.AssertTransition('B', 6);
            finiteAutomaton.AssertTransition('A', 1);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('B');
            finiteAutomaton.AssertID(6);
            finiteAutomaton.AssertDegree(3);
            finiteAutomaton.AssertTransition('D', 7);
            finiteAutomaton.AssertTransition('C', 3);
            finiteAutomaton.AssertTransition('A', 1);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('D');
            finiteAutomaton.AssertID(7);
            finiteAutomaton.AssertDegree(1);
            finiteAutomaton.AssertTransition('A', 1);
            Assert.IsTrue(finiteAutomaton.IsStringAccepted);
        }
Ejemplo n.º 3
0
        public void StringMatchAutomatonBuilderTest1()
        {
            IFiniteAutomaton <char> finiteAutomaton = CreateFiniteAutomaton("ababaca");

            finiteAutomaton.AssertID(0);
            finiteAutomaton.AssertDegree(1);
            finiteAutomaton.AssertTransition('a', 1);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('a');
            finiteAutomaton.AssertID(1);
            finiteAutomaton.AssertDegree(2);
            finiteAutomaton.AssertTransition('b', 2);
            finiteAutomaton.AssertTransition('a', 1);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('b');
            finiteAutomaton.AssertID(2);
            finiteAutomaton.AssertDegree(1);
            finiteAutomaton.AssertTransition('a', 3);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('a');
            finiteAutomaton.AssertID(3);
            finiteAutomaton.AssertDegree(2);
            finiteAutomaton.AssertTransition('b', 4);
            finiteAutomaton.AssertTransition('a', 1);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('b');
            finiteAutomaton.AssertID(4);
            finiteAutomaton.AssertDegree(1);
            finiteAutomaton.AssertTransition('a', 5);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('a');
            finiteAutomaton.AssertID(5);
            finiteAutomaton.AssertDegree(3);
            finiteAutomaton.AssertTransition('c', 6);
            finiteAutomaton.AssertTransition('b', 4);
            finiteAutomaton.AssertTransition('a', 1);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('c');
            finiteAutomaton.AssertID(6);
            finiteAutomaton.AssertDegree(1);
            finiteAutomaton.AssertTransition('a', 7);
            Assert.IsFalse(finiteAutomaton.IsStringAccepted);
            finiteAutomaton.MakeTransition('a');
            finiteAutomaton.AssertID(7);
            finiteAutomaton.AssertDegree(2);
            finiteAutomaton.AssertTransition('a', 1);
            finiteAutomaton.AssertTransition('b', 2);
            Assert.IsTrue(finiteAutomaton.IsStringAccepted);
        }