diff --git a/object/ensure-array.js b/object/ensure-array.js new file mode 100644 index 00000000..5ca7a949 --- /dev/null +++ b/object/ensure-array.js @@ -0,0 +1,9 @@ +"use strict"; + +var toShortString = require("../to-short-string-representation") + , isArray = require("./is-array-like"); + +module.exports = function (value) { + if (isArray(value)) return value; + throw new TypeError(toShortString(value) + " is not a array"); +}; diff --git a/object/index.js b/object/index.js index 9b29a6eb..f2a2b004 100644 --- a/object/index.js +++ b/object/index.js @@ -9,6 +9,7 @@ module.exports = { copyDeep: require("./copy-deep"), count: require("./count"), create: require("./create"), + ensureArray: require("./ensure-array"), ensureFiniteNumber: require("./ensure-finite-number"), ensureNaturalNumber: require("./ensure-natural-number"), ensureNaturalNumberValue: require("./ensure-natural-number-value"), diff --git a/test/object/ensure-array.js b/test/object/ensure-array.js new file mode 100644 index 00000000..fd3c32c9 --- /dev/null +++ b/test/object/ensure-array.js @@ -0,0 +1,55 @@ +"use strict"; + +module.exports = function (t, a) { + var arr = []; + a(t(arr), arr, "Array"); + a(t(""), "", "String"); + var args = (function () { + return arguments; + }()); + a(t(args), args, "Arguments"); + var arrayLike = { length: 0 }; + a(t(arrayLike), arrayLike, "Array like"); + a.throws( + function () { + t(function () {}); + }, + TypeError, + "Function" + ); + a.throws( + function () { + t({}); + }, + TypeError, + "Plain object" + ); + a.throws( + function () { + t(/raz/); + }, + TypeError, + "Regexp" + ); + a.throws( + function () { + t(); + }, + TypeError, + "No argument" + ); + a.throws( + function () { + t(null); + }, + TypeError, + "Null" + ); + a.throws( + function () { + t(undefined); + }, + TypeError, + "Undefined" + ); +};