public void Swap_SwapsNopWithJmp(string givenName, string expectedName)
        {
            var instruction = new [] { new Instruction(givenName, 0) };
            var booter      = new ConsoleBooter(instruction);

            booter.SwapAt(0);

            booter.CurrentInstruction.Name.Should().Be(expectedName);
        }
        public void Reset_SetsAllIsVisitedToFalse_And_ResetsAmendedInstruction_And_SetsCurrentInstructionTo0_AndSetsAccumulatorTo0()
        {
            var instructionsOriginal = new [] { new Instruction(Increment, 1), new Instruction(Ignore, 1), };
            var booter = new ConsoleBooter(instructionsOriginal);

            booter.NextInstruction();
            booter.SwapAt(1);

            booter.Reset();

            using (new AssertionScope())
            {
                booter.Accumulator.Should().Be(0);

                booter.CurrentInstruction.IsVisited.Should().BeFalse();
                booter.CurrentInstruction.Name.Should().Be(instructionsOriginal[0].Name);

                booter.NextInstruction();
                booter.CurrentInstruction.Name.Should().Be(instructionsOriginal[1].Name);
            }
        }