public void AddState_AddsState_IfIdUnique()
        {
            var automaton = new Automaton(_alphabet);
            var stateIds  = new List <int>();

            for (int i = 0; i < 3; i++)
            {
                var stateId = automaton.AddState();
                stateIds.Add(stateId);
            }

            var states = automaton.States;

            Assert.Equal(3, states.Count);
            foreach (var state in states)
            {
                Assert.Contains(state, stateIds);
            }
        }
        internal static Automaton CreateLargeAutomataWithRandomTransitions(char[] alphabet, int states = 10000)
        {
            var automaton = new Automaton(alphabet);
            var rng       = new Random();

            for (int i = 0; i < states; i++)
            {
                automaton.AddState();
            }
            automaton.SetAsStartState(0);
            automaton.SetAsFinalState(states - 1);
            for (int i = 0; i < states; i++)
            {
                foreach (var symbol in alphabet)
                {
                    var state = rng.Next(states);
                    automaton.AddTransition(i, state, symbol);
                }
            }
            return(automaton);
        }
Beispiel #3
0
 public State(Automaton owner)
 {
     Id    = _next_id++;
     Owner = owner;
     Owner.AddState(this);
 }