| 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(); |
| }); |