github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/encoding/kmgBase64/v2_test.go (about) 1 package kmgBase64 2 3 import ( 4 "testing" 5 6 "github.com/bronze1man/kmg/kmgTest" 7 ) 8 9 func TestV2(ot *testing.T) { 10 for _, testCase := range []struct { 11 in string 12 out string 13 }{ 14 {"", ""}, 15 {"A", "QQ"}, 16 {"\x00", "AA"}, 17 {"\x00\x00", "AAA"}, 18 {"\x00\x00\x00", "AAAA"}, 19 {"\xff\xff\xff", "____"}, 20 {"\x14\xfb\x9c\x03\xd9\x7e", "FPucA9l-"}, 21 {"\x14\xfb\x9c\x03\xd9", "FPucA9k"}, 22 {"\x14\xfb\x9c\x03", "FPucAw"}, 23 // RFC 4648 examples 24 {"", ""}, 25 {"f", "Zg"}, 26 {"fo", "Zm8"}, 27 {"foo", "Zm9v"}, 28 {"foob", "Zm9vYg"}, 29 {"fooba", "Zm9vYmE"}, 30 {"foobar", "Zm9vYmFy"}, 31 32 // Wikipedia examples 33 {"sure.", "c3VyZS4"}, 34 {"sure", "c3VyZQ"}, 35 {"sur", "c3Vy"}, 36 {"su", "c3U"}, 37 {"leasure.", "bGVhc3VyZS4"}, 38 {"easure.", "ZWFzdXJlLg"}, 39 {"asure.", "YXN1cmUu"}, 40 {"sure.", "c3VyZS4"}, 41 {"Twas brillig, and the slithy toves", "VHdhcyBicmlsbGlnLCBhbmQgdGhlIHNsaXRoeSB0b3Zlcw"}, 42 } { 43 kmgTest.Equal(EncodeByteToStringV2([]byte(testCase.in)), testCase.out) 44 thisIn, err := DecodeStringToByteV2(testCase.out) 45 kmgTest.Equal(err, nil) 46 kmgTest.Equal(thisIn, []byte(testCase.in)) 47 } 48 } 49 50 // 性能还好,暂时不用管性能 52.21 MB/s 官方 107.21 MB/s 51 func BenchmarkEncodeToStringV2(b *testing.B) { 52 data := make([]byte, 8192) 53 b.SetBytes(int64(len(data))) 54 for i := 0; i < b.N; i++ { 55 EncodeByteToStringV2(data) 56 } 57 } 58 59 // 性能还好,暂时不用管性能 51.37 MB/s 官方 54.87 MB/s 60 func BenchmarkDecodeStringV2(b *testing.B) { 61 data := EncodeByteToStringV2(make([]byte, 8192)) 62 b.SetBytes(int64(len(data))) 63 for i := 0; i < b.N; i++ { 64 DecodeStringToByteV2(data) 65 } 66 }