.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / domhandler / test / tests.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/domhandler/test/tests.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/domhandler/test/tests.js
new file mode 100644 (file)
index 0000000..6dc96a2
--- /dev/null
@@ -0,0 +1,60 @@
+var fs = require("fs"),
+    path = require("path"),
+    assert = require("assert"),
+    util = require("util"),
+    Parser = require("htmlparser2").Parser,
+    Handler = require("../");
+
+var basePath = path.resolve(__dirname, "cases"),
+    inspectOpts = { showHidden: true, depth: null };
+
+fs
+.readdirSync(basePath)
+.filter(RegExp.prototype.test, /\.json$/) //only allow .json files
+.map(function(name){
+       return path.resolve(basePath, name);
+})
+.map(require)
+.forEach(function(test){
+       it(test.name, function(){
+               var expected = test.expected;
+
+               var handler = new Handler(function(err, actual){
+                       assert.ifError(err);
+                       try {
+                               compare(expected, actual);
+                       } catch(e){
+                               e.expected = util.inspect(expected, inspectOpts);
+                               e.actual   = util.inspect(actual,   inspectOpts);
+                               throw e;
+                       }
+               }, test.options);
+
+               var data = test.html;
+
+               var parser = new Parser(handler, test.options);
+
+               //first, try to run the test via chunks
+               if (test.streaming || test.streaming === undefined){
+                       for(var i = 0; i < data.length; i++){
+                               parser.write(data.charAt(i));
+                       }
+                       parser.done();
+               }
+
+               //then parse everything
+               parser.parseComplete(data);
+       });
+});
+
+function compare(expected, result){
+       assert.equal(typeof expected, typeof result, "types didn't match");
+       if(typeof expected !== "object" || expected === null){
+               assert.strictEqual(expected, result, "result doesn't equal expected");
+       } else {
+               for(var prop in expected){
+                       assert.ok(prop in result, "result didn't contain property " + prop);
+                       compare(expected[prop], result[prop]);
+               }
+       }
+}
\ No newline at end of file