-
Notifications
You must be signed in to change notification settings - Fork 3
/
events-test.js
132 lines (119 loc) · 3.39 KB
/
events-test.js
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
* Emitted events tests
**/
var assert = require('assert')
var Tokenizer = require('..')
var options = {}
describe('Tokenizer Events', function () {
describe('[empty]', function () {
describe('while not ending', function () {
var p = new Tokenizer(options)
it('should emit [empty] when a rule matches', function (done) {
p.addRule(1, 'consume data')
p.on('empty', function (ending) {
// Should be the current ending status
assert.equal(ending, false)
done()
})
p.write('abc')
})
})
describe('while ending', function () {
var p = new Tokenizer(options)
it('should emit [empty] when a rule matches', function (done) {
p.addRule(1, 'consume data')
p.on('empty', function (ending) {
// Should be the current ending status
assert.equal(ending, true)
done()
})
p.end('abc')
})
})
})
describe('[debug]', function () {
describe('toggled', function () {
var p = new Tokenizer(options)
var matches
p.addRule(1, 'consume data')
p.on('debug', function (type, method, args) {
assert.equal(arguments.length, 3)
assert.equal(typeof type, 'string')
assert.equal(typeof method, 'string')
assert.equal(typeof args, 'object')
matches++
})
describe('on', function () {
it('should emit [debug]', function (done) {
matches = 0
p.debug(true)
p.write('abc')
assert.equal(matches, 6) // 3 x ( 1xhandler, 1xsubrule )
done()
})
})
describe('off', function () {
it('should not emit [debug]', function (done) {
matches = 0
p.debug()
p.write('abc')
assert.equal(matches, 0)
done()
})
})
})
describe('toggled on/off with #loadRuleSet', function () {
var p = new Tokenizer(options)
var loadruleset_flag = false
p.addRule(1, 'consume data')
p.saveRuleSet('test')
p.on('debug', function (type, method, args) {
if (type === 'Atok#' && method === 'loadRuleSet') {
loadruleset_flag = true
assert.equal(args[0], 'test')
}
})
it('should emit [debug]', function (done) {
p.debug(true)
p.loadRuleSet('test')
p.write('abc')
assert(loadruleset_flag)
done()
})
it('should not emit [debug]', function (done) {
loadruleset_flag = false
p.debug()
p.loadRuleSet('test')
p.write('abc')
assert(!loadruleset_flag)
done()
})
})
describe('toggled on/off with a handler', function () {
var p = new Tokenizer(options)
var handler_flag = false
p.addRule(1, function myHandler () {})
p.saveRuleSet('test')
p.on('debug', function (type, method, args) {
if (type === 'Handler' && method === 'myHandler@test') {
handler_flag = true
}
})
it('should emit [debug]', function (done) {
p.debug(true)
p.loadRuleSet('test')
p.write('abc')
assert(handler_flag)
done()
})
it('should not emit [debug]', function (done) {
handler_flag = false
p.debug()
p.loadRuleSet('test')
p.write('abc')
assert(!handler_flag)
done()
})
})
})
})