public void Accepts_parameter_mode_immediate(string program, string expected) { var LessThanProgram = new LessThanProgram(new IntCodeValidator()); var output = LessThanProgram.Process(program); Assert.That(output, Is.EqualTo(expected)); }
public void Should_validate_op_code_7(string program) { var jumpIfTrueProgram = new LessThanProgram(new IntCodeValidator()); var ex = Assert.Throws <InvalidOpCodeException>(() => jumpIfTrueProgram.Process(program)); Assert.That(ex.Message, Does.Contain("Invalid input: op code (first integer)")); }
public void Stores_one_in_pointer_position_when_parameter_2_less_than_parameter_1(string program, string expected) { var LessThanProgram = new LessThanProgram(new IntCodeValidator()); Assert.That(LessThanProgram.Process(program), Is.EqualTo(expected), "Program should store 0"); Assert.That(LessThanProgram.InstructionLength, Is.EqualTo(4)); }
public void Supports_start_index() { var program = "3,9,7,9,10,9,4,9,99,-1,8"; var expected = "3,9,7,9,10,9,4,9,99,1,8"; var LessThanProgram = new LessThanProgram(new IntCodeValidator()); Assert.That(LessThanProgram.Process(program, 2), Is.EqualTo(expected), "Program should store 1"); }
public void Should_validate_input_is_a_valid_program() { var validatorSpy = A.Fake <IIntCodeValidator>(); var jumpIfTrue = new LessThanProgram(validatorSpy); var program = "a,0,99,0"; A.CallTo(() => validatorSpy.SplitString(program)).Returns(new IntCodeValidator().SplitString(program)); Assert.Throws <Exception>(() => jumpIfTrue.Process(program)); A.CallTo(() => validatorSpy.Validate(program)).MustHaveHappened(); }