var test = require('tap').test | |
var once = require('../once.js') | |
test('once', function (t) { | |
var f = 0 | |
function fn (g) { | |
t.equal(f, 0) | |
f ++ | |
return f + g + this | |
} | |
fn.ownProperty = {} | |
var foo = once(fn) | |
t.equal(fn.ownProperty, foo.ownProperty) | |
t.notOk(foo.called) | |
for (var i = 0; i < 1E3; i++) { | |
t.same(f, i === 0 ? 0 : 1) | |
var g = foo.call(1, 1) | |
t.ok(foo.called) | |
t.same(g, 3) | |
t.same(f, 1) | |
} | |
t.end() | |
}) |