| var test = require('tape'); | |
| var punycode = require('punycode'); | |
| var ent = require('../'); | |
| test('amp', function (t) { | |
| var a = 'a & b & c'; | |
| var b = 'a & b & c'; | |
| t.equal(ent.encode(a), b); | |
| t.equal(ent.decode(b), a); | |
| t.end(); | |
| }); | |
| test('html', function (t) { | |
| var a = '<html> © π " \''; | |
| var b = '<html> © π " ''; | |
| t.equal(ent.encode(a), b); | |
| t.equal(ent.decode(b), a); | |
| t.end(); | |
| }); | |
| test('html named', function (t) { | |
| var a = '<html> © π " \' ∴ Β β'; | |
| var b = '<html> © π " ' ∴ Β β'; | |
| t.equal(ent.encode(a, { named: true }), b); | |
| t.equal(ent.decode(b), a); | |
| t.end(); | |
| }); | |
| test('ambiguous ampersands', function (t) { | |
| var a = '• &bullet'; | |
| var b = '• &bullet'; | |
| var c = '• &bullet'; | |
| t.equal(ent.encode(a, { named: true }), c); | |
| t.equal(ent.decode(b), a); | |
| t.equal(ent.decode(c), a); | |
| t.end(); | |
| }); | |
| test('entities', function (t) { | |
| var a = '\u2124'; | |
| var b = 'ℤ'; | |
| t.equal(ent.encode(a), b); | |
| t.equal(ent.decode(b), a); | |
| t.end(); | |
| }); | |
| test('entities named', function (t) { | |
| var a = '\u2124'; | |
| var b = 'ℤ'; | |
| t.equal(ent.encode(a, { named: true }), b); | |
| t.equal(ent.decode(b), a); | |
| t.end(); | |
| }); | |
| test('num', function (t) { | |
| var a = String.fromCharCode(1337); | |
| var b = 'Թ'; | |
| t.equal(ent.encode(a), b); | |
| t.equal(ent.decode(b), a); | |
| t.equal(ent.encode(a + a), b + b); | |
| t.equal(ent.decode(b + b), a + a); | |
| t.end(); | |
| }); | |
| test('astral num', function (t) { | |
| var a = punycode.ucs2.encode([0x1d306]); | |
| var b = '𝌆'; | |
| t.equal(ent.encode(a), b); | |
| t.equal(ent.decode(b), a); | |
| t.equal(ent.encode(a + a), b + b); | |
| t.equal(ent.decode(b + b), a + a); | |
| t.end(); | |
| }); | |
| test('nested escapes', function (t) { | |
| var a = '&'; | |
| var b = '&amp;'; | |
| t.equal(ent.encode(a), b); | |
| t.equal(ent.decode(b), a); | |
| t.equal(ent.encode(a + a), b + b); | |
| t.equal(ent.decode(b + b), a + a); | |
| t.end(); | |
| }); | |
| test('encode `special` option', function (t) { | |
| var a = '<>\'"&'; | |
| var b = '<>\'"&'; | |
| t.equal(ent.encode(a, { | |
| named: true, | |
| special: { | |
| '<': true, | |
| '>': true, | |
| '&': true | |
| } | |
| }), b); | |
| t.end(); | |
| }); |