Skip to content

Commit d5069f4

Browse files
committed
test: Test coverage for limited promise based methods
1 parent 7e25bff commit d5069f4

File tree

1 file changed

+79
-1
lines changed

1 file changed

+79
-1
lines changed

test/limit.js

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,4 +132,82 @@ test('promise', function (t) {
132132
function afterAllDone () {
133133
t.is(completed, 3, 'All completed')
134134
}
135-
})
135+
})
136+
137+
test('limit-promiseobj-method', function (t) {
138+
t.plan(5)
139+
var called = 0
140+
var completed = 0
141+
var finishers = []
142+
var example = {
143+
test: function (num) {
144+
++ called
145+
return new Promise(resolve => {
146+
finishers.push(resolve)
147+
})
148+
}
149+
}
150+
limit.promise.method(example, 'test', 2)
151+
for (var ii = 0; ii < 3; ++ii) {
152+
example.test(ii + 1).then(function () {
153+
++ completed
154+
})
155+
}
156+
setImmediate(function () {
157+
t.is(called, 2, 'Immediately queued 2 callbacks')
158+
t.is(completed, 0, 'With no completion yet')
159+
// immediately complete one of them...
160+
finishers.shift()()
161+
setImmediate(afterCompletion)
162+
})
163+
function afterCompletion () {
164+
t.is(completed, 1, 'Calling the finisher completed the first one')
165+
t.is(called, 3,'Third action was started')
166+
finishers.shift()()
167+
finishers.shift()()
168+
setImmediate(afterAllDone)
169+
}
170+
function afterAllDone () {
171+
t.is(completed, 3, 'All completed')
172+
}
173+
})
174+
175+
test('limit-promiseclass-method', function (t) {
176+
t.plan(5)
177+
var called = 0
178+
var completed = 0
179+
var finishers = []
180+
function Example () {}
181+
Example.prototype = {
182+
test: function (num, cb) {
183+
++ called
184+
return new Promise(resolve => {
185+
finishers.push(resolve)
186+
})
187+
}
188+
}
189+
limit.promise.method(Example, 'test', 2)
190+
var example = new Example()
191+
for (var ii = 0; ii < 3; ++ii) {
192+
example.test(ii + 1).then(function () {
193+
++ completed
194+
})
195+
}
196+
setImmediate(function () {
197+
t.is(called, 2, 'Immediately queued 2 callbacks')
198+
t.is(completed, 0, 'With no completion yet')
199+
// immediately complete one of them...
200+
finishers.shift()()
201+
setImmediate(afterCompletion)
202+
})
203+
function afterCompletion () {
204+
t.is(completed, 1, 'Calling the finisher completed the first one')
205+
t.is(called, 3,'Third action was started')
206+
finishers.shift()()
207+
finishers.shift()()
208+
setImmediate(afterAllDone)
209+
}
210+
function afterAllDone () {
211+
t.is(completed, 3, 'All completed')
212+
}
213+
})

0 commit comments

Comments
 (0)