.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / domhandler / test / tests.js
1 var fs = require("fs"),
2     path = require("path"),
3     assert = require("assert"),
4     util = require("util"),
5     Parser = require("htmlparser2").Parser,
6     Handler = require("../");
7
8 var basePath = path.resolve(__dirname, "cases"),
9     inspectOpts = { showHidden: true, depth: null };
10
11 fs
12 .readdirSync(basePath)
13 .filter(RegExp.prototype.test, /\.json$/) //only allow .json files
14 .map(function(name){
15         return path.resolve(basePath, name);
16 })
17 .map(require)
18 .forEach(function(test){
19         it(test.name, function(){
20                 var expected = test.expected;
21
22                 var handler = new Handler(function(err, actual){
23                         assert.ifError(err);
24                         try {
25                                 compare(expected, actual);
26                         } catch(e){
27                                 e.expected = util.inspect(expected, inspectOpts);
28                                 e.actual   = util.inspect(actual,   inspectOpts);
29                                 throw e;
30                         }
31                 }, test.options);
32
33                 var data = test.html;
34
35                 var parser = new Parser(handler, test.options);
36
37                 //first, try to run the test via chunks
38                 if (test.streaming || test.streaming === undefined){
39                         for(var i = 0; i < data.length; i++){
40                                 parser.write(data.charAt(i));
41                         }
42                         parser.done();
43                 }
44
45                 //then parse everything
46                 parser.parseComplete(data);
47         });
48 });
49
50 function compare(expected, result){
51         assert.equal(typeof expected, typeof result, "types didn't match");
52         if(typeof expected !== "object" || expected === null){
53                 assert.strictEqual(expected, result, "result doesn't equal expected");
54         } else {
55                 for(var prop in expected){
56                         assert.ok(prop in result, "result didn't contain property " + prop);
57                         compare(expected[prop], result[prop]);
58                 }
59         }
60 }