forked from quic-go/quic-go
50 lines
1.0 KiB
Go
50 lines
1.0 KiB
Go
package quic
|
|
|
|
import (
|
|
"github.com/lucas-clemente/quic-go/frames"
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("StreamFrame sorter", func() {
|
|
var (
|
|
s streamFrameSorter
|
|
)
|
|
|
|
BeforeEach(func() {
|
|
s = streamFrameSorter{}
|
|
})
|
|
|
|
It("head returns nil when empty", func() {
|
|
Expect(s.Head()).To(BeNil())
|
|
})
|
|
|
|
It("inserts and pops a single frame", func() {
|
|
f := &frames.StreamFrame{}
|
|
s.Push(f)
|
|
Expect(s.Head()).To(Equal(f))
|
|
Expect(s.Pop()).To(Equal(f))
|
|
Expect(s.Head()).To(BeNil())
|
|
})
|
|
|
|
It("inserts two frames in order", func() {
|
|
f1 := &frames.StreamFrame{Offset: 1}
|
|
f2 := &frames.StreamFrame{Offset: 2}
|
|
s.Push(f1)
|
|
s.Push(f2)
|
|
Expect(s.Pop()).To(Equal(f1))
|
|
Expect(s.Pop()).To(Equal(f2))
|
|
Expect(s.Head()).To(BeNil())
|
|
})
|
|
|
|
It("inserts two frames out of order", func() {
|
|
f1 := &frames.StreamFrame{Offset: 1}
|
|
f2 := &frames.StreamFrame{Offset: 2}
|
|
s.Push(f2)
|
|
s.Push(f1)
|
|
Expect(s.Pop()).To(Equal(f1))
|
|
Expect(s.Pop()).To(Equal(f2))
|
|
Expect(s.Head()).To(BeNil())
|
|
})
|
|
})
|