| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | 
							- 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]);
 
- 		}
 
- 	}
 
- }
 
 
  |