$(document).ready(function() { var templateSettings; module("Utility", { setup: function() { templateSettings = _.clone(_.templateSettings); }, teardown: function() { _.templateSettings = templateSettings; } }); test("#750 - Return _ instance.", 2, function() { var instance = _([]); ok(_(instance) === instance); ok(new _(instance) === instance); }); test("identity", function() { var moe = {name : 'moe'}; equal(_.identity(moe), moe, 'moe is the same as his identity'); }); test("random", function() { var array = _.range(1000); var min = Math.pow(2, 31); var max = Math.pow(2, 62); ok(_.every(array, function() { return _.random(min, max) >= min; }), "should produce a random number greater than or equal to the minimum number"); ok(_.some(array, function() { return _.random(Number.MAX_VALUE) > 0; }), "should produce a random number when passed `Number.MAX_VALUE`"); }); test("uniqueId", function() { var ids = [], i = 0; while(i++ < 100) ids.push(_.uniqueId()); equal(_.uniq(ids).length, ids.length, 'can generate a globally-unique stream of ids'); }); test("times", function() { var vals = []; _.times(3, function (i) { vals.push(i); }); ok(_.isEqual(vals, [0,1,2]), "is 0 indexed"); // vals = []; _(3).times(function(i) { vals.push(i); }); ok(_.isEqual(vals, [0,1,2]), "works as a wrapper"); // collects return values ok(_.isEqual([0, 1, 2], _.times(3, function(i) { return i; })), "collects return values"); deepEqual(_.times(0, _.identity), []); deepEqual(_.times(-1, _.identity), []); deepEqual(_.times(parseFloat('-Infinity'), _.identity), []); }); test("mixin", function() { _.mixin({ myReverse: function(string) { return string.split('').reverse().join(''); } }); equal(_.myReverse('panacea'), 'aecanap', 'mixed in a function to _'); equal(_('champ').myReverse(), 'pmahc', 'mixed in a function to the OOP wrapper'); }); test("_.escape", function() { equal(_.escape("Curly & Moe"), "Curly & Moe"); equal(_.escape('Curly & Moe\'s'), '<a href="http://moe.com">Curly & Moe's</a>'); equal(_.escape("Curly & Moe"), "Curly & Moe"); equal(_.escape(null), ''); }); test("_.unescape", function() { var string = "Curly & Moe"; equal(_.unescape("Curly & Moe"), string); equal(_.unescape('<a href="http://moe.com">Curly & Moe's</a>'), 'Curly & Moe\'s'); equal(_.unescape("Curly & Moe"), "Curly & Moe"); equal(_.unescape(null), ''); equal(_.unescape(_.escape(string)), string); }); test("template", function() { var basicTemplate = _.template("<%= thing %> is gettin' on my noives!"); var result = basicTemplate({thing : 'This'}); equal(result, "This is gettin' on my noives!", 'can do basic attribute interpolation'); var sansSemicolonTemplate = _.template("A <% this %> B"); equal(sansSemicolonTemplate(), "A B"); var backslashTemplate = _.template("<%= thing %> is \\ridanculous"); equal(backslashTemplate({thing: 'This'}), "This is \\ridanculous"); var escapeTemplate = _.template('<%= a ? "checked=\\"checked\\"" : "" %>'); equal(escapeTemplate({a: true}), 'checked="checked"', 'can handle slash escapes in interpolations.'); var fancyTemplate = _.template("
Just some text. Hey, I know this is silly but it aids consistency.
Just some text. Hey, I know this is silly but it aids consistency.