from parameterized import parameterized
from src.intcode import Computer

import unittest

class Day2Tests(unittest.TestCase):

    @parameterized.expand([
        ([1,9,10,3,2,3,11,0,99,30,40,50], [3500,9,10,70,2,3,11,0,99,30,40,50]),
        ([1,0,0,0,99], [2,0,0,0,99]),
        ([2,3,0,3,99], [2,3,0,6,99]),
        ([2,4,4,5,99,0], [2,4,4,5,99,9801]),
        ([1,1,1,4,99,5,6,0,99], [30,1,1,4,2,5,6,0,99])
    ])
    def test_execute_program(self, input, expected):
        computer = Computer(input)
        computer.execute_program()
        self.assertListEqual(expected, computer.program)