msgpack-go

Message Pack Encoder/Decoder for Golang
git clone git://git.lair.cx/msgpack-go
Log | Files | Refs | LICENSE

decode_unsafe_test.go (1258B)


      1 package msgpack
      2 
      3 import (
      4 	"bytes"
      5 	"testing"
      6 )
      7 
      8 func TestUnsafeDecoder_ExpandBuffer(t *testing.T) {
      9 	tests := []struct {
     10 		name    string
     11 		decoder *Decoder
     12 		n       int
     13 		want    []byte
     14 		wantErr bool
     15 	}{
     16 		{
     17 			"initial state",
     18 			NewDecoder(
     19 				bytes.NewReader([]byte("Hello, World!")),
     20 				make([]byte, 5),
     21 			),
     22 			5,
     23 			[]byte("Hello"),
     24 			false,
     25 		},
     26 		{
     27 			"double the buffer",
     28 			&Decoder{
     29 				r:      bytes.NewReader([]byte(", World!")),
     30 				buf:    []byte("Hello"),
     31 				length: 5,
     32 				cursor: 0,
     33 			},
     34 			5,
     35 			[]byte("Hello, Wor"),
     36 			false,
     37 		},
     38 		{
     39 			"overflow",
     40 			NewDecoder(
     41 				bytes.NewReader([]byte("Hello, World!")),
     42 				make([]byte, 5),
     43 			),
     44 			42,
     45 			[]byte("Hello, World!"),
     46 			false,
     47 		},
     48 		{
     49 			"no reader",
     50 			NewDecoder(
     51 				nil,
     52 				[]byte("Hello, World!"),
     53 			),
     54 			5,
     55 			[]byte("Hello, World!"),
     56 			false,
     57 		},
     58 	}
     59 	for _, tt := range tests {
     60 		t.Run(tt.name, func(t *testing.T) {
     61 			d := &UnsafeDecoder{
     62 				Decoder: tt.decoder,
     63 			}
     64 			err := d.ExpandBuffer(tt.n)
     65 			if (err != nil) != tt.wantErr {
     66 				t.Errorf("ExpandBuffer() error = %v, wantErr %v", err, tt.wantErr)
     67 				return
     68 			}
     69 			if !bytes.Equal(d.buf, tt.want) {
     70 				t.Errorf("ExpandBuffer() d.buf = %q, want %q", string(d.buf), string(tt.want))
     71 			}
     72 		})
     73 	}
     74 }