github.com/gopacket/gopacket@v1.1.0/writer_test.go (about)

     1  // Copyright 2012 Google, Inc. All rights reserved.
     2  //
     3  // Use of this source code is governed by a BSD-style license
     4  // that can be found in the LICENSE file in the root of the source
     5  // tree.
     6  
     7  package gopacket
     8  
     9  import (
    10  	"fmt"
    11  	"testing"
    12  )
    13  
    14  func TestExponentialSizeIncreasePrepend(t *testing.T) {
    15  	var b serializeBuffer
    16  	for i, test := range []struct {
    17  		prepend, size int
    18  	}{
    19  		{2, 2},
    20  		{2, 4},
    21  		{2, 8},
    22  		{2, 8},
    23  		{2, 16},
    24  		{2, 16},
    25  		{2, 16},
    26  		{2, 16},
    27  		{2, 32},
    28  	} {
    29  		b.PrependBytes(test.prepend)
    30  		if test.size != cap(b.data) {
    31  			t.Error(i, "size want", test.size, "got", cap(b.data))
    32  		}
    33  	}
    34  	b.Clear()
    35  	if b.start != 32 {
    36  		t.Error(b.start)
    37  	}
    38  }
    39  
    40  func TestExponentialSizeIncreaseAppend(t *testing.T) {
    41  	var b serializeBuffer
    42  	for i, test := range []struct {
    43  		appnd, size int
    44  	}{
    45  		{2, 2},
    46  		{2, 4},
    47  		{2, 8},
    48  		{2, 8},
    49  		{2, 16},
    50  		{2, 16},
    51  		{2, 16},
    52  		{2, 16},
    53  		{2, 32},
    54  	} {
    55  		b.AppendBytes(test.appnd)
    56  		if test.size != cap(b.data) {
    57  			t.Error(i, "size want", test.size, "got", cap(b.data))
    58  		}
    59  	}
    60  	b.Clear()
    61  	if b.start != 0 {
    62  		t.Error(b.start)
    63  	}
    64  }
    65  
    66  func ExampleSerializeBuffer() {
    67  	b := NewSerializeBuffer()
    68  	fmt.Println("1:", b.Bytes())
    69  	bytes, _ := b.PrependBytes(3)
    70  	copy(bytes, []byte{1, 2, 3})
    71  	fmt.Println("2:", b.Bytes())
    72  	bytes, _ = b.AppendBytes(2)
    73  	copy(bytes, []byte{4, 5})
    74  	fmt.Println("3:", b.Bytes())
    75  	bytes, _ = b.PrependBytes(1)
    76  	copy(bytes, []byte{0})
    77  	fmt.Println("4:", b.Bytes())
    78  	bytes, _ = b.AppendBytes(3)
    79  	copy(bytes, []byte{6, 7, 8})
    80  	fmt.Println("5:", b.Bytes())
    81  	b.Clear()
    82  	fmt.Println("6:", b.Bytes())
    83  	bytes, _ = b.PrependBytes(2)
    84  	copy(bytes, []byte{9, 9})
    85  	fmt.Println("7:", b.Bytes())
    86  	// Output:
    87  	// 1: []
    88  	// 2: [1 2 3]
    89  	// 3: [1 2 3 4 5]
    90  	// 4: [0 1 2 3 4 5]
    91  	// 5: [0 1 2 3 4 5 6 7 8]
    92  	// 6: []
    93  	// 7: [9 9]
    94  }