public void MovingTapeRightBringsBlankCellIntoView() { Tape tape = new Tape(); tape.Write('a'); tape.MoveRight(); Assert.AreEqual(' ', tape.Read()); }
public void GetIndexReturnsCurrentTapeIndex() { Tape tape = new Tape(); tape.MoveRight(); Assert.AreEqual(1, tape.GetIndex()); tape.MoveLeft(); Assert.AreEqual(0, tape.GetIndex()); }
public void MovingTapeLeftThenRightReturnsTapeToOriginalPosition() { Tape tape = new Tape(); char symbol = 'a'; tape.Write(symbol); tape.MoveLeft(); tape.MoveRight(); Assert.AreEqual(symbol, tape.Read()); }
public void TapeStoresAllWrittenSymbolsAsItMovesRight() { Tape tape = new Tape(); List<char> symbols = new List<char>() { 'a', 'b', 'c', 'd' }; for(int symbolIndex = 0; symbolIndex < symbols.Count; ++symbolIndex) { tape.Write(symbols[symbolIndex]); tape.MoveRight(); } for (int symbolIndex = symbols.Count - 1; symbolIndex >= 0; --symbolIndex) { tape.MoveLeft(); Assert.AreEqual(symbols[symbolIndex], tape.Read()); } }
public void TapeCanBeInitialisedWithDifferentValues() { Tape tape = new Tape("a,,b,,c"); Assert.AreEqual('a', tape.Read()); tape.MoveRight(); Assert.AreEqual(' ', tape.Read()); tape.MoveRight(); Assert.AreEqual('b', tape.Read()); tape.MoveRight(); Assert.AreEqual(' ', tape.Read()); tape.MoveRight(); Assert.AreEqual('c', tape.Read()); tape.MoveRight(); }
public void TapeCanBeInitialisedToDifferentStartPosition() { Tape tape = new Tape("a,,b,,c\n2"); Assert.AreEqual('b', tape.Read()); tape.MoveRight(); Assert.AreEqual(' ', tape.Read()); tape.MoveRight(); Assert.AreEqual('c', tape.Read()); tape.MoveRight(); }