public void Should_evaluate_program_from_start_index() { var program = "101,5,1,5,99,0,1101,5,1,11,99,0"; ProgramConfiguration.GetParameterMode(program, out var arg1, out var arg2, out var writeParameterMode, startIndex: 6); Assert.That(arg1, Is.EqualTo(ParameterMode.Immediate)); Assert.That(arg2, Is.EqualTo(ParameterMode.Immediate)); }
public string Process(string program, int startIndex = 0) { if (!_validator.Validate(program)) { throw new Exception(""); } _validator.ValidateProgramConfiguration(program, startIndex, 2); var intList = _validator.SplitString(program).ToArray(); _validator.ExtractOrdinals(intList, out var i1, out var i2, out var pointer, startIndex: startIndex); ProgramConfiguration.GetParameterMode(program, out var arg1Mode, out var arg2Mode, out var positionMode, startIndex: startIndex); var arg1 = (arg1Mode == ParameterMode.Immediate) ? intList[startIndex + 1] : intList[i1]; var arg2 = (arg2Mode == ParameterMode.Immediate) ? intList[startIndex + 2] : intList[i2]; ; intList[pointer] = arg1 * arg2; return(_validator.Join(intList)); }
public void Parameters_that_an_instruction_writes_to_will_never_be_in_immediate_mode(string program, ParameterMode expected) { ProgramConfiguration.GetParameterMode(program, out var ignored, out var unused, out var writeParameterMode); Assert.That(writeParameterMode, Is.EqualTo(ParameterMode.Positional)); }
public void Should_extract_parameter_mode_for_parameter_2(string program, ParameterMode expected) { ProgramConfiguration.GetParameterMode(program, out var ignored, out var i2, out var unused); Assert.That(i2, Is.EqualTo(expected)); }