basic.js 1.1 KB

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