40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
package quic
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
)
|
|
|
|
func TestExtractCryptoFrames_Interleaved(t *testing.T) {
|
|
// PADDING, CRYPTO(offset=0,"abc"), PING, STREAM(len=2), CRYPTO(offset=3,"de")
|
|
payload := []byte{
|
|
0x00,
|
|
0x06, 0x00, 0x03, 'a', 'b', 'c',
|
|
0x01,
|
|
0x0a, 0x01, 0x02, 'z', 'z',
|
|
0x06, 0x03, 0x02, 'd', 'e',
|
|
}
|
|
|
|
frames, err := extractCryptoFrames(bytes.NewReader(payload))
|
|
if err != nil {
|
|
t.Fatalf("extractCryptoFrames() error = %v", err)
|
|
}
|
|
if len(frames) != 2 {
|
|
t.Fatalf("extractCryptoFrames() len = %d, want 2", len(frames))
|
|
}
|
|
if frames[0].Offset != 0 || string(frames[0].Data) != "abc" {
|
|
t.Fatalf("frame0 = %+v, want offset=0 data=abc", frames[0])
|
|
}
|
|
if frames[1].Offset != 3 || string(frames[1].Data) != "de" {
|
|
t.Fatalf("frame1 = %+v, want offset=3 data=de", frames[1])
|
|
}
|
|
}
|
|
|
|
func TestExtractCryptoFrames_UnsupportedFrame(t *testing.T) {
|
|
// 0x20 is currently unsupported in this parser.
|
|
_, err := extractCryptoFrames(bytes.NewReader([]byte{0x20}))
|
|
if err == nil {
|
|
t.Fatal("extractCryptoFrames() error = nil, want non-nil")
|
|
}
|
|
}
|