5ed0fcdfd9c52ed0db944e6cea9202f120ad0643
[platform/framework/web/crosswalk-tizen.git] /
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 })