public void EqualityTest6() // balanced parenthesis { String sg1 = "S -> S S|(S)|"; String sg2 = "X -> | X X | (L L->X) | X X)"; ContextFreeGrammar g1 = GrammarParser <char> .Parse(f1, sg1); ContextFreeGrammar g2 = GrammarParser <char> .Parse(f1, sg2); var res = GrammarUtilities.findDifferenceWithTimelimit(g1, g2, true, 100); Assert.IsTrue(res.Item2.Count == 0 && res.Item3.Count == 0); }
public void EqualityTest5() // (a|b)^n { String sg1 = "S -> a|b|aa|aS|bS|bbbbS"; String sg2 = "S->X|X S X->a|b"; ContextFreeGrammar g1 = GrammarParser <char> .Parse(f1, sg1); ContextFreeGrammar g2 = GrammarParser <char> .Parse(f1, sg2); var res = GrammarUtilities.findDifferenceWithTimelimit(g1, g2, true, 100); Assert.IsTrue(res.Item2.Count == 0 && res.Item3.Count == 0); }
public void EqualityTest4() // (a|b|c|d|e|f|g|h|i|j)* { String sg1 = "S->|a|b|c|d|e|f|g|h|i|j|S S"; String sg2 = "S->X|X S| X->a|b|c|d|e|f|g|h|i|j"; ContextFreeGrammar g1 = GrammarParser <char> .Parse(f1, sg1); ContextFreeGrammar g2 = GrammarParser <char> .Parse(f1, sg2); var res = GrammarUtilities.findDifferenceWithTimelimit(g1, g2, true, 50); Assert.IsTrue(res.Item2.Count == 0 && res.Item3.Count == 0); }
public void EqualityTest3() // a^n b^n { String sg1 = "S->aT T->aT U|b U->b"; String sg2 = "P->aR R->abb|aRb|b"; ContextFreeGrammar g1 = GrammarParser <char> .Parse(f1, sg1); ContextFreeGrammar g2 = GrammarParser <char> .Parse(f1, sg2); var res = GrammarUtilities.findDifferenceWithTimelimit(g1, g2, true, 100); Assert.IsTrue(res.Item2.Count == 0 && res.Item3.Count == 0); }
public void EqualityTest2() { String sg1 = "S->aSb|absjjfhghs|"; String sg2 = "S->aSb|aaSbb|"; ContextFreeGrammar g1 = GrammarParser <char> .Parse(f1, sg1); ContextFreeGrammar g2 = GrammarParser <char> .Parse(f1, sg2); var res = GrammarUtilities.findDifferenceWithTimelimit(g1, g2, true, 100); Assert.IsTrue(res.Item2[0].Equals("absjjfhghs") && res.Item3.Count == 0); }
public void EqualityTest7() // empty grammars and invariants { String sg1 = "S -> S S|(S)|"; ContextFreeGrammar g1 = GrammarParser <char> .Parse(f1, sg1); var res = GrammarUtilities.findDifferenceWithTimelimit(g1, null, true, 25); Assert.IsTrue(res.Item1 == 0 && res.Item2.Count > 0 && res.Item3.Count == 0); res = GrammarUtilities.findDifferenceWithTimelimit(null, g1, true, 25); Assert.IsTrue(res.Item1 == 0 && res.Item2.Count == 0 && res.Item3.Count > 0); res = GrammarUtilities.findDifferenceWithTimelimit(g1, g1, true, 25); Assert.IsTrue(res.Item1 > 0 && res.Item2.Count == 0 && res.Item3.Count == 0); res = GrammarUtilities.findDifferenceWithTimelimit(null, null, true, 30); Assert.IsTrue(res.Item1 == 0 && res.Item2.Count == 0 && res.Item3.Count == 0); }