api.js
1.68 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
var htmlparser2 = require(".."),
assert = require("assert");
describe("API", function(){
it("should load all modules", function(){
var Stream = require("../lib/Stream.js");
assert.strictEqual(htmlparser2.Stream, Stream, "should load module");
assert.strictEqual(htmlparser2.Stream, Stream, "should load it again (cache)");
var ProxyHandler = require("../lib/ProxyHandler.js");
assert.strictEqual(htmlparser2.ProxyHandler, ProxyHandler, "should load module");
assert.strictEqual(htmlparser2.ProxyHandler, ProxyHandler, "should load it again (cache)");
});
it("should work without callbacks", function(){
var p = new htmlparser2.Parser(null, {xmlMode: true, lowerCaseAttributeNames: true});
p.end("<a foo><bar></a><!-- --><![CDATA[]]]><?foo?><!bar><boo/>boohay");
p.write("foo");
//check for an error
p.end();
var err = false;
p._cbs.onerror = function(){ err = true; };
p.write("foo");
assert(err);
err = false;
p.end();
assert(err);
p.reset();
//remove method
p._cbs.onopentag = function(){};
p.write("<a foo");
p._cbs.onopentag = null;
p.write(">");
//pause/resume
var processed = false;
p._cbs.ontext = function(t){
assert.equal(t, "foo");
processed = true;
};
p.pause();
p.write("foo");
assert(!processed);
p.resume();
assert(processed);
processed = false;
p.pause();
assert(!processed);
p.resume();
assert(!processed);
p.pause();
p.end("foo");
assert(!processed);
p.resume();
assert(processed);
});
it("should update the position", function(){
var p = new htmlparser2.Parser(null);
p.write("foo");
assert.equal(p.startIndex, 0);
p.write("<bar>");
assert.equal(p.startIndex, 3);
});
});