コード例 #1
0
        public void ExecuteInstruction_AddThenMultiply()
        {
            // Arrange
            var program = "1,1,1,4,99,5,6,0,99";
            var intcode = new Intcode.Interpreter(program);

            // Act & Assert
            intcode.ExecuteInstruction();
            Assert.AreEqual("1,1,1,4,2,5,6,0,99", intcode.GenerateProgramString());

            intcode.ExecuteInstruction();
            Assert.AreEqual("30,1,1,4,2,5,6,0,99", intcode.GenerateProgramString());
        }
コード例 #2
0
        public void ExecuteInstruction_InputThenOutput()
        {
            // Arrange
            var program = "3,0,4,0,99";
            var intcode = new Intcode.Interpreter(program);
            var input   = 13;

            // Act & Assert
            intcode.SetInput(input);
            intcode.ExecuteInstruction();
            Assert.AreEqual("13,0,4,0,99", intcode.GenerateProgramString());

            intcode.ExecuteInstruction();
            Assert.AreEqual(input, intcode.GetOutput());
        }
コード例 #3
0
        public void ExecuteInstruction_Multiply2()
        {
            // Arrange
            var program = "2,4,4,5,99,0";
            var result  = "2,4,4,5,99,9801";
            var intcode = new Intcode.Interpreter(program);

            // Act
            intcode.ExecuteInstruction();

            // Assert
            Assert.AreEqual(result, intcode.GenerateProgramString());
        }
コード例 #4
0
        public void ExecuteInstruction_Add_ImmediateMode_NegativeNumber()
        {
            // Arrange
            var program = "1101,100,-1,4,0";
            var result  = "1101,100,-1,4,99";
            var intcode = new Intcode.Interpreter(program);

            // Act
            intcode.ExecuteInstruction();

            // Assert
            Assert.AreEqual(result, intcode.GenerateProgramString());
        }
コード例 #5
0
        public void ExecuteInstruction_Add_ImmediateMode()
        {
            // Arrange
            var program = "1001,4,3,4,33";
            var result  = "1001,4,3,4,36";
            var intcode = new Intcode.Interpreter(program);

            // Act
            intcode.ExecuteInstruction();

            // Assert
            Assert.AreEqual(result, intcode.GenerateProgramString());
        }
コード例 #6
0
        public void ExecuteInstruction_Add()
        {
            // Arrange
            var program = "1,0,0,0,99";
            var result  = "2,0,0,0,99";
            var intcode = new Intcode.Interpreter(program);

            // Act
            intcode.ExecuteInstruction();

            // Assert
            Assert.AreEqual(result, intcode.GenerateProgramString());
        }
コード例 #7
0
        public void ExecuteInstruction_LessThan_ImmediateMode()
        {
            // Arrange
            var islessthan = "1107,66,77,5,99,-1";
            var expected   = "1107,66,77,5,99,1";
            var intcode    = new Intcode.Interpreter(islessthan);

            // Act & Assert
            intcode.ExecuteInstruction();
            Assert.AreEqual(expected, intcode.GenerateProgramString());

            // Arrange
            var notlessthan = "1107,66,66,5,99,-1";

            expected = "1107,66,66,5,99,0";
            intcode  = new Intcode.Interpreter(notlessthan);

            // Act & Assert
            intcode.ExecuteInstruction();
            Assert.AreEqual(expected, intcode.GenerateProgramString());
        }
コード例 #8
0
        public void ExecuteInstruction_Equals_PositionMode()
        {
            // Arrange
            var isequal  = "8,5,6,7,99,66,66,-1";
            var expected = "8,5,6,7,99,66,66,1";
            var intcode  = new Intcode.Interpreter(isequal);

            // Act && Assert
            intcode.ExecuteInstruction();
            Assert.AreEqual(expected, intcode.GenerateProgramString());

            // Arrange
            var notequal = "8,5,6,7,99,66,77,-1";

            expected = "8,5,6,7,99,66,77,0";
            intcode  = new Intcode.Interpreter(notequal);

            // Act && Assert
            intcode.ExecuteInstruction();
            Assert.AreEqual(expected, intcode.GenerateProgramString());
        }