/* * 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);