(encoding, input, expected, singleSequence)
| 223 | // singleSequence allows for easy debugging of a specific sequence which is |
| 224 | // useful in case of test failures. |
| 225 | function test(encoding, input, expected, singleSequence) { |
| 226 | let sequences; |
| 227 | if (!singleSequence) { |
| 228 | sequences = writeSequences(input.length); |
| 229 | } else { |
| 230 | sequences = [singleSequence]; |
| 231 | } |
| 232 | const hexNumberRE = /.{2}/g; |
| 233 | sequences.forEach((sequence) => { |
| 234 | const decoder = new StringDecoder(encoding); |
| 235 | let output = ''; |
| 236 | sequence.forEach((write) => { |
| 237 | output += decoder.write(input.slice(write[0], write[1])); |
| 238 | }); |
| 239 | output += decoder.end(); |
| 240 | if (output !== expected) { |
| 241 | const message = |
| 242 | `Expected "${unicodeEscape(expected)}", ` + |
| 243 | `but got "${unicodeEscape(output)}"\n` + |
| 244 | `input: ${input.toString('hex').match(hexNumberRE)}\n` + |
| 245 | `Write sequence: ${JSON.stringify(sequence)}\n` + |
| 246 | `Full Decoder State: ${inspect(decoder)}`; |
| 247 | assert.fail(message); |
| 248 | } |
| 249 | }); |
| 250 | } |
| 251 | |
| 252 | // unicodeEscape prints the str contents as unicode escape codes. |
| 253 | function unicodeEscape(str) { |
no test coverage detected
searching dependent graphs…