public void ShouldGetDistinctOneNonTerminalInputs()
        {
            DistinctInputFactory distinctInputFactory;

            IActionInput <Token>[] inputs;

            distinctInputFactory = new DistinctInputFactory(new RangeValueProvider());
            inputs = distinctInputFactory.GetDistinctInputs(new IInput <Token>[] { new NonTerminalInput("A"), new NonTerminalInput("A"), new NonTerminalInput("A") }).ToArray();

            Assert.AreEqual(1, inputs.Length);
            Assert.AreEqual("A", ((INonTerminalInput <Token>)inputs[0]).Name);
        }
        public void ShouldGetDistinctOneNextInputs()
        {
            DistinctInputFactory distinctInputFactory;

            IActionInput <Token>[] inputs;

            distinctInputFactory = new DistinctInputFactory(new RangeValueProvider());
            inputs = distinctInputFactory.GetDistinctInputs(new IInput <Token>[] { new TerminalInput(new Token("C", "a")), new TerminalInput(new Token("C", "a")), new TerminalInput(new Token("C", "a")) }).ToArray();

            Assert.AreEqual(1, inputs.Length);
            Assert.AreEqual(new Token("C", "a"), ((ITerminalInput <Token>)inputs[0]).Value);
        }
        public void ShouldGetDistinctTwoNextInputs()
        {
            DistinctInputFactory distinctInputFactory;

            IActionInput <char>[] inputs;

            distinctInputFactory = new DistinctInputFactory(new RangeValueProvider());
            inputs = distinctInputFactory.GetDistinctInputs(new IInput <char>[] { new TerminalInput('a'), new TerminalInput('a'), new TerminalInput('b') }).ToArray();

            Assert.AreEqual(2, inputs.Length);
            Assert.AreEqual('a', ((ITerminalInput <char>)inputs[0]).Value);
            Assert.AreEqual('b', ((ITerminalInput <char>)inputs[1]).Value);
        }
Esempio n. 4
0
        public static IAutomatonTable <char> BuildAutomatonTable(IEnumerable <string> Rules)
        {
            IAutomatonTableFactory <char>     automatonTableFactory;
            IAutomatonTable <char>            automatonTable;
            SituationCollectionFactory <char> situationCollectionFactory;
            DistinctInputFactory distinctInputFactory;

            distinctInputFactory       = new DistinctInputFactory(new RangeValueProvider());
            automatonTableFactory      = new AutomatonTableFactory <char>( );
            situationCollectionFactory = new SituationCollectionFactory <char>(SituationGraphHelper.BuildSituationGraph(Rules.Select(item => RuleHelper.BuildRule(item)).ToArray()));
            automatonTable             = automatonTableFactory.BuildAutomatonTable(situationCollectionFactory, distinctInputFactory);

            return(automatonTable);
        }
        public void ShouldSplitLettersRangesUsingOneLetter()
        {
            DistinctInputFactory distinctInputFactory;

            IActionInput <char>[] inputs;

            distinctInputFactory = new DistinctInputFactory(new RangeValueProvider());
            inputs = distinctInputFactory.GetDistinctInputs(new IInput <char>[] { new TerminalRangeInput('a', 'g'), new TerminalInput('c') }).ToArray();

            Assert.AreEqual(3, inputs.Length);
            Assert.AreEqual('a', ((TerminalRangeInput)inputs[0]).FirstValue);
            Assert.AreEqual('b', ((TerminalRangeInput)inputs[0]).LastValue);
            Assert.AreEqual('c', ((TerminalInput)inputs[1]).Value);
            Assert.AreEqual('d', ((TerminalRangeInput)inputs[2]).FirstValue);
            Assert.AreEqual('g', ((TerminalRangeInput)inputs[2]).LastValue);
        }