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  }