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 }