Exemple #1
0
        public void TestSymbolicRegex_Reverse()
        {
            CharSetSolver css = new CharSetSolver();
            //-----
            var R1       = new Regex(@"abc");
            var sr1      = css.RegexConverter.ConvertToSymbolicRegex(R1, true);
            var rev1     = sr1.Reverse();
            var matcher1 = new SymbolicRegex <BDD>(rev1, css, rev1.ComputeMinterms());

            Assert.IsTrue(matcher1.IsMatch("cba"));
            //-----
            var R2       = new Regex(@"^(foo|ab+d)+$");
            var sr2      = css.RegexConverter.ConvertToSymbolicRegex(R2, true);
            var rev2     = sr2.Reverse();
            var matcher2 = new SymbolicRegex <BDD>(rev2, css, rev2.ComputeMinterms());

            Assert.IsTrue(sr2.Equals(rev2.Reverse()));
            Assert.IsTrue(matcher2.IsMatch("oof"));
            Assert.IsTrue(matcher2.IsMatch("oofdbbaoofoofdbbadba"));
            var sampler = new SymbolicRegexSampler <BDD>(css.RegexConverter.srBuilder, rev2, 10);
            var samples = sampler.GetPositiveDataset(100);

            foreach (var sample in samples)
            {
                Assert.IsTrue(matcher2.IsMatch(sample));
            }
        }
Exemple #2
0
        public void TestSymbolicRegexSampler_KleeneStar()
        {
            CharSetSolver solver  = new CharSetSolver(BitWidth.BV7);
            string        regex   = @"^(a(b*)c)*$";
            var           sr      = solver.RegexConverter.ConvertToSymbolicRegex(regex);
            var           sampler = new SymbolicRegexSampler <BDD>(solver.RegexConverter.srBuilder, sr, 15);

            Assert.IsTrue(sampler.GetPositiveDataset(1000).Count > 100, "Incomplete Dataset");
        }
Exemple #3
0
        public void TestSymbolicRegexSampler_Anchors()
        {
            CharSetSolver solver  = new CharSetSolver(BitWidth.BV7);
            string        regex   = @"^bcd$";
            var           sr      = solver.RegexConverter.ConvertToSymbolicRegex(regex);
            var           sampler = new SymbolicRegexSampler <BDD>(solver.RegexConverter.srBuilder, sr, 15);

            Assert.IsTrue(sampler.GetPositiveDataset(100).Count == 1, "Too large Dataset");
        }
Exemple #4
0
        public void TestSymbolicRegexSampler_Completeness()
        {
            CharSetSolver solver  = new CharSetSolver(BitWidth.BV7);
            string        regex   = @"^(a|b)cccc(d|e)kkkk(f|l)$";
            var           sr      = solver.RegexConverter.ConvertToSymbolicRegex(regex);
            var           sampler = new SymbolicRegexSampler <BDD>(solver.RegexConverter.srBuilder, sr, 10);

            Assert.IsTrue(sampler.GetPositiveDataset(1000).Count == 8, "Incomplete Dataset");
        }