github.com/Nixolay/training@v0.0.0-20220925080335-7dfc7a5893e8/golang/practice_unsafe/conversions/bytes_test.go (about)

     1  package conversions_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	. "github.com/Nixolay/training/golang/practice_unsafe/conversions"
     7  	. "github.com/smartystreets/goconvey/convey"
     8  )
     9  
    10  const (
    11  	word = "test data is my big text"
    12  	size = 100000
    13  )
    14  
    15  func TestStringConversion(t *testing.T) {
    16  	Convey("Test string conversion", t, func() {
    17  		Convey("Test bytes conversion to string", func() {
    18  			data := []byte(word)
    19  			expected := UnsafeBytesToString(data)
    20  			So(expected, ShouldEqual, word)
    21  		})
    22  
    23  		Convey("Test bytes conversion to string by Header", func() {
    24  			data := []byte(word)
    25  			expected := UnsafeBytesToStringByHeader(data)
    26  			So(expected, ShouldEqual, word)
    27  		})
    28  
    29  		Convey("Test string conversion to byte slice by Header", func() {
    30  			actual := []byte(word)
    31  			expected := UnsafeStringToByteSliceByHeader(word)
    32  			So(expected, ShouldResemble, actual)
    33  		})
    34  
    35  		Convey("Test slice uint64 conversion to byte slice by Header", func() {
    36  			data := []uint64{1, 2, 3, 4, 5, 6, 7, 8, 9}
    37  			actual := SliceUint64ToBytes(data)
    38  
    39  			expected := UnsafeUint64sToBytes(data)
    40  			So(expected, ShouldResemble, actual)
    41  		})
    42  	})
    43  }
    44  
    45  func BenchmarkUnsafeBytesToString(b *testing.B) {
    46  	data := []byte(word)
    47  	v := make(chan string, size)
    48  
    49  	for i := 0; i < size; i++ {
    50  		v <- UnsafeBytesToString(data)
    51  	}
    52  
    53  	close(v)
    54  }
    55  
    56  func BenchmarkUnsafeBytesToStringByHeader(b *testing.B) {
    57  	data := []byte(word)
    58  	v := make(chan string, size)
    59  	defer close(v)
    60  
    61  	for i := 0; i < size; i++ {
    62  		v <- UnsafeBytesToStringByHeader(data)
    63  	}
    64  }
    65  
    66  func BenchmarkBytesToString(b *testing.B) {
    67  	data := []byte(word)
    68  	v := make(chan string, size)
    69  	defer close(v)
    70  
    71  	for i := 0; i < size; i++ {
    72  		v <- string(data)
    73  	}
    74  }
    75  
    76  func BenchmarkUnsafeStringToByteSliceByHeader(b *testing.B) {
    77  	v := make(chan []byte, size)
    78  	defer close(v)
    79  
    80  	for i := 0; i < size; i++ {
    81  		v <- UnsafeStringToByteSliceByHeader(word)
    82  	}
    83  }
    84  
    85  func BenchmarkStringToByteSlice(b *testing.B) {
    86  	v := make(chan []byte, size)
    87  	defer close(v)
    88  
    89  	for i := 0; i < size; i++ {
    90  		v <- []byte(word)
    91  	}
    92  }
    93  
    94  func BenchmarkUnsafeUint64sToBytes(b *testing.B) {
    95  	data := []uint64{1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    96  	UnsafeUint64sToBytes(data)
    97  }
    98  
    99  func BenchmarkSliceUint64ToBytes(b *testing.B) {
   100  	data := []uint64{1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}
   101  	UnsafeUint64sToBytes(data)
   102  }