예제 #1
0
        public void TestBREXLikeExpressionSmall()
        {
            var man   = new BREXManager();
            var like1 = man.MkLike(@"%[ab]_____");
            var like2 = man.MkLike(@"%[bc]_____");
            var and   = man.MkAnd(like1, like2);
            var dfa   = and.Optimize();
            var like  = man.MkLike(@"%b_____");
            var dfa2  = like.Optimize();
            var equiv = dfa.IsEquivalentWith(dfa2);

            Assert.IsTrue(equiv);
        }
예제 #2
0
 public void TestBREXLikeExpressionMedium()
 {
     try
     {
         var man   = new BREXManager();
         var like1 = man.MkLike(@"%[ab]________");
         var like2 = man.MkLike(@"%[bc]________");
         var and   = man.MkAnd(like1, like2);
         var dfa   = and.Optimize();
     }
     catch (AutomataException e)
     {
         Assert.IsTrue(e.kind == AutomataExceptionKind.AutomataConversionFailed);
     }
 }
예제 #3
0
        public void TestBREXLikeExpressionLargeTimeout()
        {
            var man   = new BREXManager("Matcher", "FString", int.MaxValue);
            var like1 = man.MkLike(@"%[ab]_____________");
            var like2 = man.MkLike(@"%[bc]_____________");
            var and   = man.MkAnd(like1, like2);

            try
            {
                var dfa = and.Optimize();
            }
            catch (AutomataException e)
            {
                Assert.IsTrue(e.kind == AutomataExceptionKind.AutomataConversionFailed);
            }
        }
예제 #4
0
        public void TestBREXLikeExpressionOK()
        {
            var man  = new BREXManager("Matcher", "FString", 2000);
            var like = man.MkLike(@"%[ab]_________");
            var dfa  = like.Optimize();

            Assert.IsTrue(dfa.StateCount > 1000 && dfa.StateCount <= 2000);
        }
예제 #5
0
        private static void TestCorrectnessOfLike(string like, string regex)
        {
            BREXManager bm = new BREXManager();
            var         a  = bm.MkLike(like);
            var         A  = a.Optimize();
            var         b  = bm.MkRegex(regex, System.Text.RegularExpressions.RegexOptions.Singleline);
            var         B  = b.Optimize();
            var         eq = A.IsEquivalentWith(B);

            Assert.IsTrue(eq);
        }
예제 #6
0
 public void TestBREXLikeExpressionTooManyStates()
 {
     try
     {
         var man  = new BREXManager();
         var like = man.MkLike(@"%[ab]_________");
         var dfa  = like.Optimize();
     }
     catch (AutomataException e)
     {
         Assert.IsTrue(e.kind == AutomataExceptionKind.AutomataConversionFailed);
     }
 }