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); }
public State(Automaton owner) { Id = _next_id++; Owner = owner; Owner.AddState(this); }