37 lines
759 B
Go
37 lines
759 B
Go
|
package bits_test
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/icza/bitio"
|
||
|
"github.com/mewkiz/flac/internal/bits"
|
||
|
)
|
||
|
|
||
|
func TestUnary(t *testing.T) {
|
||
|
buf := &bytes.Buffer{}
|
||
|
bw := bitio.NewWriter(buf)
|
||
|
|
||
|
for want := uint64(0); want < 1000; want++ {
|
||
|
// Write unary
|
||
|
if err := bits.WriteUnary(bw, want); err != nil {
|
||
|
t.Fatalf("unable to write unary; %v", err)
|
||
|
}
|
||
|
// Flush buffer
|
||
|
if err := bw.Close(); err != nil {
|
||
|
t.Fatalf("unable to close (flush) the bit buffer; %v", err)
|
||
|
}
|
||
|
|
||
|
// Read written unary
|
||
|
r := bits.NewReader(buf)
|
||
|
got, err := r.ReadUnary()
|
||
|
if err != nil {
|
||
|
t.Fatalf("unable to read unary; %v", err)
|
||
|
}
|
||
|
|
||
|
if want != got {
|
||
|
t.Fatalf("mismatch between written and read unary value; expected: %d, got: %d", want, got)
|
||
|
}
|
||
|
}
|
||
|
}
|