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 }