Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #3
0
 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));
 }
Example #4
0
 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));
 }