mirror of
https://github.com/mumble-voip/grumble.git
synced 2025-12-20 06:10:00 -08:00
144 lines
2.5 KiB
Go
144 lines
2.5 KiB
Go
package packetdatastream
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"math"
|
|
"testing"
|
|
)
|
|
|
|
func TestSelfUint8(t *testing.T) {
|
|
buf := make([]byte, 500)
|
|
pds := New(buf)
|
|
|
|
for i := uint8(0); i < 0xff; i++ {
|
|
pds.PutUint8(i)
|
|
if !pds.IsValid() {
|
|
t.Errorf("Invalid PDS")
|
|
return
|
|
}
|
|
}
|
|
|
|
pds2 := New(pds.Buf)
|
|
for i := uint8(0); i < 0xff; i++ {
|
|
val := pds2.GetUint8()
|
|
if val != i {
|
|
t.Errorf("Mismatch (read: %v, expected: %v)", val, i)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSelfUint64(t *testing.T) {
|
|
buf := make([]byte, 500)
|
|
pds := New(buf)
|
|
|
|
for i := uint64(1 << 54); i < (uint64(1<<54) + 10); i++ {
|
|
pds.PutUint64(i)
|
|
if !pds.IsValid() {
|
|
t.Errorf("Invalid PDS")
|
|
return
|
|
}
|
|
}
|
|
|
|
pds2 := New(buf)
|
|
for i := uint64(1 << 54); i < (uint64(1<<54) + 10); i++ {
|
|
val := pds2.GetUint64()
|
|
if !pds.IsValid() {
|
|
t.Errorf("Invalid PDS")
|
|
}
|
|
if val != i {
|
|
t.Errorf("Mismatch (read: %v, expected: %v)", val, i)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSelfMumbleVoicePacket(t *testing.T) {
|
|
buf := make([]byte, 500)
|
|
pds := New(buf)
|
|
data := make([]byte, 54)
|
|
|
|
rand.Read(data)
|
|
|
|
pds.PutUint32(1)
|
|
pds.PutBytes(data)
|
|
|
|
pds2 := New(buf)
|
|
if pds2.GetUint32() != 1 {
|
|
t.Errorf("Session mismatch")
|
|
}
|
|
|
|
outbuf := make([]byte, 54)
|
|
pds2.CopyBytes(outbuf)
|
|
|
|
if !pds.IsValid() {
|
|
t.Errorf("Invalid PDS")
|
|
return
|
|
}
|
|
|
|
for i := 0; i < 54; i++ {
|
|
if outbuf[i] != data[i] {
|
|
t.Errorf("Voice data mismatch (got %v, expected %v)", outbuf[i], data[i])
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSelfFloat64(t *testing.T) {
|
|
buf := make([]byte, 500)
|
|
pds := New(buf)
|
|
pds2 := New(buf)
|
|
|
|
pds.PutFloat64(math.Pi)
|
|
pi := pds2.GetFloat64()
|
|
|
|
if !pds.IsValid() || !pds2.IsValid() {
|
|
t.Errorf("Invalid PDS")
|
|
return
|
|
}
|
|
|
|
if pi != float64(math.Pi) {
|
|
t.Errorf("Unexpected result. Got %v, expected %v", pi, float64(math.Pi))
|
|
return
|
|
}
|
|
}
|
|
|
|
func TestSelfFloat32(t *testing.T) {
|
|
buf := make([]byte, 500)
|
|
pds := New(buf)
|
|
pds2 := New(buf)
|
|
|
|
pds.PutFloat32(math.E)
|
|
e := pds2.GetFloat32()
|
|
|
|
if !pds.IsValid() || !pds2.IsValid() {
|
|
t.Errorf("Invalid PDS")
|
|
}
|
|
|
|
if e != float32(math.E) {
|
|
t.Errorf("Unexpected result. Got %v, expected %v", e, float32(math.E))
|
|
}
|
|
}
|
|
|
|
func TestSelfBytes(t *testing.T) {
|
|
msg := [15]byte{0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf}
|
|
buf := make([]byte, 500)
|
|
pds := New(buf)
|
|
pds2 := New(buf)
|
|
|
|
pds.PutBytes(msg[0:])
|
|
out := make([]byte, 15)
|
|
pds2.CopyBytes(out)
|
|
|
|
if !pds.IsValid() || !pds.IsValid() {
|
|
t.Errorf("Invalid PDS")
|
|
return
|
|
}
|
|
|
|
for i := 0; i < 15; i++ {
|
|
if msg[i] != out[i] {
|
|
t.Errorf("Mismatch at index %v. Got %v, expected %v", i, out[i], msg[i])
|
|
return
|
|
}
|
|
}
|
|
}
|