123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- var tape = require('tape')
- var thunky = require('./')
- tape('run only once', function (t) {
- t.plan(3)
- var ran = 0
- var run = thunky(function (cb) {
- ran++
- cb()
- })
- run(function () {
- t.same(ran, 1, 'ran once')
- })
- run(function () {
- t.same(ran, 1, 'ran once')
- })
- run(function () {
- t.same(ran, 1, 'ran once')
- })
- })
- tape('run only once async', function (t) {
- t.plan(3)
- var ran = 0
- var run = thunky(function (cb) {
- process.nextTick(function () {
- ran++
- cb()
- })
- })
- run(function () {
- t.same(ran, 1, 'ran once')
- })
- run(function () {
- t.same(ran, 1, 'ran once')
- })
- run(function () {
- t.same(ran, 1, 'ran once')
- })
- })
- tape('re-run on error', function (t) {
- t.plan(3)
- var ran = 0
- var run = thunky(function (cb) {
- ran++
- cb(new Error('stop'))
- })
- run(function () {
- t.same(ran, 1, 'ran once')
- run(function () {
- t.same(ran, 2, 'ran once')
- run(function () {
- t.same(ran, 3, 'ran once')
- })
- })
- })
- })
- tape('pass arguments', function (t) {
- t.plan(6)
- var ran = 0
- var run = thunky(function (fn) {
- ran++
- fn({ hello: 'world' })
- })
- run(function (val) {
- t.same(ran, 1, 'ran once')
- t.same(val, { hello: 'world' })
- run(function (val) {
- t.same(ran, 1, 'ran once')
- t.same(val, { hello: 'world' })
- run(function (val) {
- t.same(ran, 1, 'ran once')
- t.same(val, { hello: 'world' })
- })
- })
- })
- })
- tape('callback is optional', function (t) {
- t.plan(2)
- var ran = 0
- var run = thunky(function (fn) {
- ran++
- fn({ hello: 'world' })
- })
- run()
- run(function (val) {
- t.same(ran, 1, 'ran once')
- t.same(val, { hello: 'world' })
- })
- })
- tape('always async', function (t) {
- t.plan(2)
- var run = thunky(function (cb) {
- process.nextTick(cb)
- })
- var sync = true
- run(function () {
- t.ok(!sync, 'not sync')
- var innerSync = true
- run(function () {
- t.ok(!innerSync, 'not sync')
- })
- innerSync = false
- })
- sync = false
- })
|