@@ -38,9 +38,21 @@ func Test_HexPadding(t *testing.T) {
3838 }
3939
4040 for _ , c := range cases {
41- res := HexPadding (c .src , c .size )
41+ {
42+ res := HexPadding (c .src , c .size )
43+
44+ assertEqual (res , c .check , "Test_HexPadding" )
45+ }
46+ {
47+ res := New ().HexPadding (c .src , c .size )
4248
43- assertEqual (res , c .check , "Test_HexPadding" )
49+ assertEqual (res , c .check , "Test_HexPadding" )
50+ }
51+ {
52+ res := StdEncoding .HexPadding (c .src , c .size )
53+
54+ assertEqual (res , c .check , "Test_HexPadding" )
55+ }
4456 }
4557}
4658
@@ -75,8 +87,146 @@ func Test_BytesPadding(t *testing.T) {
7587 }
7688
7789 for i , c := range cases {
78- res := BytesPadding (c .src , c .size )
90+ {
91+ res := BytesPadding (c .src , c .size )
92+
93+ assertEqual (res , c .check , fmt .Sprintf ("#%d: Test_BytesPadding" , i ))
94+ }
95+ {
96+ res := New ().BytesPadding (c .src , c .size )
97+
98+ assertEqual (res , c .check , fmt .Sprintf ("#%d: Test_BytesPadding" , i ))
99+ }
100+ {
101+ res := StdEncoding .BytesPadding (c .src , c .size )
102+
103+ assertEqual (res , c .check , fmt .Sprintf ("#%d: Test_BytesPadding" , i ))
104+ }
105+ }
106+ }
107+
108+ func Test_Base32Encode (t * testing.T ) {
109+ for _ , p := range base32Pairs {
110+ got := Base32Encode ([]byte (p .decoded ))
111+ test .Equalf (t , p .encoded , got , "Base32Encode(%q) = %q, want %q" , p .decoded , got , p .encoded )
112+ }
113+ }
114+
115+ func Test_Base32Decode (t * testing.T ) {
116+ for _ , p := range base32Pairs {
117+ got , err := Base32Decode (p .encoded )
118+
119+ test .NoErrorf (t , err , "Base32Decode(%q) = error %v, want %v" , p .encoded , err , error (nil ))
120+ test .Equalf (t , p .decoded , string (got ), "Base32Decode(%q) = %q, want %q" , p .encoded , string (got ), p .decoded )
121+ }
122+ }
123+
124+ func Test_Base64Encode (t * testing.T ) {
125+ for _ , p := range base64Pairs {
126+ got := Base64Encode ([]byte (p .decoded ))
127+ test .Equalf (t , p .encoded , got , "Base64Encode(%q) = %q, want %q" , p .decoded , got , p .encoded )
128+ }
129+ }
79130
80- assertEqual (res , c .check , fmt .Sprintf ("#%d: Test_BytesPadding" , i ))
131+ func Test_Base64Decode (t * testing.T ) {
132+ for _ , p := range base64Pairs {
133+ got , err := Base64Decode (p .encoded )
134+
135+ test .NoErrorf (t , err , "Base64Decode(%q) = error %v, want %v" , p .encoded , err , error (nil ))
136+ test .Equalf (t , p .decoded , string (got ), "Base64Decode(%q) = %q, want %q" , p .encoded , string (got ), p .decoded )
137+ }
138+ }
139+
140+ func Test_HexEncode (t * testing.T ) {
141+ for _ , p := range hexEncDecTests {
142+ got := HexEncode (p .dec )
143+ test .Equalf (t , p .enc , got , "HexEncode(%q) = %q, want %q" , p .dec , got , p .enc )
144+ }
145+ }
146+
147+ func Test_HexDecode (t * testing.T ) {
148+ for _ , p := range hexEncDecTests {
149+ got , err := HexDecode (p .enc )
150+
151+ test .NoErrorf (t , err , "HexDecode(%q) = error %v, want %v" , p .enc , err , error (nil ))
152+ test .Equalf (t , p .dec , got , "HexDecode(%q) = %q, want %q" , p .enc , got , p .dec )
81153 }
82154}
155+
156+ type testpair struct {
157+ decoded , encoded string
158+ }
159+
160+ var base32Pairs = []testpair {
161+ // RFC 4648 examples
162+ {"" , "" },
163+ {"f" , "MY======" },
164+ {"fo" , "MZXQ====" },
165+ {"foo" , "MZXW6===" },
166+ {"foob" , "MZXW6YQ=" },
167+ {"fooba" , "MZXW6YTB" },
168+ {"foobar" , "MZXW6YTBOI======" },
169+
170+ // Wikipedia examples, converted to base32
171+ {"sure." , "ON2XEZJO" },
172+ {"sure" , "ON2XEZI=" },
173+ {"sur" , "ON2XE===" },
174+ {"su" , "ON2Q====" },
175+ {"leasure." , "NRSWC43VOJSS4===" },
176+ {"easure." , "MVQXG5LSMUXA====" },
177+ {"asure." , "MFZXK4TFFY======" },
178+ {"sure." , "ON2XEZJO" },
179+
180+ // bigtest
181+ {
182+ "Twas brillig, and the slithy toves" ,
183+ "KR3WC4ZAMJZGS3DMNFTSYIDBNZSCA5DIMUQHG3DJORUHSIDUN53GK4Y=" ,
184+ },
185+ }
186+
187+ var base64Pairs = []testpair {
188+ // RFC 3548 examples
189+ {"\x14 \xfb \x9c \x03 \xd9 \x7e " , "FPucA9l+" },
190+ {"\x14 \xfb \x9c \x03 \xd9 " , "FPucA9k=" },
191+ {"\x14 \xfb \x9c \x03 " , "FPucAw==" },
192+
193+ // RFC 4648 examples
194+ {"" , "" },
195+ {"f" , "Zg==" },
196+ {"fo" , "Zm8=" },
197+ {"foo" , "Zm9v" },
198+ {"foob" , "Zm9vYg==" },
199+ {"fooba" , "Zm9vYmE=" },
200+ {"foobar" , "Zm9vYmFy" },
201+
202+ // Wikipedia examples
203+ {"sure." , "c3VyZS4=" },
204+ {"sure" , "c3VyZQ==" },
205+ {"sur" , "c3Vy" },
206+ {"su" , "c3U=" },
207+ {"leasure." , "bGVhc3VyZS4=" },
208+ {"easure." , "ZWFzdXJlLg==" },
209+ {"asure." , "YXN1cmUu" },
210+ {"sure." , "c3VyZS4=" },
211+
212+ // bigtest
213+ {
214+ "Twas brillig, and the slithy toves" ,
215+ "VHdhcyBicmlsbGlnLCBhbmQgdGhlIHNsaXRoeSB0b3Zlcw==" ,
216+ },
217+ }
218+
219+ type encDecTest struct {
220+ enc string
221+ dec []byte
222+ }
223+
224+ var hexEncDecTests = []encDecTest {
225+ {"" , []byte {}},
226+ {"0001020304050607" , []byte {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 }},
227+ {"08090a0b0c0d0e0f" , []byte {8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 }},
228+ {"f0f1f2f3f4f5f6f7" , []byte {0xf0 , 0xf1 , 0xf2 , 0xf3 , 0xf4 , 0xf5 , 0xf6 , 0xf7 }},
229+ {"f8f9fafbfcfdfeff" , []byte {0xf8 , 0xf9 , 0xfa , 0xfb , 0xfc , 0xfd , 0xfe , 0xff }},
230+ {"67" , []byte {'g' }},
231+ {"e3a1" , []byte {0xe3 , 0xa1 }},
232+ }
0 commit comments