mirror of
https://github.com/refraction-networking/uquic.git
synced 2025-04-04 12:47:36 +03:00
59 lines
2 KiB
Go
59 lines
2 KiB
Go
package protocol
|
|
|
|
import (
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Version", func() {
|
|
It("converts tags to numbers", func() {
|
|
Expect(VersionTagToNumber('Q' + '1'<<8 + '2'<<16 + '3'<<24)).To(Equal(VersionNumber(123)))
|
|
})
|
|
|
|
It("converts number to tag", func() {
|
|
Expect(VersionNumberToTag(VersionNumber(123))).To(Equal(uint32('Q' + '1'<<8 + '2'<<16 + '3'<<24)))
|
|
})
|
|
|
|
It("recognizes supported versions", func() {
|
|
Expect(IsSupportedVersion(SupportedVersions, 0)).To(BeFalse())
|
|
Expect(IsSupportedVersion(SupportedVersions, SupportedVersions[0])).To(BeTrue())
|
|
Expect(IsSupportedVersion(SupportedVersions, SupportedVersions[len(SupportedVersions)-1])).To(BeTrue())
|
|
})
|
|
|
|
It("has supported versions in sorted order", func() {
|
|
for i := 0; i < len(SupportedVersions)-1; i++ {
|
|
Expect(SupportedVersions[i]).To(BeNumerically(">", SupportedVersions[i+1]))
|
|
}
|
|
})
|
|
|
|
Context("highest supported version", func() {
|
|
It("finds the supported version", func() {
|
|
supportedVersions := []VersionNumber{1, 2, 3}
|
|
other := []VersionNumber{6, 5, 4, 3}
|
|
found, ver := HighestSupportedVersion(supportedVersions, other)
|
|
Expect(found).To(BeTrue())
|
|
Expect(ver).To(Equal(VersionNumber(3)))
|
|
})
|
|
|
|
It("picks the preferred version", func() {
|
|
supportedVersions := []VersionNumber{2, 1, 3}
|
|
other := []VersionNumber{3, 6, 1, 8, 2, 10}
|
|
found, ver := HighestSupportedVersion(supportedVersions, other)
|
|
Expect(found).To(BeTrue())
|
|
Expect(ver).To(Equal(VersionNumber(2)))
|
|
})
|
|
|
|
It("handles empty inputs", func() {
|
|
supportedVersions := []VersionNumber{102, 101}
|
|
found, _ := HighestSupportedVersion(supportedVersions, nil)
|
|
Expect(found).To(BeFalse())
|
|
found, _ = HighestSupportedVersion(supportedVersions, []VersionNumber{})
|
|
Expect(found).To(BeFalse())
|
|
supportedVersions = []VersionNumber{}
|
|
found, _ = HighestSupportedVersion(supportedVersions, []VersionNumber{1, 2})
|
|
Expect(found).To(BeFalse())
|
|
found, _ = HighestSupportedVersion(supportedVersions, []VersionNumber{})
|
|
Expect(found).To(BeFalse())
|
|
})
|
|
})
|
|
})
|