| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package xdr
- import (
- "bytes"
- "testing"
- "testing/quick"
- )
- func TestPad(t *testing.T) {
- tests := [][]int{
- {0, 0},
- {1, 3},
- {2, 2},
- {3, 1},
- {4, 0},
- {32, 0},
- {33, 3},
- }
- for _, tc := range tests {
- if p := pad(tc[0]); p != tc[1] {
- t.Errorf("Incorrect padding for %d bytes, %d != %d", tc[0], p, tc[1])
- }
- }
- }
- func TestBytesNil(t *testing.T) {
- fn := func(bs []byte) bool {
- var b = new(bytes.Buffer)
- var w = NewWriter(b)
- var r = NewReader(b)
- w.WriteBytes(bs)
- w.WriteBytes(bs)
- r.ReadBytes()
- res := r.ReadBytes()
- return bytes.Compare(bs, res) == 0
- }
- if err := quick.Check(fn, nil); err != nil {
- t.Error(err)
- }
- }
- func TestBytesGiven(t *testing.T) {
- fn := func(bs []byte) bool {
- var b = new(bytes.Buffer)
- var w = NewWriter(b)
- var r = NewReader(b)
- w.WriteBytes(bs)
- w.WriteBytes(bs)
- res := make([]byte, 12)
- res = r.ReadBytesInto(res)
- res = r.ReadBytesInto(res)
- return bytes.Compare(bs, res) == 0
- }
- if err := quick.Check(fn, nil); err != nil {
- t.Error(err)
- }
- }
- func TestReadBytesMaxInto(t *testing.T) {
- var max = 64
- for tot := 32; tot < 128; tot++ {
- for diff := -32; diff <= 32; diff++ {
- var b = new(bytes.Buffer)
- var r = NewReader(b)
- var w = NewWriter(b)
- var toWrite = make([]byte, tot)
- w.WriteBytes(toWrite)
- var buf = make([]byte, tot+diff)
- var bs = r.ReadBytesMaxInto(max, buf)
- if tot <= max {
- if read := len(bs); read != tot {
- t.Errorf("Incorrect read bytes, wrote=%d, buf=%d, max=%d, read=%d", tot, tot+diff, max, read)
- }
- } else if r.err != ErrElementSizeExceeded {
- t.Errorf("Unexpected non-ErrElementSizeExceeded error for wrote=%d, max=%d: %v", tot, max, r.err)
- }
- }
- }
- }
- func TestReadBytesMaxIntoNil(t *testing.T) {
- for tot := 42; tot < 72; tot++ {
- for max := 0; max < 128; max++ {
- var b = new(bytes.Buffer)
- var r = NewReader(b)
- var w = NewWriter(b)
- var toWrite = make([]byte, tot)
- w.WriteBytes(toWrite)
- var bs = r.ReadBytesMaxInto(max, nil)
- var read = len(bs)
- if max == 0 || tot <= max {
- if read != tot {
- t.Errorf("Incorrect read bytes, wrote=%d, max=%d, read=%d", tot, max, read)
- }
- } else if r.err != ErrElementSizeExceeded {
- t.Errorf("Unexpected non-ErrElementSizeExceeded error for wrote=%d, max=%d, read=%d: %v", tot, max, read, r.err)
- }
- }
- }
- }
|