public void Operation2_PositionMode_MultipliesValues() { string program = "2,3,0,3,99"; IntcodeComputer computer = new IntcodeComputer(); computer.AddProgram("key", program); computer.RunProgram("key"); Assert.Equal(6, computer.GetProgramAddressValue("key", 3)); }
public void Operation1_PositionMode_AddsValues() { string program = "1,0,0,0,99"; IntcodeComputer computer = new IntcodeComputer(); computer.AddProgram("key", program); computer.RunProgram("key"); Assert.Equal(2, computer.GetProgramAddressValue("key", 0)); }
public void Operation2_ImmediateMode_MultipliesValues() { // First param is in immediate mode so its value is 0 string program = "1002,4,3,4,33"; IntcodeComputer computer = new IntcodeComputer(); computer.AddProgram("key", program); computer.RunProgram("key"); Assert.Equal(99, computer.GetProgramAddressValue("key", 4)); }
public void Operation1_ImmediateMode_AddsValues() { // First param is in immediate mode so its value is 0 string program = "101,0,0,0,99"; IntcodeComputer computer = new IntcodeComputer(); computer.AddProgram("key", program); computer.RunProgram("key"); Assert.Equal(101, computer.GetProgramAddressValue("key", 0)); }
public void Operation3_PositionMode_TakesInput_SetsValue() { string program = "3,0,99"; IntcodeComputer computer = new IntcodeComputer(); //StringReader reader = new StringReader("1"); ProgramIO programIO = new ProgramIO(); programIO.WriteLineInput("1"); computer.AddProgram("key", program, programIO); computer.RunProgram("key"); Assert.Equal(1, computer.GetProgramAddressValue("key", 0)); }