blob: b2852eb890935d3268cbd2805b1d4599fbacca1c [file] [log] [blame]
/*
* function-args-test.js: Tests for `args` method
*
* (C) 2012, Nodejitsu Inc.
* MIT LICENSE
*
*/
var assert = require('assert'),
path = require('path'),
vows = require('vows'),
macros = require('./helpers/macros'),
utile = require('../');
vows.describe('utile/args').addBatch({
'When using utile': {
'the `args` function': {
topic: utile,
'should be a function': function (_utile) {
assert.isFunction(_utile.args);
},
}
},
'utile.rargs()': {
'with no arguments': {
topic: utile.rargs(),
'should return an empty object': function (result) {
assert.isArray(result);
assert.lengthOf(result, 0);
}
},
'with simple arguments': {
topic: function () {
return (function () {
return utile.rargs(arguments);
})('a', 'b', 'c');
},
'should return an array with three items': function (result) {
assert.isArray(result);
assert.equal(3, result.length);
assert.equal(result[0], 'a');
assert.equal(result[1], 'b');
assert.equal(result[2], 'c');
}
},
'with a simple slice': {
topic: function () {
return (function () {
return utile.rargs(arguments, 1);
})('a', 'b', 'c');
},
'should return an array with three items': function (result) {
assert.isArray(result);
assert.equal(2, result.length);
assert.equal(result[0], 'b');
assert.equal(result[1], 'c');
}
}
},
'utile.args()': {
'with no arguments': {
topic: utile.args(),
'should return an empty Array': function (result) {
assert.isUndefined(result.callback);
assert.isArray(result);
assert.lengthOf(result, 0);
}
},
'with simple arguments': {
topic: function () {
return (function () {
return utile.args(arguments);
})('a', 'b', 'c', function () {
return 'ok';
});
},
'should return an array with three items': function (result) {
assert.isArray(result);
assert.equal(3, result.length);
assert.equal(result[0], 'a');
assert.equal(result[1], 'b');
assert.equal(result[2], 'c');
//
// Ensure that the Array returned
// by `utile.args()` enumerates correctly
//
var length = 0;
result.forEach(function (item) {
length++;
});
assert.equal(length, 3);
},
'should return lookup helpers': function (result) {
assert.isArray(result);
assert.equal(result.first, 'a');
assert.equal(result.last, 'c');
assert.isFunction(result.callback);
assert.isFunction(result.cb);
}
}
}
}).export(module);