public void Should_advance_program_counter_if_instruction_jumped_in_previous_execution() { TestedInstruction = new TestInstruction(1) { ExecuteInternalAction = (self, givenState) => { var jmp = self.PublicGetParameterValue(1); if (jmp > 0) { self.PublicJump(jmp); } }, ParameterModes = 1 }; var state = new ComputerState { Memory = new[] { 0, 2, 1, 0 } }; TestedInstruction.Execute(state); TestedInstruction.Execute(state); Assert.Equal(4, state.ProgramCounter); }
public GetParameterValue() { TestedInstruction = new TestInstruction(3) { ExecuteInternalAction = (self, givenState) => { _actual = self.PublicGetParameterValue(givenState.Memory[0]); } }; }
public Execute() { TestedInstruction = new TestInstruction(0) { ExecuteInternalAction = (self, givenState) => { _executeInternalExecuted = true; } }; }
public void Sequence_ExecutesAll_WhenNoErrors() { var completed1 = false; var completed2 = false; var completed3 = false; TestInstruction .Sequence(new[] { DoAndReturn("Set completed1", () => completed1 = true).BoxResult(), DoAndReturn("Set completed2", () => completed2 = true).BoxResult(), DoAndReturn("Set completed3", () => completed3 = true).BoxResult(), }) .ToTask(this.Executor); Assert.AreEqual( (true, true, true), (completed1, completed2, completed3)); }