.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / entities / test / test.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/entities/test/test.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/entities/test/test.js
new file mode 100644 (file)
index 0000000..cb309f3
--- /dev/null
@@ -0,0 +1,170 @@
+var assert = require("assert"),
+    path = require("path"),
+    entities = require("../");
+
+describe("Encode->decode test", function() {
+    var testcases = [
+        {
+            input: "asdf & ÿ ü '",
+            xml: "asdf & ÿ ü '",
+            html: "asdf & ÿ ü '"
+        },
+        {
+            input: "&",
+            xml: "&",
+            html: "&"
+        }
+    ];
+    testcases.forEach(function(tc) {
+        var encodedXML = entities.encodeXML(tc.input);
+        it("should XML encode " + tc.input, function() {
+            assert.equal(encodedXML, tc.xml);
+        });
+        it("should default to XML encode " + tc.input, function() {
+            assert.equal(entities.encode(tc.input), tc.xml);
+        });
+        it("should XML decode " + encodedXML, function() {
+            assert.equal(entities.decodeXML(encodedXML), tc.input);
+        });
+        it("should default to XML encode " + encodedXML, function() {
+            assert.equal(entities.decode(encodedXML), tc.input);
+        });
+        it("should default strict to XML encode " + encodedXML, function() {
+            assert.equal(entities.decodeStrict(encodedXML), tc.input);
+        });
+
+        var encodedHTML5 = entities.encodeHTML5(tc.input);
+        it("should HTML5 encode " + tc.input, function() {
+            assert.equal(encodedHTML5, tc.html);
+        });
+        it("should HTML5 decode " + encodedHTML5, function() {
+            assert.equal(entities.decodeHTML(encodedHTML5), tc.input);
+        });
+    });
+
+    it("should encode data URIs (issue 16)", function() {
+        var data = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAALAAABAAEAAAIBRAA7";
+        assert.equal(entities.decode(entities.encode(data)), data);
+    });
+});
+
+describe("Decode test", function() {
+    var testcases = [
+        { input: "&", output: "&" },
+        { input: "&", output: "&" },
+        { input: "&", output: "&" },
+        { input: "&", output: "&" },
+        { input: "&", output: "&" },
+        { input: "&", output: "&" },
+        { input: "&", output: "&" },
+        { input: ":", output: ":" },
+        { input: ":", output: ":" },
+        { input: ":", output: ":" },
+        { input: ":", output: ":" }
+    ];
+    testcases.forEach(function(tc) {
+        it("should XML decode " + tc.input, function() {
+            assert.equal(entities.decodeXML(tc.input), tc.output);
+        });
+        it("should HTML4 decode " + tc.input, function() {
+            assert.equal(entities.decodeHTML(tc.input), tc.output);
+        });
+        it("should HTML5 decode " + tc.input, function() {
+            assert.equal(entities.decodeHTML(tc.input), tc.output);
+        });
+    });
+});
+
+var levels = ["xml", "entities"];
+
+describe("Documents", function() {
+    levels
+        .map(function(n) {
+            return path.join("..", "maps", n);
+        })
+        .map(require)
+        .forEach(function(doc, i) {
+            describe("Decode", function() {
+                it(levels[i], function() {
+                    Object.keys(doc).forEach(function(e) {
+                        for (var l = i; l < levels.length; l++) {
+                            assert.equal(entities.decode("&" + e + ";", l), doc[e]);
+                        }
+                    });
+                });
+            });
+
+            describe("Decode strict", function() {
+                it(levels[i], function() {
+                    Object.keys(doc).forEach(function(e) {
+                        for (var l = i; l < levels.length; l++) {
+                            assert.equal(entities.decodeStrict("&" + e + ";", l), doc[e]);
+                        }
+                    });
+                });
+            });
+
+            describe("Encode", function() {
+                it(levels[i], function() {
+                    Object.keys(doc).forEach(function(e) {
+                        for (var l = i; l < levels.length; l++) {
+                            assert.equal(entities.decode(entities.encode(doc[e], l), l), doc[e]);
+                        }
+                    });
+                });
+            });
+        });
+
+    var legacy = require("../maps/legacy.json");
+
+    describe("Legacy", function() {
+        it("should decode", runLegacy);
+    });
+
+    function runLegacy() {
+        Object.keys(legacy).forEach(function(e) {
+            assert.equal(entities.decodeHTML("&" + e), legacy[e]);
+        });
+    }
+});
+
+var astral = {
+    "1D306": "\uD834\uDF06",
+    "1D11E": "\uD834\uDD1E"
+};
+
+var astralSpecial = {
+    "80": "\u20AC",
+    "110000": "\uFFFD"
+};
+
+describe("Astral entities", function() {
+    Object.keys(astral).forEach(function(c) {
+        it("should decode " + astral[c], function() {
+            assert.equal(entities.decode("&#x" + c + ";"), astral[c]);
+        });
+
+        it("should encode " + astral[c], function() {
+            assert.equal(entities.encode(astral[c]), "&#x" + c + ";");
+        });
+
+        it("should escape " + astral[c], function() {
+            assert.equal(entities.escape(astral[c]), "&#x" + c + ";");
+        });
+    });
+
+    Object.keys(astralSpecial).forEach(function(c) {
+        it("special should decode \\u" + c, function() {
+            assert.equal(entities.decode("&#x" + c + ";"), astralSpecial[c]);
+        });
+    });
+});
+
+describe("Escape", function() {
+    it("should always decode ASCII chars", function() {
+        for (var i = 0; i < 0x7f; i++) {
+            var c = String.fromCharCode(i);
+            assert.equal(entities.decodeXML(entities.escape(c)), c);
+        }
+    });
+});