forked from quic-go/quic-go
Merge pull request #849 from lucas-clemente/version-stringer
implement a string representation of the version number
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package protocol
|
||||
|
||||
import "fmt"
|
||||
|
||||
// VersionNumber is a version number as int
|
||||
type VersionNumber int
|
||||
|
||||
@@ -27,6 +29,21 @@ func (vn VersionNumber) UsesTLS() bool {
|
||||
return vn == VersionTLS
|
||||
}
|
||||
|
||||
func (vn VersionNumber) String() string {
|
||||
switch vn {
|
||||
case VersionWhatever:
|
||||
return "whatever"
|
||||
case VersionUnsupported:
|
||||
return "unsupported"
|
||||
case VersionUnknown:
|
||||
return "unknown"
|
||||
case VersionTLS:
|
||||
return "TLS dev version (WIP)"
|
||||
default:
|
||||
return fmt.Sprintf("%d", vn)
|
||||
}
|
||||
}
|
||||
|
||||
// VersionNumberToTag maps version numbers ('32') to tags ('Q032')
|
||||
func VersionNumberToTag(vn VersionNumber) uint32 {
|
||||
v := uint32(vn)
|
||||
|
||||
@@ -13,6 +13,16 @@ var _ = Describe("Version", func() {
|
||||
Expect(VersionTLS.UsesTLS()).To(BeTrue())
|
||||
})
|
||||
|
||||
It("has the right string representation", func() {
|
||||
Expect(Version37.String()).To(Equal("37"))
|
||||
Expect(Version38.String()).To(Equal("38"))
|
||||
Expect(Version39.String()).To(Equal("39"))
|
||||
Expect(VersionTLS.String()).To(ContainSubstring("TLS"))
|
||||
Expect(VersionWhatever.String()).To(Equal("whatever"))
|
||||
Expect(VersionUnsupported.String()).To(Equal("unsupported"))
|
||||
Expect(VersionUnknown.String()).To(Equal("unknown"))
|
||||
})
|
||||
|
||||
It("converts tags to numbers", func() {
|
||||
Expect(VersionTagToNumber('Q' + '1'<<8 + '2'<<16 + '3'<<24)).To(Equal(VersionNumber(123)))
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user