github.com/danil/iso8583@v0.21.0/codec8583/ebcdic_x_text_encoding_code_page_037_test.go (about) 1 package codec8583_test 2 3 import ( 4 "fmt" 5 "log" 6 "runtime" 7 "testing" 8 9 "golang.org/x/text/encoding" 10 "golang.org/x/text/encoding/charmap" 11 ) 12 13 func getLine() int { 14 _, _, line, _ := runtime.Caller(1) 15 return line 16 } 17 18 var testCases = []struct { 19 fromEBCDIC string 20 toEBCDIC string 21 fromASCII string 22 toASCII string 23 line int 24 benchmark bool 25 }{ 26 {"\x00", "\x00", "\x00", "\x00", getLine(), false}, 27 {"\x01", "\x01", "\x01", "\x01", getLine(), false}, 28 {"\x02", "\x02", "\x02", "\x02", getLine(), false}, 29 {"\x03", "\x03", "\x03", "\x03", getLine(), false}, 30 {"\x04", "\x04", "\x1a", "\x1a", getLine(), false}, 31 {"\x05", "\x05", "\t", "\t", getLine(), false}, 32 {"\x06", "\x06", "\x1a", "\x1a", getLine(), false}, 33 {"\x07", "\x07", "\x7f", "\x7f", getLine(), false}, 34 {"\x08", "\x08", "\x1a", "\x1a", getLine(), false}, 35 {"\x09", "\x09", "\x1a", "\x1a", getLine(), false}, 36 {"\x0a", "\x0a", "\x1a", "\x1a", getLine(), false}, 37 {"\x0b", "\x0b", "\v", "\v", getLine(), false}, 38 {"\x0c", "\x0c", "\f", "\f", getLine(), false}, 39 {"\x0d", "\x0d", "\r", "\r", getLine(), false}, 40 {"\x0e", "\x0e", "\x0e", "\x0e", getLine(), false}, 41 {"\x0f", "\x0f", "\x0f", "\x0f", getLine(), false}, 42 {"\x10", "\x10", "\x10", "\x10", getLine(), false}, 43 {"\x11", "\x11", "\x11", "\x11", getLine(), false}, 44 {"\x12", "\x12", "\x12", "\x12", getLine(), false}, 45 {"\x13", "\x13", "\x13", "\x13", getLine(), false}, 46 {"\x14", "\x14", "\x1a", "\x1a", getLine(), false}, 47 {"\x15", "\x15", "\x85", "\x85", getLine(), false}, 48 {"\x16", "\x16", "\b", "\b", getLine(), false}, 49 {"\x17", "\x17", "\x1a", "\x1a", getLine(), false}, 50 {"\x18", "\x18", "\x18", "\x18", getLine(), false}, 51 {"\x19", "\x19", "\x19", "\x19", getLine(), false}, 52 {"\x1a", "\x1a", "\x1a", "\x1a", getLine(), false}, 53 {"\x1b", "\x1b", "\x1a", "\x1a", getLine(), false}, 54 {"\x1c", "\x1c", "\x1c", "\x1c", getLine(), false}, 55 {"\x1d", "\x1d", "\x1d", "\x1d", getLine(), false}, 56 {"\x1e", "\x1e", "\x1e", "\x1e", getLine(), false}, 57 {"\x1f", "\x1f", "\x1f", "\x1f", getLine(), false}, 58 {"\x20", "\x20", "\x1a", "\x1a", getLine(), false}, 59 {"\x21", "\x21", "\x1a", "\x1a", getLine(), false}, 60 {"\x22", "\x22", "\x1a", "\x1a", getLine(), false}, 61 {"\x23", "\x23", "\x1a", "\x1a", getLine(), false}, 62 {"\x24", "\x24", "\x1a", "\x1a", getLine(), false}, 63 {"\x25", "\x25", "\n", "\n", getLine(), false}, 64 {"\x26", "\x26", "\x17", "\x17", getLine(), false}, 65 {"\x27", "\x27", "\x1b", "\x1b", getLine(), false}, 66 {"\x28", "\x28", "\x1a", "\x1a", getLine(), false}, 67 {"\x29", "\x29", "\x1a", "\x1a", getLine(), false}, 68 {"\x2a", "\x2a", "\x1a", "\x1a", getLine(), false}, 69 {"\x2b", "\x2b", "\x1a", "\x1a", getLine(), false}, 70 {"\x2c", "\x2c", "\x1a", "\x1a", getLine(), false}, 71 {"\x2d", "\x2d", "\x05", "\x05", getLine(), false}, 72 {"\x2e", "\x2e", "\x06", "\x06", getLine(), false}, 73 {"\x2f", "\x2f", "\a", "\a", getLine(), false}, 74 {"\x30", "\x30", "\x1a", "\x1a", getLine(), false}, 75 {"\x31", "\x31", "\x1a", "\x1a", getLine(), false}, 76 {"\x32", "\x32", "\x16", "\x16", getLine(), false}, 77 {"\x33", "\x33", "\x1a", "\x1a", getLine(), false}, 78 {"\x34", "\x34", "\x1a", "\x1a", getLine(), false}, 79 {"\x35", "\x35", "\x1a", "\x1a", getLine(), false}, 80 {"\x36", "\x36", "\x1a", "\x1a", getLine(), false}, 81 {"\x37", "\x37", "\x04", "\x04", getLine(), false}, 82 {"\x38", "\x38", "\x1a", "\x1a", getLine(), false}, 83 {"\x39", "\x39", "\x1a", "\x1a", getLine(), false}, 84 {"\x3a", "\x3a", "\x1a", "\x1a", getLine(), false}, 85 {"\x3b", "\x3b", "\x1a", "\x1a", getLine(), false}, 86 {"\x3c", "\x3c", "\x14", "\x14", getLine(), false}, 87 {"\x3d", "\x3d", "\x15", "\x15", getLine(), false}, 88 {"\x3e", "\x3e", "\x1a", "\x1a", getLine(), false}, 89 {"\x3f", "\x3f", "\x1a", "\x1a", getLine(), false}, 90 {"\x40", "\x40", " ", " ", getLine(), false}, 91 {"\x41", "\x41", "\x1a", "\x1a", getLine(), false}, 92 {"\x42", "\x42", "\x1a", "\x1a", getLine(), false}, 93 {"\x43", "\x43", "\x1a", "\x1a", getLine(), false}, 94 {"\x44", "\x44", "\x1a", "\x1a", getLine(), false}, 95 {"\x45", "\x45", "\x1a", "\x1a", getLine(), false}, 96 {"\x46", "\x46", "\x1a", "\x1a", getLine(), false}, 97 {"\x47", "\x47", "\x1a", "\x1a", getLine(), false}, 98 {"\x48", "\x48", "\x1a", "\x1a", getLine(), false}, 99 {"\x49", "\x49", "\x1a", "\x1a", getLine(), false}, 100 {"\x4a", "\x4a", "\xa2", "\xa2", getLine(), false}, // ¢ 101 {"\x4b", "\x4b", ".", ".", getLine(), false}, 102 {"\x4c", "\x4c", "<", "<", getLine(), false}, 103 {"\x4d", "\x4d", "(", "(", getLine(), false}, 104 {"\x4e", "\x4e", "+", "+", getLine(), false}, 105 {"\x4f", "\x4f", "|", "|", getLine(), false}, 106 {"\x50", "\x50", "&", "&", getLine(), false}, 107 {"\x51", "\x51", "\x1a", "\x1a", getLine(), false}, 108 {"\x52", "\x52", "\x1a", "\x1a", getLine(), false}, 109 {"\x53", "\x53", "\x1a", "\x1a", getLine(), false}, 110 {"\x54", "\x54", "\x1a", "\x1a", getLine(), false}, 111 {"\x55", "\x55", "\x1a", "\x1a", getLine(), false}, 112 {"\x56", "\x56", "\x1a", "\x1a", getLine(), false}, 113 {"\x57", "\x57", "\x1a", "\x1a", getLine(), false}, 114 {"\x58", "\x58", "\x1a", "\x1a", getLine(), false}, 115 {"\x59", "\x59", "\x1a", "\x1a", getLine(), false}, 116 {"\x5a", "\x5a", "!", "!", getLine(), false}, 117 {"\x5b", "\x5b", "$", "$", getLine(), false}, 118 {"\x5c", "\x5c", "*", "*", getLine(), false}, 119 {"\x5d", "\x5d", ")", ")", getLine(), false}, 120 {"\x5e", "\x5e", ";", ";", getLine(), false}, 121 {"\x5f", "\x5f", "¬", "¬", getLine(), false}, 122 {"\x60", "\x60", "-", "-", getLine(), false}, 123 {"\x61", "\x61", "/", "/", getLine(), false}, 124 {"\x62", "\x62", "\x1a", "\x1a", getLine(), false}, 125 {"\x63", "\x63", "\x1a", "\x1a", getLine(), false}, 126 {"\x64", "\x64", "\x1a", "\x1a", getLine(), false}, 127 {"\x65", "\x65", "\x1a", "\x1a", getLine(), false}, 128 {"\x66", "\x66", "\x1a", "\x1a", getLine(), false}, 129 {"\x67", "\x67", "\x1a", "\x1a", getLine(), false}, 130 {"\x68", "\x68", "\x1a", "\x1a", getLine(), false}, 131 {"\x69", "\x69", "\x1a", "\x1a", getLine(), false}, 132 {"\x6a", "\x6a", "¦", "¦", getLine(), false}, 133 {"\x6b", "\x6b", ",", ",", getLine(), false}, 134 {"\x6c", "\x6c", "%", "%", getLine(), false}, 135 {"\x6d", "\x6d", "_", "_", getLine(), false}, 136 {"\x6e", "\x6e", ">", ">", getLine(), false}, 137 {"\x6f", "\x6f", "?", "?", getLine(), false}, 138 {"\x70", "\x70", "\x1a", "\x1a", getLine(), false}, 139 {"\x71", "\x71", "\x1a", "\x1a", getLine(), false}, 140 {"\x72", "\x72", "\x1a", "\x1a", getLine(), false}, 141 {"\x73", "\x73", "\x1a", "\x1a", getLine(), false}, 142 {"\x74", "\x74", "\x1a", "\x1a", getLine(), false}, 143 {"\x75", "\x75", "\x1a", "\x1a", getLine(), false}, 144 {"\x76", "\x76", "\x1a", "\x1a", getLine(), false}, 145 {"\x77", "\x77", "\x1a", "\x1a", getLine(), false}, 146 {"\x78", "\x78", "\x1a", "\x1a", getLine(), false}, 147 {"\x79", "\x79", "`", "`", getLine(), false}, 148 {"\x7a", "\x7a", ":", ":", getLine(), false}, 149 {"\x7b", "\x7b", "#", "#", getLine(), false}, 150 {"\x7c", "\x7c", "@", "@", getLine(), false}, 151 {"\x7d", "\x7d", "'", "'", getLine(), false}, 152 {"\x7e", "\x7e", "=", "=", getLine(), false}, 153 {"\x7f", "\x7f", `"`, `"`, getLine(), false}, 154 {"\x80", "\x80", "\x1a", "\x1a", getLine(), false}, 155 {"\x81", "\x81", "a", "a", getLine(), false}, 156 {"\x82", "\x82", "b", "b", getLine(), false}, 157 {"\x83", "\x83", "c", "c", getLine(), false}, 158 {"\x84", "\x84", "d", "d", getLine(), false}, 159 {"\x85", "\x85", "e", "e", getLine(), false}, 160 {"\x86", "\x86", "f", "f", getLine(), false}, 161 {"\x87", "\x87", "g", "g", getLine(), false}, 162 {"\x88", "\x88", "h", "h", getLine(), false}, 163 {"\x89", "\x89", "i", "i", getLine(), false}, 164 {"\x8a", "\x8a", "\x1a", "\x1a", getLine(), false}, 165 {"\x8b", "\x8b", "\x1a", "\x1a", getLine(), false}, 166 {"\x8c", "\x8c", "\x1a", "\x1a", getLine(), false}, 167 {"\x8d", "\x8d", "\x1a", "\x1a", getLine(), false}, 168 {"\x8e", "\x8e", "\x1a", "\x1a", getLine(), false}, 169 {"\x8f", "\x8f", "±", "±", getLine(), false}, 170 {"\x90", "\x90", "\x1a", "\x1a", getLine(), false}, 171 {"\x91", "\x91", "j", "j", getLine(), false}, 172 {"\x92", "\x92", "k", "k", getLine(), false}, 173 {"\x93", "\x93", "l", "l", getLine(), false}, 174 {"\x94", "\x94", "m", "m", getLine(), false}, 175 {"\x95", "\x95", "n", "n", getLine(), false}, 176 {"\x96", "\x96", "o", "o", getLine(), false}, 177 {"\x97", "\x97", "p", "p", getLine(), false}, 178 {"\x98", "\x98", "q", "q", getLine(), false}, 179 {"\x99", "\x99", "r", "r", getLine(), false}, 180 {"\x9a", "\x9a", "\x1a", "\x1a", getLine(), false}, 181 {"\x9b", "\x9b", "\x1a", "\x1a", getLine(), false}, 182 {"\x9c", "\x9c", "\x1a", "\x1a", getLine(), false}, 183 {"\x9d", "\x9d", "\x1a", "\x1a", getLine(), false}, 184 {"\x9e", "\x9e", "\x1a", "\x1a", getLine(), false}, 185 {"\x9f", "\x9f", "\x1a", "\x1a", getLine(), false}, 186 {"\xa0", "\xa0", "\x1a", "\x1a", getLine(), false}, 187 {"\xa1", "\xa1", "~", "~", getLine(), false}, 188 {"\xa2", "\xa2", "s", "s", getLine(), false}, 189 {"\xa3", "\xa3", "t", "t", getLine(), false}, 190 {"\xa4", "\xa4", "u", "u", getLine(), false}, 191 {"\xa5", "\xa5", "v", "v", getLine(), false}, 192 {"\xa6", "\xa6", "w", "w", getLine(), false}, 193 {"\xa7", "\xa7", "x", "x", getLine(), false}, 194 {"\xa8", "\xa8", "y", "y", getLine(), false}, 195 {"\xa9", "\xa9", "z", "z", getLine(), false}, 196 {"\xaa", "\xaa", "\x1a", "\x1a", getLine(), false}, 197 {"\xab", "\xab", "\x1a", "\x1a", getLine(), false}, 198 {"\xac", "\xac", "\x1a", "\x1a", getLine(), false}, 199 {"\xad", "\xad", "\x1a", "\x1a", getLine(), false}, 200 {"\xae", "\xae", "\x1a", "\x1a", getLine(), false}, 201 {"\xaf", "\xaf", "\x1a", "\x1a", getLine(), false}, 202 {"\xb0", "\xb0", "^", "^", getLine(), false}, 203 {"\xb1", "\xb1", "\x1a", "\x1a", getLine(), false}, 204 {"\xb2", "\xb2", "\x1a", "\x1a", getLine(), false}, 205 {"\xb3", "\xb3", "\x1a", "\x1a", getLine(), false}, 206 {"\xb4", "\xb4", "\x1a", "\x1a", getLine(), false}, 207 {"\xb5", "\xb5", "\x1a", "\x1a", getLine(), false}, 208 {"\xb6", "\xb6", "\x1a", "\x1a", getLine(), false}, 209 {"\xb7", "\xb7", "\x1a", "\x1a", getLine(), false}, 210 {"\xb8", "\xb8", "\x1a", "\x1a", getLine(), false}, 211 {"\xb9", "\xb9", "\x1a", "\x1a", getLine(), false}, 212 {"\xba", "\xba", "[", "[", getLine(), false}, 213 {"\xbb", "\xbb", "]", "]", getLine(), false}, 214 {"\xbc", "\xbc", "\x1a", "\x1a", getLine(), false}, 215 {"\xbd", "\xbd", "\x1a", "\x1a", getLine(), false}, 216 {"\xbe", "\xbe", "\x1a", "\x1a", getLine(), false}, 217 {"\xbf", "\xbf", "\x1a", "\x1a", getLine(), false}, 218 {"\xc0", "\xc0", "{", "{", getLine(), false}, 219 {"\xc1", "\xc1", "A", "A", getLine(), false}, 220 {"\xc2", "\xc2", "B", "B", getLine(), false}, 221 {"\xc3", "\xc3", "C", "C", getLine(), false}, 222 {"\xc4", "\xc4", "D", "D", getLine(), false}, 223 {"\xc5", "\xc5", "E", "E", getLine(), false}, 224 {"\xc6", "\xc6", "F", "F", getLine(), false}, 225 {"\xc7", "\xc7", "G", "G", getLine(), false}, 226 {"\xc8", "\xc8", "H", "H", getLine(), false}, 227 {"\xc9", "\xc9", "I", "I", getLine(), false}, 228 {"\xca", "\xca", "\x1a", "\x1a", getLine(), false}, 229 {"\xcb", "\xcb", "\x1a", "\x1a", getLine(), false}, 230 {"\xcc", "\xcc", "\x1a", "\x1a", getLine(), false}, 231 {"\xcd", "\xcd", "\x1a", "\x1a", getLine(), false}, 232 {"\xce", "\xce", "\x1a", "\x1a", getLine(), false}, 233 {"\xcf", "\xcf", "\x1a", "\x1a", getLine(), false}, 234 {"\xd0", "\xd0", "}", "}", getLine(), false}, 235 {"\xd1", "\xd1", "J", "J", getLine(), false}, 236 {"\xd2", "\xd2", "K", "K", getLine(), false}, 237 {"\xd3", "\xd3", "L", "L", getLine(), false}, 238 {"\xd4", "\xd4", "M", "M", getLine(), false}, 239 {"\xd5", "\xd5", "N", "N", getLine(), false}, 240 {"\xd6", "\xd6", "O", "O", getLine(), false}, 241 {"\xd7", "\xd7", "P", "P", getLine(), false}, 242 {"\xd8", "\xd8", "Q", "Q", getLine(), false}, 243 {"\xd9", "\xd9", "R", "R", getLine(), false}, 244 {"\xda", "\xda", "\x1a", "\x1a", getLine(), false}, 245 {"\xdb", "\xdb", "\x1a", "\x1a", getLine(), false}, 246 {"\xdc", "\xdc", "\x1a", "\x1a", getLine(), false}, 247 {"\xdd", "\xdd", "\x1a", "\x1a", getLine(), false}, 248 {"\xde", "\xde", "\x1a", "\x1a", getLine(), false}, 249 {"\xdf", "\xdf", "\x1a", "\x1a", getLine(), false}, 250 {"\xe0", "\xe0", "\\", "\\", getLine(), false}, 251 {"\xe1", "\xe1", "\x1a", "\x1a", getLine(), false}, 252 {"\xe2", "\xe2", "S", "S", getLine(), false}, 253 {"\xe3", "\xe3", "T", "T", getLine(), false}, 254 {"\xe4", "\xe4", "U", "U", getLine(), false}, 255 {"\xe5", "\xe5", "V", "V", getLine(), false}, 256 {"\xe6", "\xe6", "W", "W", getLine(), false}, 257 {"\xe7", "\xe7", "X", "X", getLine(), false}, 258 {"\xe8", "\xe8", "Y", "Y", getLine(), false}, 259 {"\xe9", "\xe9", "Z", "Z", getLine(), false}, 260 {"\xea", "\xea", "\x1a", "\x1a", getLine(), false}, 261 {"\xeb", "\xeb", "\x1a", "\x1a", getLine(), false}, 262 {"\xec", "\xec", "\x1a", "\x1a", getLine(), false}, 263 {"\xed", "\xed", "\x1a", "\x1a", getLine(), false}, 264 {"\xee", "\xee", "\x1a", "\x1a", getLine(), false}, 265 {"\xef", "\xef", "\x1a", "\x1a", getLine(), false}, 266 {"\xf0", "\xf0", "0", "0", getLine(), false}, 267 {"\xf1", "\xf1", "1", "1", getLine(), false}, 268 {"\xf2", "\xf2", "2", "2", getLine(), false}, 269 {"\xf3", "\xf3", "3", "3", getLine(), false}, 270 {"\xf4", "\xf4", "4", "4", getLine(), false}, 271 {"\xf5", "\xf5", "5", "5", getLine(), false}, 272 {"\xf6", "\xf6", "6", "6", getLine(), false}, 273 {"\xf7", "\xf7", "7", "7", getLine(), false}, 274 {"\xf8", "\xf8", "8", "8", getLine(), false}, 275 {"\xf9", "\xf9", "9", "9", getLine(), false}, 276 {"\xfa", "\xfa", "\x1a", "\x1a", getLine(), false}, 277 {"\xfb", "\xfb", "\x1a", "\x1a", getLine(), false}, 278 {"\xfc", "\xfc", "\x1a", "\x1a", getLine(), false}, 279 {"\xfd", "\xfd", "\x1a", "\x1a", getLine(), false}, 280 {"\xfe", "\xfe", "\x1a", "\x1a", getLine(), false}, 281 {"\xff", "\xff", "\x1a", "\x1a", getLine(), false}, 282 {"\xc8\x85\x93\x93\x96\x6b\x40\xe6\x96\x99\x93\x84\x5a", "\xc8\x85\x93\x93\x96\x6b\x40\xe6\x96\x99\x93\x84\x5a", "Hello, World!", "Hello, World!", getLine(), true}, 283 } 284 285 func TestXTextEncodingCodePage037Decode(t *testing.T) { 286 _, testFile, _, _ := runtime.Caller(0) 287 for _, tc := range testCases { 288 tc := tc 289 switch tc.toASCII { 290 case string(encoding.ASCIISub), "\x85", "\xad", "\xa0", "\xa2": 291 continue 292 } 293 t.Run(fmt.Sprintf("%#v %#v %d", tc.fromEBCDIC, tc.toASCII, tc.line), func(t *testing.T) { 294 t.Parallel() 295 linkToExample := fmt.Sprintf("%s:%d", testFile, tc.line) 296 decoder := charmap.CodePage037.NewDecoder() 297 dst := make([]byte, len(tc.toASCII)) 298 nDst, nSrc, err := decoder.Transform(dst, []byte(tc.fromEBCDIC), true) 299 if err != nil { 300 t.Fatalf("unexpected decoder transform error: %v - %s", err, linkToExample) 301 } 302 if nSrc != len(tc.fromEBCDIC) { 303 t.Errorf("unexpected source bytes number: %d, expected %d %s", 304 nSrc, len(tc.fromEBCDIC), linkToExample) 305 } 306 if nDst != len(tc.toASCII) { 307 t.Errorf("unexpected destination bytes number: %d, expected %d %s", 308 nDst, len(tc.toASCII), linkToExample) 309 } 310 if string(dst[:nDst]) != tc.toASCII { 311 t.Errorf("unexpected UTF-8 string: %q, expected: %q %s", string(dst[:nDst]), tc.toASCII, linkToExample) 312 } 313 }) 314 } 315 } 316 317 func BenchmarkXTextEncodingCodePage037Decode(b *testing.B) { 318 b.ReportAllocs() 319 for _, tc := range testCases { 320 if !tc.benchmark { 321 continue 322 } 323 b.Run(fmt.Sprintf("%#v %#v %d", tc.fromEBCDIC, tc.toASCII, tc.line), func(b *testing.B) { 324 decoder := charmap.CodePage037.NewDecoder() 325 for i := 0; i < b.N; i++ { 326 dst := make([]byte, len(tc.toASCII)) 327 _, _, err := decoder.Transform(dst, []byte(tc.fromEBCDIC), true) 328 if err != nil { 329 log.Fatal(err) 330 } 331 } 332 }) 333 } 334 } 335 336 func TestXTextEncodingCodePage037Encode(t *testing.T) { 337 _, testFile, _, _ := runtime.Caller(0) 338 for _, tc := range testCases { 339 tc := tc 340 switch tc.fromASCII { 341 case string(encoding.ASCIISub), "\x85", "\xad", "\xa0", "\xa2": 342 continue 343 } 344 t.Run(fmt.Sprintf("%#v %#v %d", tc.fromASCII, tc.toEBCDIC, tc.line), func(t *testing.T) { 345 t.Parallel() 346 linkToExample := fmt.Sprintf("%s:%d", testFile, tc.line) 347 encoder := charmap.CodePage037.NewEncoder() 348 dst := make([]byte, len(tc.toEBCDIC)) 349 nDst, nSrc, err := encoder.Transform(dst, []byte(tc.fromASCII), true) 350 if err != nil { 351 t.Fatalf("unexpected encoder transform error: %v - %s", err, linkToExample) 352 } 353 if nSrc != len(tc.fromASCII) { 354 t.Errorf("unexpected source bytes number: %d, expected: %d %s", 355 nSrc, len(tc.fromASCII), linkToExample) 356 } 357 if nDst != len(tc.toEBCDIC) { 358 t.Errorf("unexpected destination bytes number: %d, expected: %d %s", 359 nDst, len(tc.toEBCDIC), linkToExample) 360 } 361 if string(dst[:nDst]) != tc.toEBCDIC { 362 t.Errorf("unexpected EBCDIC string: %#v, expected: %#v %s", string(dst[:nDst]), tc.toEBCDIC, linkToExample) 363 } 364 }) 365 } 366 } 367 368 func BenchmarkXTextEncodingCodePage037Encode(b *testing.B) { 369 b.ReportAllocs() 370 for _, tc := range testCases { 371 if !tc.benchmark { 372 continue 373 } 374 b.Run(fmt.Sprintf("%#v %#v %d", tc.fromASCII, tc.toEBCDIC, tc.line), func(b *testing.B) { 375 encoder := charmap.CodePage037.NewEncoder() 376 for i := 0; i < b.N; i++ { 377 dst := make([]byte, len(tc.toEBCDIC)) 378 _, _, err := encoder.Transform(dst, []byte(tc.fromASCII), true) 379 if err != nil { 380 log.Fatal(err) 381 } 382 } 383 }) 384 } 385 }