diff --git a/lib/util.js b/lib/util.js index 04d56822..41549de0 100644 --- a/lib/util.js +++ b/lib/util.js @@ -1237,7 +1237,7 @@ exports.insertSort = function (a,compare) { a[j] = k; } return a; -} +}; /** diff --git a/test/util.test.js b/test/util.test.js index ce8336ce..84c163db 100644 --- a/test/util.test.js +++ b/test/util.test.js @@ -676,4 +676,169 @@ describe('mergeOptions', function () { assert.equal(util.getType(), 'undefined'); }); }); + + describe('easingFunctions', function () { + it('take a number and output a number', function () { + for (var key in util.easingFunctions) { + if (util.easingFunctions.hasOwnProperty(key)) { + assert.equal(typeof util.easingFunctions[key](1), 'number'); + assert.equal(typeof util.easingFunctions[key](0.2), 'number'); + } + } + }); + }); + + describe('getScrollBarWidth', function () { + beforeEach(function() { + this.jsdom_global = jsdom_global(); + }); + afterEach(function() { + this.jsdom_global(); + }); + it('returns 0 when there is no content', function () { + assert.equal(util.getScrollBarWidth(), 0); + }); + }); + + describe('equalArray', function () { + it('arrays of different lengths are not equal', function () { + assert.equal(util.equalArray([1, 2, 3], [1, 2]), false) + }); + it('arrays with different content are not equal', function () { + assert.equal(util.equalArray([1, 2, 3], [3, 2, 1]), false) + }); + it('same content arrays are equal', function () { + assert(util.equalArray([1, 2, 3], [1, 2, 3])) + }); + it('empty arrays are equal', function () { + assert(util.equalArray([], [])) + }); + it('the same array is equal', function () { + var arr = [1, 2, 3]; + assert(util.equalArray(arr, arr)) + }); + }); + + describe('asBoolean', function () { + it('resolves value from a function', function () { + assert(util.option.asBoolean(function () {return true}, false)); + }); + it('returns default value for null', function () { + assert(util.option.asBoolean(null, true)); + }); + it('returns true for other types', function () { + assert(util.option.asBoolean('should be true', false)); + }); + it('returns null for undefined', function () { + assert.equal(util.option.asBoolean(), null); + }); + }); + + describe('asNumber', function () { + it('resolves value from a function', function () { + assert.equal(util.option.asNumber(function () {return 777}, 13), 777); + }); + it('returns default value for null', function () { + assert.equal(util.option.asNumber(null, 13), 13); + }); + it('returns number for other types', function () { + assert.equal(util.option.asNumber('777', 13), 777); + }); + it('returns default for NaN', function () { + assert.equal(util.option.asNumber(NaN, 13), 13); + }); + it('returns null for undefined', function () { + assert.equal(util.option.asNumber(), null); + }); + }); + + describe('asString', function () { + it('resolves value from a function', function () { + assert.equal(util.option.asString(function () {return 'entered'}, 'default'), 'entered'); + }); + it('returns default value for null', function () { + assert.equal(util.option.asString(null, 'default'), 'default'); + }); + it('returns string for other types', function () { + assert.equal(util.option.asString(777, 'default'), '777'); + }); + it('returns default for undefined', function () { + assert.equal(util.option.asString(undefined, 'default'), 'default'); + }); + it('returns null for undefined', function () { + assert.equal(util.option.asString(), null); + }); + }); + + describe('asSize', function () { + it('resolves value from a function', function () { + assert.equal(util.option.asSize(function () {return '100px'}, '50px'), '100px'); + }); + it('returns default value for null', function () { + assert.equal(util.option.asSize(null, '50px'), '50px'); + }); + it('returns string with px for other number', function () { + assert.equal(util.option.asSize(100, '50px'), '100px'); + }); + it('returns default for undefined', function () { + assert.equal(util.option.asSize(undefined, '50px'), '50px'); + }); + it('returns null for undefined', function () { + assert.equal(util.option.asSize(), null); + }); + }); + + describe('asElement', function () { + before(function() { + this.jsdom_global = jsdom_global(); + this.value = document.createElement("div"); + this.defaultValue = document.createElement("div"); + }); + it('resolves value from a function', function () { + var me = this; + assert.equal(util.option.asElement(function () {return me.value}, this.defaultValue), this.value); + }); + it('returns Element', function () { + assert.equal(util.option.asElement(this.value, this.defaultValue), this.value); + }); + it('returns default value for null', function () { + assert.equal(util.option.asElement(null, this.defaultValue), this.defaultValue); + }); + it('returns null for undefined', function () { + assert.equal(util.option.asElement(), null); + }); + }); + + describe('binarySearchValue', function () { + it('Finds center target on odd sized array', function () { + assert.equal( + util.binarySearchValue( + [{id: 'a', val: 0}, {id: 'b', val: 1}, {id: 'c', val: 2}], + 1, + 'val' + ), + 1 + ); + }); + it('Finds target on odd sized array', function () { + assert.equal( + util.binarySearchValue( + [{id: 'a', val: 0}, {id: 'b', val: 1}, {id: 'c', val: 2}], + 2, + 'val' + ), + 2 + ); + }); + it('Cannot find target', function () { + assert.equal( + util.binarySearchValue( + [{id: 'a', val: 0}, {id: 'b', val: 1}, {id: 'c', val: 2}], + 7, + 'val' + ), + -1 + ); + }); + }); });