UNPKG

dis

Version:

Tiny tiny duck typing utility

417 lines (412 loc) 11.9 kB
require('chai').should(); describe('methods',function(){ describe('#getType(obj)',function(){ it('should return the type of the object',function(){ var getType = require('../lib/getType'); var a = []; var b = {}; var c = ''; var d = new Date(); var e = new Error(); var f = (function(){return arguments;})(); var g = true; var h = null; var i = 1; var j = /something/; var k; getType(a).should.equal('array'); getType(b).should.equal('object'); getType(c).should.equal('string'); getType(d).should.equal('date'); getType(e).should.equal('error'); getType(f).should.equal('arguments'); getType(g).should.equal('boolean'); getType(h).should.equal('null'); getType(i).should.equal('number'); getType(j).should.equal('regexp'); getType(k).should.equal('undefined'); }); }); describe('#getTypeAdvanced(obj)',function(){ it('should return the type of the object',function(){ var getType = require('../lib/getTypeAdvanced'); var a = []; var b = {}; var c = ''; var d = new Date(); var e = new Error(); var f = (function(){return arguments;})(); var g = true; var h = null; var i = 1; var j = /something/; var k; var l = 1.5; getType(a).should.equal('array'); getType(b).should.equal('object'); getType(c).should.equal('string'); getType(d).should.equal('date'); getType(e).should.equal('error'); getType(f).should.equal('arguments'); getType(g).should.equal('boolean'); getType(h).should.equal('null'); getType(i).should.equal('integer'); getType(j).should.equal('regexp'); getType(k).should.equal('undefined'); getType(l).should.equal('number'); }); }); describe('#getTypeAdvanced(obj,type)',function(){ it('should return true if the object\'s type == type',function(){ var getType = require('../lib/getTypeAdvanced'); var a = []; var b = {}; var c = ''; var d = new Date(); var e = new Error(); var f = (function(){return arguments;})(); var g = true; var h = null; var i = 1; var j = /something/; var k; var l = 1.5; getType(a,'array').should.be.true; getType(a,Array).should.be.true; getType(b,'object').should.be.true; getType(c,'string').should.be.true; getType(c,String).should.be.true; getType(d,'date').should.be.true; getType(e,'error').should.be.true; getType(f,'arguments').should.be.true; getType(g,'boolean').should.be.true; getType(h,'null').should.be.true; getType(i,'integer').should.be.true; getType(j,'regexp').should.be.true; getType(k,'undefined').should.be.true; getType(l,'number').should.be.true; }); }); describe('#getTypeAdvanced.tests',function(){ it('should add new types if overloaded',function(){ var getType = require('../lib/getTypeAdvanced'); var SomeClass = function(){}; getType.tests.sometype = function(obj){ return (obj instanceof SomeClass); }; var a = new SomeClass(); getType(a).should.equal('sometype'); getType(a,'sometype').should.be.true; }); }); describe('#test(obj,type)',function(){ it('should check if `obj` is of type `type`',function(){ var test = require('../lib/test'); var a = []; var b = {}; var c; test(a,Array).should.be.true; test(b,'object').should.be.true; test(c,'undefined').should.be.true; }); }); describe('#testMultiple(obj,...,type)',function(){ it('should check multiple objects for their type',function(){ var test = require('../lib/testMultiple'); var a,b,c,d,e,f; a = b = c = d = e = f = []; test(a,b,c,d,e,Array).should.be.true; test(a,b,c,d,e,'string').should.be.false; }); }); describe('#same(obj,obj,...)',function(){ it('should check if all provided objects are of the same type',function(){ var same = require('../lib/isSame'); same([],[],[]).should.be.truthy; same({},{},'').should.be.false; }); }); }); describe('Tests',function(){ describe('#isArguments(obj)',function(){ it('should return true if the object passed is an arguments object',function(){ var isArguments = require('../lib/isArguments'); var args = (function(a,b,c){return arguments;})(); isArguments(args).should.be.true; var b = []; isArguments(b).should.be.false; }); }); describe('#isArray(obj)',function(){ it('should return true if the object passed is an array',function(){ var isArray = require('../lib/isArray'); var a = []; isArray(a).should.be.true; var b = {length:2,0:'',1:''}; isArray(b).should.be.false; }); }); describe('#isArrayLike(obj)',function(){ it('should return true if the object passed looks like an array',function(){ var isArrayLike = require('../lib/isArrayLike'); var a = []; var b = {length:2,0:'0',1:'1'}; var c = {length:1,1:'1'}; isArrayLike(a).should.be.true; isArrayLike(b).should.be.true; isArrayLike(c).should.be.false; }); }) describe('#isBoolean(obj)',function(){ it('should return true if the object is strictly true or false',function(){ var isBoolean = require('../lib/isBoolean'); var a = true; var b = false; var c; isBoolean(a).should.be.true; isBoolean(b).should.be.true; isBoolean(c).should.be.false; }); }); describe('#isDate(obj)',function(){ it('should return true if the object is a date',function(){ var a = new Date(); var b = Date(); var c = [0,0,0]; var isDate = require('../lib/isDate'); isDate(a).should.be.true; isDate(b).should.be.false; isDate(c).should.be.false; }); }); describe('#isDefined(obj)',function(){ it('should return true if the object is defined',function(){ var a = ''; var b; var isDefined = require('../lib/isDefined'); isDefined(a).should.be.true; isDefined(b).should.be.false; }); }); describe('#isEmpty(obj)',function(){ it('should return true on empty arrays',function(){ var isEmpty = require('../lib/isEmpty'); var a = []; var b = ['a']; isEmpty(a).should.be.true; isEmpty(b).should.be.false; }); it('should return true on empty objects',function(){ var isEmpty = require('../lib/isEmpty'); var a = {}; var b = {a:'a'}; isEmpty(a).should.be.true; isEmpty(b).should.be.false; }); it('should return true on empty strings',function(){ var isEmpty = require('../lib/isEmpty'); var a = ''; var b = 'abc' isEmpty(a).should.be.true; isEmpty(b).should.be.false; }); it('should return true on `false`',function(){ var isEmpty = require('../lib/isEmpty'); var a = false; var b = true; isEmpty(a).should.be.true; isEmpty(b).should.be.false; }); }); describe('#isError(obj)',function(){ it('should return true if obj is an Error',function(){ var a = new Error(); var b = ''; var isError = require('../lib/isError'); isError(a).should.be.true; isError(b).should.be.false; }); }); describe('#isFunction(obj)',function(){ it('should return true if obj is a function',function(){ var a = function(){}; var b = function Named(){}; var c = Date; var d = Array; var e = ''; var isFunction = require('../lib/isFunction'); isFunction(a).should.be.true; isFunction(b).should.be.true; isFunction(c).should.be.true; isFunction(d).should.be.true; isFunction(e).should.be.false; }); }); describe.skip('#isHTMLCollection(obj)',function(){ }); describe('#isInteger(obj)',function(){ it('should return true if obj is an integer',function(){ var a = 1; var b = 0; var c = 1.5; var d = '1'; var e = '1.5'; var f = 0x00f; var isInteger = require('../lib/isInteger'); isInteger(a).should.be.true; isInteger(b).should.be.true; isInteger(c).should.be.false; isInteger(d).should.be.true; isInteger(e).should.be.false; isInteger(f).should.be.true; }); }); describe('#isNative(obj)',function(){ it('should return true if obj is a native function',function(){ var a = function(){}; var b = function Named(){}; var c = Date; var d = Array; var e = ''; var isNative = require('../lib/isNative'); isNative(a).should.be.false; isNative(b).should.be.false; isNative(c).should.be.true; isNative(d).should.be.true; isNative(e).should.be.false; }); }); describe.skip('#isNode(obj)',function(){ }); describe('#isNull(obj)',function(){ it('should return true if obj is strictly null',function(){ var a = null; var b = 'null'; var c; var isNull = require('../lib/isNull'); isNull(a).should.be.true; isNull(b).should.be.false; isNull(c).should.be.false; }); }); describe('#isNumber(obj)',function(){ it('should return true if obj is strictly a number',function(){ var a = 1; var b = 0; var c = 1.5; var d = '1'; var e = '1.5'; var f = 0x00f; var isNumber = require('../lib/isNumber'); isNumber(a).should.be.true; isNumber(b).should.be.true; isNumber(c).should.be.true; isNumber(d).should.be.false; isNumber(e).should.be.false; isNumber(f).should.be.true; }); }); describe('#isNumeric(obj)',function(){ it('should return true if obj looks like number',function(){ var a = 1; var b = 0; var c = 1.5; var d = '1'; var e = '1.5'; var f = 0x00f; var g = '0x00f'; var h = '18$'; var i = 'a'; var isNumeric = require('../lib/isNumeric'); isNumeric(a).should.be.true; isNumeric(b).should.be.true; isNumeric(c).should.be.true; isNumeric(d).should.be.true; isNumeric(e).should.be.true; isNumeric(f).should.be.true; isNumeric(g).should.be.true; isNumeric(h).should.be.false; isNumeric(i).should.be.false; }); }); describe('#isObject(obj)',function(){ it('should return true if obj is a plain object',function(){ var a = {}; var b = new Object(); var c = Object.create({}); var d = new Date(); var isObject = require('../lib/isObject'); isObject(a).should.be.true; isObject(b).should.be.true; isObject(c).should.be.true; isObject(d).should.be.false; }); }); describe('#isReference(obj)',function(){ it('should return true if obj is not a string or a number',function(){ var isReference = require('../lib/isReference'); var a = ''; var b = 1; var c = {}; var d = []; isReference(a).should.be.false; isReference(b).should.be.false; isReference(c).should.be.true; isReference(d).should.be.true; }); }); describe('#isRegExp(obj)',function(){ it('should return true if obj is a regular expression',function(){ var isRegExp = require('../lib/isRegExp'); var a = /something/g; var b = new RegExp('something'); var c = '/something/g'; isRegExp(a).should.be.true; isRegExp(b).should.be.true; isRegExp(c).should.be.false; }); }); describe('#isString(obj)',function(){ it('should return true if obj is a string',function(){ var isString = require('../lib/isString'); var a = ''; var b = new String(); var c = 1; isString(a).should.be.true; isString(b).should.be.true; isString(c).should.be.false; }); }); describe('#isTrue(obj)',function(){ it('should return true if obj is truthy',function(){ var isTrue = require('../lib/isTrue'); var a = ['a']; var b = {'a':'a'}; var c = 1; var d = true; var e = []; var f = {}; var g = 0; var h = false; isTrue(a).should.be.true; isTrue(b).should.be.true; isTrue(c).should.be.true; isTrue(d).should.be.true; isTrue(e).should.be.false; isTrue(f).should.be.false; isTrue(g).should.be.false; isTrue(h).should.be.false; }); }); describe('#isUndefined(obj)',function(){ it('should return true if obj is undefined',function(){ var isUndefined = require('../lib/isUndefined'); var a; var b = 'undefined'; var c = null; isUndefined(a).should.be.true; isUndefined(b).should.be.false; isUndefined(c).should.be.false; }); }); })