| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- var test = require('tap').test
- var wrappy = require('../wrappy.js')
- test('basic', function (t) {
- function onceifier (cb) {
- var called = false
- return function () {
- if (called) return
- called = true
- return cb.apply(this, arguments)
- }
- }
- onceifier.iAmOnce = {}
- var once = wrappy(onceifier)
- t.equal(once.iAmOnce, onceifier.iAmOnce)
- var called = 0
- function boo () {
- t.equal(called, 0)
- called++
- }
- // has some rando property
- boo.iAmBoo = true
- var onlyPrintOnce = once(boo)
- onlyPrintOnce() // prints 'boo'
- onlyPrintOnce() // does nothing
- t.equal(called, 1)
- // random property is retained!
- t.equal(onlyPrintOnce.iAmBoo, true)
- var logs = []
- var logwrap = wrappy(function (msg, cb) {
- logs.push(msg + ' wrapping cb')
- return function () {
- logs.push(msg + ' before cb')
- var ret = cb.apply(this, arguments)
- logs.push(msg + ' after cb')
- }
- })
- var c = logwrap('foo', function () {
- t.same(logs, [ 'foo wrapping cb', 'foo before cb' ])
- })
- c()
- t.same(logs, [ 'foo wrapping cb', 'foo before cb', 'foo after cb' ])
- t.end()
- })
|