UNPKG

1.86 kBJavaScriptView Raw
1'use strict'
2var test = require('tap').test
3var limit = require('../index.js')
4
5
6test('limit', function (t) {
7 t.plan(4)
8 var called = 0
9 var completed = 0
10 var limited = limit(function (num, cb) {
11 ++ called
12 setTimeout(cb, 10)
13 }, 2)
14 ;[1,2,3].forEach(function (num) { limited(num, function () { ++ completed }) })
15 setImmediate(function () {
16 t.is(called, 2, 'Immediately queued 2 callbacks')
17 t.is(completed, 0, 'With no completion yet')
18 })
19 setTimeout(function () {
20 t.is(called, 3, 'And ran final callback after waiting')
21 t.is(completed, 2, 'And two complete')
22 }, 11)
23})
24
25test('limit-obj-method', function (t) {
26 t.plan(4)
27 var called = 0
28 var completed = 0
29 var example = {
30 sleep: function (num, cb) {
31 ++ called
32 setTimeout(cb, 10)
33 }
34 }
35 limit.method(example, 'sleep', 2)
36 ;[1,2,3].forEach(function (num) { example.sleep(num, function () { ++ completed }) })
37 setImmediate(function () {
38 t.is(called, 2, 'Immediately queued 2 callbacks')
39 t.is(completed, 0, 'With no completion yet')
40 })
41 setTimeout(function () {
42 t.is(called, 3, 'And ran final callback after waiting')
43 t.is(completed, 2, 'And two complete')
44 }, 11)
45})
46
47test('limit-class-method', function (t) {
48 t.plan(4)
49 var called = 0
50 var completed = 0
51 function Example () {}
52 Example.prototype = {
53 sleep: function (num, cb) {
54 ++ called
55 setTimeout(cb, 10)
56 }
57 }
58 limit.method(Example, 'sleep', 2)
59 var example = new Example()
60 ;[1,2,3].forEach(function (num) { example.sleep(num, function () { ++ completed }) })
61 setImmediate(function () {
62 t.is(called, 2, 'Immediately queued 2 callbacks')
63 t.is(completed, 0, 'With no completion yet')
64 })
65 setTimeout(function () {
66 t.is(called, 3, 'And ran final callback after waiting')
67 t.is(completed, 2, 'And two complete')
68 }, 11)
69})