1 | var Decoder = require('../lib/utils').Decoder;
|
2 |
|
3 | var path = require('path'),
|
4 | assert = require('assert');
|
5 |
|
6 | var group = path.basename(__filename, '.js') + '/';
|
7 |
|
8 | [
|
9 | { source: ['Hello world'],
|
10 | expected: 'Hello world',
|
11 | what: 'No encoded bytes'
|
12 | },
|
13 | { source: ['Hello%20world'],
|
14 | expected: 'Hello world',
|
15 | what: 'One full encoded byte'
|
16 | },
|
17 | { source: ['Hello%20world%21'],
|
18 | expected: 'Hello world!',
|
19 | what: 'Two full encoded bytes'
|
20 | },
|
21 | { source: ['Hello%', '20world'],
|
22 | expected: 'Hello world',
|
23 | what: 'One full encoded byte split #1'
|
24 | },
|
25 | { source: ['Hello%2', '0world'],
|
26 | expected: 'Hello world',
|
27 | what: 'One full encoded byte split #2'
|
28 | },
|
29 | { source: ['Hello%20', 'world'],
|
30 | expected: 'Hello world',
|
31 | what: 'One full encoded byte (concat)'
|
32 | },
|
33 | { source: ['Hello%2Qworld'],
|
34 | expected: 'Hello%2Qworld',
|
35 | what: 'Malformed encoded byte #1'
|
36 | },
|
37 | { source: ['Hello%world'],
|
38 | expected: 'Hello%world',
|
39 | what: 'Malformed encoded byte #2'
|
40 | },
|
41 | { source: ['Hello+world'],
|
42 | expected: 'Hello world',
|
43 | what: 'Plus to space'
|
44 | },
|
45 | { source: ['Hello+world%21'],
|
46 | expected: 'Hello world!',
|
47 | what: 'Plus and encoded byte'
|
48 | },
|
49 | { source: ['5%2B5%3D10'],
|
50 | expected: '5+5=10',
|
51 | what: 'Encoded plus'
|
52 | },
|
53 | { source: ['5+%2B+5+%3D+10'],
|
54 | expected: '5 + 5 = 10',
|
55 | what: 'Spaces and encoded plus'
|
56 | },
|
57 | ].forEach(function(v) {
|
58 | var dec = new Decoder(), result = '';
|
59 | v.source.forEach(function(s) {
|
60 | result += dec.write(s);
|
61 | });
|
62 | var msg = '[' + group + v.what + ']: decoded string mismatch.\n'
|
63 | + 'Saw: ' + result + '\n'
|
64 | + 'Expected: ' + v.expected;
|
65 | assert.deepEqual(result, v.expected, msg);
|
66 | });
|