github.com/decred/dcrlnd@v0.7.6/buffer/buffer_test.go (about)

     1  package buffer_test
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	"github.com/decred/dcrlnd/buffer"
     8  )
     9  
    10  // TestRecycleSlice asserts that RecycleSlice always zeros a byte slice.
    11  func TestRecycleSlice(t *testing.T) {
    12  	tests := []struct {
    13  		name  string
    14  		slice []byte
    15  	}{
    16  		{
    17  			name: "length zero",
    18  		},
    19  		{
    20  			name:  "length one",
    21  			slice: []byte("a"),
    22  		},
    23  		{
    24  			name:  "length power of two length",
    25  			slice: bytes.Repeat([]byte("b"), 16),
    26  		},
    27  		{
    28  			name:  "length non power of two",
    29  			slice: bytes.Repeat([]byte("c"), 27),
    30  		},
    31  	}
    32  
    33  	for _, test := range tests {
    34  		t.Run(test.name, func(t *testing.T) {
    35  			buffer.RecycleSlice(test.slice)
    36  
    37  			expSlice := make([]byte, len(test.slice))
    38  			if !bytes.Equal(expSlice, test.slice) {
    39  				t.Fatalf("slice not recycled, want: %v, got: %v",
    40  					expSlice, test.slice)
    41  			}
    42  		})
    43  	}
    44  }