Files
stun-1/attributes_test.go
2017-02-26 13:03:30 +03:00

73 lines
1.3 KiB
Go

package stun
import (
"testing"
)
func BenchmarkMessage_GetNotFound(b *testing.B) {
m := New()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
m.Get(AttrRealm)
}
}
func TestMessage_GetNoAllocs(t *testing.T) {
m := New()
NewSoftware("c").AddTo(m)
m.WriteHeader()
t.Run("Default", func(t *testing.T) {
allocs := testing.AllocsPerRun(10, func() {
m.Get(AttrSoftware)
})
if allocs > 0 {
t.Error("allocated memory, but should not")
}
})
t.Run("Not found", func(t *testing.T) {
allocs := testing.AllocsPerRun(10, func() {
m.Get(AttrOrigin)
})
if allocs > 0 {
t.Error("allocated memory, but should not")
}
})
}
func TestPadding(t *testing.T) {
tt := []struct {
in, out int
}{
{4, 4}, // 0
{2, 4}, // 1
{5, 8}, // 2
{8, 8}, // 3
{11, 12}, // 4
{1, 4}, // 5
{3, 4}, // 6
{6, 8}, // 7
{7, 8}, // 8
{0, 0}, // 9
{40, 40}, // 10
}
for i, c := range tt {
if got := nearestPaddedValueLength(c.in); got != c.out {
t.Errorf("[%d]: padd(%d) %d (got) != %d (expected)",
i, c.in, got, c.out,
)
}
}
}
func TestAttrLengthError_Error(t *testing.T) {
err := AttrLengthError{
Got: 100,
Max: 50,
Type: AttrLifetime,
}
if err.Error() != "Length of LIFETIME attribute 100 exceeds maximum 50" {
t.Error("bad error string", err)
}
}