public void GenerateCodeSegment()
        {
            var input    = "1,9,10,3,2,3,11,0,99,30,40,50";
            var expected = new CodeSegment
            {
                Index          = 0,
                OpCode         = OpCodes.Addition,
                Arguments      = (30, 40),
                UpdatePosition = 3
            };
            var intProcessor = new IntCodeProcessor(input);

            CodeSegment actual = intProcessor.GenerateCodeSegment(0);

            actual.Index.ShouldBe(expected.Index);
            actual.OpCode.ShouldBe(expected.OpCode);
            actual.Arguments.ShouldBe(expected.Arguments);
            actual.UpdatePosition.ShouldBe(expected.UpdatePosition);
        }
        public void GeneratePartialCodeSegmentIfStop()
        {
            var input    = "1,9,10,3,2,3,11,0,99,30,40,50";
            var expected = new CodeSegment
            {
                Index          = 8,
                OpCode         = OpCodes.Stop,
                Arguments      = (-1, -1),
                UpdatePosition = -1
            };
            var intProcessor = new IntCodeProcessor(input);

            CodeSegment actual = intProcessor.GenerateCodeSegment(8);

            actual.Index.ShouldBe(expected.Index);
            actual.OpCode.ShouldBe(expected.OpCode);
            actual.Arguments.ShouldBe(expected.Arguments);
            actual.UpdatePosition.ShouldBe(expected.UpdatePosition);
        }