@@ -38,9 +38,21 @@ func Test_HexPadding(t *testing.T) {
38
38
}
39
39
40
40
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 )
42
48
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
+ }
44
56
}
45
57
}
46
58
@@ -75,8 +87,146 @@ func Test_BytesPadding(t *testing.T) {
75
87
}
76
88
77
89
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
+ }
79
130
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 )
81
153
}
82
154
}
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