public void GetEnumerator_FirstHeaderWithOneValueSecondHeaderWithTwoValues_EnumeratorReturnsTwoHeaders() { MockHeaders headers = new MockHeaders(); headers.Add(customHeader, "custom0"); headers.Add(knownHeader, rawPrefix + "1"); headers.TryAddWithoutValidation(knownHeader, rawPrefix + "2"); // The value added with TryAddWithoutValidation() wasn't parsed yet. Assert.Equal(1, headers.Parser.TryParseValueCallCount); var enumerator = headers.GetEnumerator(); // Getting the enumerator doesn't trigger parsing. Assert.Equal(1, headers.Parser.TryParseValueCallCount); Assert.True(enumerator.MoveNext()); Assert.Equal(customHeader, enumerator.Current.Key); Assert.Equal(1, enumerator.Current.Value.Count()); Assert.Equal("custom0", enumerator.Current.Value.ElementAt(0)); // Starting using the enumerator will trigger parsing of raw values. The first header is not a known // header, so there shouldn't be any parsing. Assert.Equal(1, headers.Parser.TryParseValueCallCount); Assert.True(enumerator.MoveNext()); Assert.Equal(knownHeader, enumerator.Current.Key); Assert.Equal(2, enumerator.Current.Value.Count()); Assert.Equal(parsedPrefix + "1", enumerator.Current.Value.ElementAt(0)); Assert.Equal(parsedPrefix + "2", enumerator.Current.Value.ElementAt(1)); // The second header is a known header, so parsing raw values should get executed. Assert.Equal(2, headers.Parser.TryParseValueCallCount); Assert.False(enumerator.MoveNext(), "Only 2 values expected, but enumerator returns a third one."); }
public void GetEnumerator_FirstCustomHeaderWithEmptyValueSecondKnownHeaderWithEmptyValue_EnumeratorReturnsOneHeader() { MockHeaders headers = new MockHeaders(); headers.Add(customHeader, string.Empty); headers.Add(knownHeader, string.Empty); var enumerator = headers.GetEnumerator(); Assert.True(enumerator.MoveNext()); Assert.Equal(customHeader, enumerator.Current.Key); Assert.Equal(1, enumerator.Current.Value.Count()); Assert.Equal(string.Empty, enumerator.Current.Value.ElementAt(0)); Assert.False(enumerator.MoveNext(), "Only the (empty) custom value should be returned."); }
public void GetEnumerator_GetEnumeratorFromUninitializedHeaderStore_ReturnsEmptyEnumerator() { MockHeaders headers = new MockHeaders(); var enumerator = headers.GetEnumerator(); Assert.False(enumerator.MoveNext()); }