encoding/id_test.go
Emery Hemingway 9609819393 Inital commit
2013-05-21 21:00:06 -05:00

49 lines
985 B
Go

package ebml
import (
"bytes"
"io/ioutil"
"testing"
)
var goldenIDs = []struct {
in uint32
out []byte
}{
{0, []byte{0}},
{1, []byte{129}},
{127, []byte{64, 127}},
{128, []byte{64, 128}},
{256, []byte{65, 0}},
{16382, []byte{127, 254}},
{16383, []byte{32, 63, 255}},
{16384, []byte{32, 64, 0}},
{16385, []byte{32, 64, 1}},
{32768, []byte{32, 128, 0}},
{2097150, []byte{63, 255, 254}},
{2097151, []byte{16, 31, 255, 255}},
{2097152, []byte{16, 32, 0, 0}},
{268435453, []byte{31, 255, 255, 253}},
{268435454, []byte{31, 255, 255, 254}},
}
func TestGoldenIDs(t *testing.T) {
for _, g := range goldenIDs {
buf := new(bytes.Buffer)
enc := NewEncoder(buf)
enc.EncodeID(g.in)
enc.Flush()
got := buf.Bytes()
if !bytes.Equal(got, g.out) {
t.Errorf("failed to marshal ID %d, wanted %v, got %v", g.in, g.out, got)
}
}
}
func BenchmarkEncodeID(b *testing.B) {
enc := NewEncoder(ioutil.Discard)
for i := 0; i < b.N; i++ {
enc.EncodeID(uint32(i))
}
}