private static void TestDecode(byte[] encoded, string expectedHeaderName, string expectedHeaderValue, bool expectDynamicTableEntry, bool byteAtATime) { var decoder = new QPackDecoder(MaxHeaderFieldSize); var handler = new TestHttpHeadersHandler(); // Read past header decoder.Decode(new byte[] { 0x00, 0x00 }, endHeaders: false, handler: handler); if (!byteAtATime) { decoder.Decode(encoded, endHeaders: true, handler: handler); } else { // Parse data in 1 byte chunks, separated by empty chunks for (int i = 0; i < encoded.Length; i++) { bool end = i + 1 == encoded.Length; decoder.Decode(Array.Empty <byte>(), endHeaders: false, handler: handler); decoder.Decode(new byte[] { encoded[i] }, endHeaders: end, handler: handler); } } Assert.Equal(expectedHeaderValue, handler.DecodedHeaders[expectedHeaderName]); }
public void DecodesIndexedHeaderField_StaticTableWithValue() { _decoder.Decode(new byte[] { 0, 0 }, endHeaders: false, handler: _handler); _decoder.Decode(_indexedFieldLineStatic, endHeaders: true, handler: _handler); Assert.Equal("GET", _handler.DecodedHeaders[":method"]); Assert.Equal(":method", _handler.DecodedStaticHeaders[H3StaticTable.MethodGet].Key); Assert.Equal("GET", _handler.DecodedStaticHeaders[H3StaticTable.MethodGet].Value); }
internal async Task <Dictionary <string, string> > ExpectHeadersAsync() { var http3WithPayload = await ReceiveFrameAsync(); _qpackDecoder.Decode(http3WithPayload.PayloadSequence, this); return(_decodedHeaders); }
internal async Task <IEnumerable <KeyValuePair <string, string> > > ExpectHeadersAsync() { var http3WithPayload = await ReceiveFrameAsync(); _qpackDecoder.Decode(http3WithPayload.PayloadSequence, this); return(_decodedHeaders); }