Blame view
node_modules/domhandler/test/tests.js
1.52 KB
f7563de62
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 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]); } } } |