public void ExecuteProgram_LargeNumber()
        {
            // Arrange
            // Should the large number in the middle.
            var program = "104,1125899906842624,99";
            var intcode = new Intcode.Interpreter(program);

            // Act
            intcode.ExecuteProgram();
            var output = intcode.GetLastOutput();

            // Assert
            Assert.AreEqual(1125899906842624, output);
        }
        public void ExecuteProgram_LargeNumbersMultiplication()
        {
            // Arrange
            // Should output a 16-digit number.
            var program = "1102,34915192,34915192,7,4,7,99,0";
            var intcode = new Intcode.Interpreter(program);

            // Act
            intcode.ExecuteProgram();
            var output = intcode.GetLastOutput();

            // Assert
            Assert.AreEqual(1219070632396864, output);
        }
        public void ExecuteProgram_RelativePositions()
        {
            // Arrange
            // Takes no input and produces a copy of itself as output.
            var program = "109,1,204,-1,1001,100,1,100,1008,100,16,101,1006,101,0,99";
            var intcode = new Intcode.Interpreter(program, memorySize: 200);

            // Act
            intcode.ExecuteProgram();
            var output = intcode.GetAllOutput(",");

            // Assert
            Assert.AreEqual($"{program},", output);
        }