protected override void SetRawValue(string?rawValue)
        {
            _rawValue = rawValue;
            _values.Clear();
            var managedValues = GetManagedValues().ToList();

            var position = 0;

            var managedValuesInfo = new List <ManagedValueInfo>();

            foreach (var managedValue in managedValues)
            {
                managedValuesInfo.Add(new ManagedValueInfo {
                    Value = managedValue, Parsed = false
                });
                managedValue.Reset();
                managedValue.ActualPosition = position++;
            }

            _values.AddRange(managedValues);

            if (rawValue == null)
            {
                return;
            }

            foreach (var parsedValue in HeaderValuesParser.ParseStatic(rawValue, ValuesDelimiter))
            {
                Value?value = null;

                foreach (var managedValueInfo in managedValuesInfo)
                {
                    if (!managedValueInfo.Parsed && managedValueInfo.Value.Parse(parsedValue.Interpreted, parsedValue.Raw))
                    {
                        managedValueInfo.Parsed = true;
                        value = managedValueInfo.Value;
                        break;
                    }
                }

                if (value == null)
                {
                    value = new UnmanagedValue(parsedValue.Raw);
                    _values.Add(value);
                }
                value.ActualPosition = position++;
            }
        }
        protected override void SetRawValue(string?rawValue)
        {
            _rawValue = rawValue;
            _valueCollection.Clear();
            IsDirty = false; // NOTE: important to set after Clear(), because as Clear() sets IsDirty as true
            if (rawValue == null)
            {
                return;
            }

            foreach (var interpreted in HeaderValuesParser.ParseInterpretedStatic(rawValue, HttpConst.DefaultHeaderDelimiter))
            {
                _valueCollection.Add(interpreted);
            }

            IsDirty = false;
        }
 public HeaderValuesParserTest()
 {
     _headerValuesParser = new HeaderValuesParser();
 }