コード例 #1
0
        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"));
        }
コード例 #2
0
        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"));
        }
コード例 #3
0
        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)"));
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        public void Should_validate_op_code_in_program_configuration(string program)
        {
            var outputProgram = new OutputProgram(new IntCodeValidator());

            Assert.DoesNotThrow(() => outputProgram.Process(program));
        }