Example #1
0
 public AutomatonTextTemplate(BREXManager manager, BDDHelperPredicates helperPredicates, string name, Automaton <BDD> automaton)
 {
     this.manager          = manager;
     this.helperPredicates = helperPredicates;
     this.name             = name;
     this.automaton        = automaton;
 }
Example #2
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);
        }
Example #3
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);
        }
        public void TestRegex_GenerateCpp()
        {
            Regex[] regexes = Array.ConvertAll(File.ReadAllLines(regexesFile), x => new Regex(x));
            var     brexman = new BREXManager("Matcher", "FString", 0, 0);

            for (int i = 0; i < regexes.Length && i < 50; i++)
            {
                var regex = regexes[i];
                var cpp   = regex.GenerateCpp();
                Assert.IsNotNull(cpp);
            }
        }
Example #5
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);
     }
 }
Example #6
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);
        }
Example #7
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);
     }
 }
Example #8
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);
            }
        }
Example #9
0
 public AutomataTextTemplate(BREXManager manager, Dictionary <string, Automaton <BDD> > automata)
 {
     this.manager          = manager;
     this.automata         = automata;
     this.helperPredicates = new BDDHelperPredicates(manager.Solver, true /*Optimize for ascii*/);
 }