Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80555 views
1
var test = require('tap').test
2
var wrappy = require('../wrappy.js')
3
4
test('basic', function (t) {
5
function onceifier (cb) {
6
var called = false
7
return function () {
8
if (called) return
9
called = true
10
return cb.apply(this, arguments)
11
}
12
}
13
onceifier.iAmOnce = {}
14
var once = wrappy(onceifier)
15
t.equal(once.iAmOnce, onceifier.iAmOnce)
16
17
var called = 0
18
function boo () {
19
t.equal(called, 0)
20
called++
21
}
22
// has some rando property
23
boo.iAmBoo = true
24
25
var onlyPrintOnce = once(boo)
26
27
onlyPrintOnce() // prints 'boo'
28
onlyPrintOnce() // does nothing
29
t.equal(called, 1)
30
31
// random property is retained!
32
t.equal(onlyPrintOnce.iAmBoo, true)
33
34
var logs = []
35
var logwrap = wrappy(function (msg, cb) {
36
logs.push(msg + ' wrapping cb')
37
return function () {
38
logs.push(msg + ' before cb')
39
var ret = cb.apply(this, arguments)
40
logs.push(msg + ' after cb')
41
}
42
})
43
44
var c = logwrap('foo', function () {
45
t.same(logs, [ 'foo wrapping cb', 'foo before cb' ])
46
})
47
c()
48
t.same(logs, [ 'foo wrapping cb', 'foo before cb', 'foo after cb' ])
49
50
t.end()
51
})
52
53