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_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 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 Operation6_ImmediateMode_ValueFalse_JumpsToSecondOutput() { string program = "1106,1,6,4,1,99,4,0,99"; IntcodeComputer computer = new IntcodeComputer(); ProgramIO programIO = new ProgramIO(); computer.AddProgram("key", program, programIO); computer.RunProgram("key"); Assert.Equal("1", programIO.ReadLineOutput()); }
public void Operation6_ImmediateMode_ValueTrue_DoesntJumpFirstOutput() { string program = "1106,0,6,4,1,99,4,0,99"; IntcodeComputer computer = new IntcodeComputer(); ProgramIO programIO = new ProgramIO(); computer.AddProgram("key", program, programIO); computer.RunProgram("key"); Assert.Equal("1106", programIO.ReadLineOutput()); }
public void Operation6_PositionMode_ValueTrue_DoesntJumpFirstOutput() { string program = "6,3,4,0,4,2,99"; IntcodeComputer computer = new IntcodeComputer(); ProgramIO programIO = new ProgramIO(); computer.AddProgram("key", program, programIO); computer.RunProgram("key"); Assert.Equal("4", programIO.ReadLineOutput()); }
public void Operation5_PositionMode_ValueTrue_JumpsToSecondOutput() { string program = "5,1,3,7,4,1,99,4,0,99"; IntcodeComputer computer = new IntcodeComputer(); ProgramIO programIO = new ProgramIO(); computer.AddProgram("key", program, programIO); computer.RunProgram("key"); Assert.Equal("5", programIO.ReadLineOutput()); }
public void Operation4_ImmediateMode_TakesValue_OutputsValue() { string program = "104,0,99"; IntcodeComputer computer = new IntcodeComputer(); ProgramIO programIO = new ProgramIO(); computer.AddProgram("key", program, programIO); computer.RunProgram("key"); Assert.Equal("0", programIO.ReadLineOutput()); }
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)); }
public void Operation3_RelativeMode() { string code = "109,-1,203,6,104,1,99"; string programKey = "Day9"; IntcodeComputer computer = new IntcodeComputer(); ProgramIO programIO = new ProgramIO(); programIO.WriteLineInput("2"); computer.AddProgram(programKey, code, programIO); computer.RunProgram(programKey); Assert.Equal("2", programIO.ReadLineOutput()); }