github.com/cristalhq/base64@v0.1.2/encoder_test.go (about)

     1  package base64
     2  
     3  import (
     4  	"encoding/base64"
     5  	"testing"
     6  )
     7  
     8  func TestEncoder(t *testing.T) {
     9  	stdResult := base64.StdEncoding.EncodeToString(nil)
    10  	ownResult := StdEncoding.EncodeToString(nil)
    11  	if stdResult != ownResult {
    12  		t.Log("expected:", stdResult)
    13  		t.Log("actual:  ", ownResult)
    14  		t.Fatal()
    15  	}
    16  
    17  	stdResult = base64.StdEncoding.EncodeToString([]byte{})
    18  	ownResult = StdEncoding.EncodeToString([]byte{})
    19  	if stdResult != ownResult {
    20  		t.Log("expected:", stdResult)
    21  		t.Log("actual:  ", ownResult)
    22  		t.Fatal()
    23  	}
    24  
    25  	for i := 1; i < 200; i++ {
    26  		for j := 0; j < 10000; j++ {
    27  			bytes := generateRandomBytes(i)
    28  
    29  			stdResult = base64.StdEncoding.EncodeToString(bytes)
    30  			ownResult = StdEncoding.EncodeToString(bytes)
    31  			if stdResult != ownResult {
    32  				t.Log("expected:", stdResult)
    33  				t.Log("actual:  ", ownResult)
    34  				t.Fatal()
    35  			}
    36  
    37  			stdResult = base64.RawStdEncoding.EncodeToString(bytes)
    38  			ownResult = RawStdEncoding.EncodeToString(bytes)
    39  			if stdResult != ownResult {
    40  				t.Log("expected:", stdResult)
    41  				t.Log("actual:  ", ownResult)
    42  				t.Fatal()
    43  			}
    44  
    45  			stdResult = base64.URLEncoding.EncodeToString(bytes)
    46  			ownResult = URLEncoding.EncodeToString(bytes)
    47  			if stdResult != ownResult {
    48  				t.Log("expected:", stdResult)
    49  				t.Log("actual:  ", ownResult)
    50  				t.Fatal()
    51  			}
    52  
    53  			stdResult = base64.RawURLEncoding.EncodeToString(bytes)
    54  			ownResult = RawURLEncoding.EncodeToString(bytes)
    55  			if stdResult != ownResult {
    56  				t.Log("expected:", stdResult)
    57  				t.Log("actual:  ", ownResult)
    58  				t.Fatal()
    59  			}
    60  		}
    61  	}
    62  }
    63  
    64  func BenchmarkEncoder(b *testing.B) {
    65  	b.ReportAllocs()
    66  
    67  	length := base64.StdEncoding.EncodedLen(len(valueBytes))
    68  	byteResult = make([]byte, length)
    69  	b.Run("std/Encode", func(b *testing.B) {
    70  		for n := 0; n < b.N; n++ {
    71  			base64.StdEncoding.Encode(byteResult, valueBytes)
    72  		}
    73  	})
    74  	b.Run("std/EncodeToString", func(b *testing.B) {
    75  		for n := 0; n < b.N; n++ {
    76  			stringResult = base64.StdEncoding.EncodeToString(valueBytes)
    77  		}
    78  	})
    79  
    80  	length = StdEncoding.EncodedLen(len(valueBytes))
    81  	byteResult = make([]byte, length)
    82  	b.Run("own/Encode", func(b *testing.B) {
    83  		for n := 0; n < b.N; n++ {
    84  			StdEncoding.Encode(byteResult, valueBytes)
    85  		}
    86  	})
    87  	b.Run("own/EncodeToString", func(b *testing.B) {
    88  		for n := 0; n < b.N; n++ {
    89  			stringResult = StdEncoding.EncodeToString(valueBytes)
    90  		}
    91  	})
    92  }