コード例 #1
0
        public void NotRangeShouldntMatch()
        {
            var sut = Integers.From('u', 'w').Not();

            Assert.IsTrue(sut.Contains('a'));
            Assert.IsTrue(sut.Contains('z'));
        }
コード例 #2
0
        public void RangeShouldntMatch()
        {
            var sut = Integers.From('u', 'w');

            Assert.IsFalse(sut.Contains('a'));
            Assert.IsFalse(sut.Contains('z'));
        }
コード例 #3
0
        public void RangeShouldMatch()
        {
            var sut = Integers.From('u', 'w');

            Assert.IsTrue(sut.Contains('u'));
            Assert.IsTrue(sut.Contains('v'));
            Assert.IsTrue(sut.Contains('w'));
        }
コード例 #4
0
        public void NotRangeShouldMatch()
        {
            var sut = Integers.From('u', 'w').Not();

            Assert.IsFalse(sut.Contains('u'));
            Assert.IsFalse(sut.Contains('v'));
            Assert.IsFalse(sut.Contains('w'));
        }
コード例 #5
0
        private FA EvenB()
        {
            var start = new State(true);
            var count = new State(false);
            var a     = Integers.From('a');
            var b     = Integers.From('b');

            start.Add(a, start);
            start.Add(b, count);
            count.Add(a, count);
            count.Add(b, start);

            return(FA.From(start));
        }
コード例 #6
0
        public void TransformShouldCreateDfa()
        {
            var state1 = new State();
            var state2 = new State();
            var state3 = new State();

            state1.Add(Integers.From('1'), state2);
            state2.Add(Integers.From('2'), state3);
            state3.Add(Integers.From('3'), state1);

            var nfa = FA.From(state1, state3);

            var dfa = nfa.ToDfa().Minimize();

            Assert.IsNotNull(dfa);
            Assert.AreEqual(3, dfa.States.Count);
        }
コード例 #7
0
        private static Matcher MakeMatcher()
        {
            // a?[ab]
            var first = new State();
            var last = new State();
            var end = new State();

            var a1 = Integers.From('a');
            var a2 = Integers.From('a', 'b');

            first.Add(a1, last);
            first.Add(last);
            last.Add(a2, end);

            var nfa = FA.From(first, end);

            return new Matcher(nfa.ToDfa().Minimize());
        }
コード例 #8
0
        private static Matcher Matcher()
        {
            // lf | cr lf
            var start = new State();
            var cr    = new State();
            var done  = new State();

            var l = Integers.From('l');
            var c = Integers.From('c');

            start.Add(l, done);
            start.Add(c, cr);
            cr.Add(l, done);

            var nfa = FA.From(start, done);

            return(new Matcher(nfa.ToDfa().Minimize()));
        }
コード例 #9
0
        private static Matcher MakeMatcher()
        {
            // [ab]?[abc][ab]?
            var first  = new State();
            var center = new State();
            var last   = new State();
            var end    = new State();

            var ab = Integers.From('a', 'b');
            var ac = Integers.From('a', 'c');

            first.Add(ab, center);
            first.Add(center);
            center.Add(ac, last);
            last.Add(ab, end);
            last.Add(end);

            var nfa = FA.From(first, end);

            return(new Matcher(nfa.ToDfa().Minimize()));
        }
コード例 #10
0
        public void RangeCreateString()
        {
            var sut = Integers.From('u', 'w');

            Assert.AreEqual("['u'-'w']", sut.ToString());
        }
コード例 #11
0
        public void NotSingleCreateString()
        {
            var sut = Integers.From('a').Not();

            Assert.AreEqual("[0-96,98-1114111]", sut.ToIString());
        }
コード例 #12
0
        public void NotRangeCreateString()
        {
            var sut = Integers.From('u', 'w').Not();

            Assert.AreEqual("[0-116,120-1114111]", sut.ToIString());
        }
コード例 #13
0
        public void NotSingleShouldntMatch()
        {
            var sut = Integers.From('a').Not();

            Assert.IsTrue(sut.Contains('b'));
        }
コード例 #14
0
        public void SingleCreateString()
        {
            var sut = Integers.From('a');

            Assert.AreEqual("['a']", sut.ToString());
        }
コード例 #15
0
        public void SingleShouldntMatch()
        {
            var sut = Integers.From('a');

            Assert.IsFalse(sut.Contains('b'));
        }
コード例 #16
0
        public void SingleShouldMatch()
        {
            var sut = Integers.From('a');

            Assert.IsTrue(sut.Contains('a'));
        }