public void ParseDefinition_FinalStates_NotInStates() { List<string> definition = new List<string>() { "description stuff1", "description stuff2", "STATES: S1 S2 S3 S4", "INPUT_ALPHABET: a b", "TAPE_ALPHABET: a b x y -", "TRANSITION_FUNCTION:", "s0 a s1 X R", "s0 Y s3 Y R", "s1 a s1 a R", "s1 b s2 Y L", "s1 Y s1 Y R", "s2 a s2 a L", "s2 X s0 X R", "s2 Y s2 Y L", "s3 Y s3 Y R", "s3 - s4 - R", "INITIAL_STATE: s0", "BLANK_CHARACTER: -", "FINAL_STATES: BOGUS" }; Tape tape = new Tape(); FinalStates final_states = new FinalStates(); InputAlphabet input_alphabet = new InputAlphabet(); States states = new States(); TapeAlphabet tape_alphabet = new TapeAlphabet(); TransitionFunction transition_function = new TransitionFunction(); TuringMachine tm = new TuringMachine(""); Assert.IsTrue(tm.parseDescription(ref definition), "Failed to parse description"); Assert.IsTrue(states.load(ref definition), "Failed to parse states."); Assert.IsTrue(input_alphabet.load(ref definition), "Failed to parse input alphabet"); Assert.IsTrue(tape_alphabet.load(ref definition), "Failed to parse tape alphabet"); Assert.IsTrue(transition_function.load(ref definition), "Failed to parse transition function."); Assert.IsTrue(tm.LoadInitialState(ref definition), "Failed to parse initial state."); Assert.IsTrue(tape.load(ref definition), "Failed to load tape."); Assert.IsFalse(final_states.load(ref definition), "Should fail to parse final state that is not in states."); }
void TestDefinition(List<string> definition) { TuringMachine tm = new TuringMachine(""); Assert.IsTrue(tm.parseDescription(ref definition), "Failed to parse description"); Assert.IsTrue(states.load(ref definition), "Failed to parse states."); Assert.IsTrue(input_alphabet.load(ref definition), "Failed to parse input alphabet"); Assert.IsTrue(tape_alphabet.load(ref definition), "Failed to parse tape alphabet"); Assert.IsTrue(transition_function.load(ref definition), "Failed to parse transition function."); Assert.IsTrue(tm.LoadInitialState(ref definition), "Failed to parse initial state."); Assert.IsTrue(tape.load(ref definition), "Failed to load tape."); Assert.IsTrue(final_states.load(ref definition), "Failed to parse final states."); }
public void ParseDefinition_BlankChar_NotInAlphabet() { List<string> definition = new List<string>() { "a b x y -", "TRANSITION_FUNCTION:", "s0 a s1 X R", "s0 Y s3 Y R", "s1 a s1 a R", "s1 b s2 Y L", "s1 Y s1 Y R", "s2 a s2 a L", "s2 X s0 X R", "s2 Y s2 Y L", "s3 Y s3 Y R", "s3 - s4 - R", "INITIAL_STATE: s0", "BLANK_CHARACTER: +", "FINAL_STATES: s4" }; Tape tape = new Tape(); FinalStates final_states = new FinalStates(); InputAlphabet input_alphabet = new InputAlphabet(); States states = new States(); TapeAlphabet tape_alphabet = new TapeAlphabet(); TransitionFunction transition_function = new TransitionFunction(); TuringMachine tm = new TuringMachine(""); Assert.IsTrue(tape_alphabet.load(ref definition), "Failed to parse tape alphabet"); Assert.IsTrue(transition_function.load(ref definition), "Failed to parse transition function."); Assert.IsTrue(tm.LoadInitialState(ref definition), "Failed to parse initial state."); Assert.IsFalse(tape.load(ref definition), "Should not load a blank char that's not in tape alphabet."); }