public void Should_respect_immediate_mode() { var program = "104,99,99"; var outputProgram = new OutputProgram(new IntCodeValidator()); Assert.That(outputProgram.Process(program, 0), Is.EqualTo("99")); }
public void Should_run_program_from_start_position() { var outputProgram = new OutputProgram(new IntCodeValidator()); var program = "1,2,3,4,99,4,10,99,0,0,10"; Assert.That(outputProgram.Process(program, 5), Is.EqualTo("10")); }
public void Should_validate_op_code_4(string program) { var outputProgram = new OutputProgram(new IntCodeValidator()); var ex = Assert.Throws <InvalidOpCodeException>(() => outputProgram.Process(program)); Assert.That(ex.Message, Does.Contain("Invalid input: op code (first integer)")); }
public void Should_validate_input_is_a_valid_program() { var validatorSpy = A.Fake <IIntCodeValidator>(); var outputProgram = new OutputProgram(validatorSpy); var program = "a,0,99,0"; A.CallTo(() => validatorSpy.SplitString(program)).Returns(new IntCodeValidator().SplitString(program)); Assert.Throws <Exception>(() => outputProgram.Process(program)); A.CallTo(() => validatorSpy.Validate(program)).MustHaveHappened(); }
public void Should_return_value_at_position(string program, string expected) { var outputProgram = new OutputProgram(new IntCodeValidator()); Assert.That(outputProgram.Process(program), Is.EqualTo(expected)); }
public void Should_validate_op_code_in_program_configuration(string program) { var outputProgram = new OutputProgram(new IntCodeValidator()); Assert.DoesNotThrow(() => outputProgram.Process(program)); }