Update vendor/benchmark.js and vendor/underscore tests.

Former-commit-id: 28d47ac7efb1af2d23a749ea50178c09edfe62bd
This commit is contained in:
John-David Dalton
2013-08-03 21:33:58 -07:00
parent 76dcd7d96e
commit a9bf6a0e3b
4 changed files with 25 additions and 17 deletions

View File

@@ -118,7 +118,7 @@
// Avoid issues with some ES3 environments that attempt to use values, named // Avoid issues with some ES3 environments that attempt to use values, named
// after built-in constructors like `Object`, for the creation of literals. // after built-in constructors like `Object`, for the creation of literals.
// ES5 clears this up by stating that literals must use built-in constructors. // ES5 clears this up by stating that literals must use built-in constructors.
// See http://es5.github.com/#x11.1.5. // See http://es5.github.io/#x11.1.5.
context = context ? _.defaults(window.Object(), context, _.pick(window, contextProps)) : window; context = context ? _.defaults(window.Object(), context, _.pick(window, contextProps)) : window;
/** Native constructor references */ /** Native constructor references */
@@ -131,8 +131,8 @@
String = context.String; String = context.String;
/** Used for `Array` and `Object` method references */ /** Used for `Array` and `Object` method references */
var arrayRef = Array(), var arrayRef = [],
objectRef = Object(); objectProto = Object.prototype;
/** Native method shortcuts */ /** Native method shortcuts */
var abs = Math.abs, var abs = Math.abs,
@@ -147,7 +147,7 @@
shift = arrayRef.shift, shift = arrayRef.shift,
slice = arrayRef.slice, slice = arrayRef.slice,
sqrt = Math.sqrt, sqrt = Math.sqrt,
toString = objectRef.toString; toString = objectProto.toString;
/** Detect DOM document object */ /** Detect DOM document object */
var doc = isHostType(context, 'document') && context.document; var doc = isHostType(context, 'document') && context.document;
@@ -704,20 +704,20 @@
* A helper function for setting options/event handlers. * A helper function for setting options/event handlers.
* *
* @private * @private
* @param {Object} bench The benchmark instance. * @param {Object} object The benchmark or suite instance.
* @param {Object} [options={}] Options object. * @param {Object} [options={}] Options object.
*/ */
function setOptions(bench, options) { function setOptions(object, options) {
options = _.extend({}, bench.constructor.options, options); options = _.extend({}, object.constructor.options, options);
bench.options = _.forOwn(options, function(value, key) { object.options = _.forOwn(options, function(value, key) {
if (value != null) { if (value != null) {
// add event listeners // add event listeners
if (/^on[A-Z]/.test(key)) { if (/^on[A-Z]/.test(key)) {
_.each(key.split(' '), function(key) { _.each(key.split(' '), function(key) {
bench.on(key.slice(2).toLowerCase(), value); object.on(key.slice(2).toLowerCase(), value);
}); });
} else if (!_.has(bench, key)) { } else if (!_.has(object, key)) {
bench[key] = cloneDeep(value); object[key] = cloneDeep(value);
} }
} }
}); });

View File

@@ -107,6 +107,8 @@ $(document).ready(function() {
equal(_(stooges).intersection(leaders).join(''), 'moe', 'can perform an OO-style intersection'); equal(_(stooges).intersection(leaders).join(''), 'moe', 'can perform an OO-style intersection');
var result = (function(){ return _.intersection(arguments, leaders); })('moe', 'curly', 'larry'); var result = (function(){ return _.intersection(arguments, leaders); })('moe', 'curly', 'larry');
equal(result.join(''), 'moe', 'works on an arguments object'); equal(result.join(''), 'moe', 'works on an arguments object');
var theSixStooges = ['moe', 'moe', 'curly', 'curly', 'larry', 'larry'];
equal(_.intersection(theSixStooges, leaders).join(''), 'moe', 'returns a duplicate-free array');
}); });
test("union", function() { test("union", function() {

View File

@@ -274,6 +274,12 @@ $(document).ready(function() {
deepEqual(result, {a: 1, b: 2}); deepEqual(result, {a: 1, b: 2});
result = _.findWhere(list, {b: 4}); result = _.findWhere(list, {b: 4});
deepEqual(result, {a: 1, b: 4}); deepEqual(result, {a: 1, b: 4});
result = _.findWhere(list, {c:1})
ok(_.isUndefined(result), "undefined when not found");
result = _.findWhere([], {c:1});
ok(_.isUndefined(result), "undefined when searching empty list");
}); });
test('max', function() { test('max', function() {

View File

@@ -159,14 +159,14 @@ $(document).ready(function() {
asyncTest("throttle repeatedly with results", 6, function() { asyncTest("throttle repeatedly with results", 6, function() {
var counter = 0; var counter = 0;
var incr = function(){ return ++counter; }; var incr = function(){ return ++counter; };
var throttledIncr = _.throttle(incr, 64); var throttledIncr = _.throttle(incr, 100);
var results = []; var results = [];
var saveResult = function() { results.push(throttledIncr()); }; var saveResult = function() { results.push(throttledIncr()); };
saveResult(); saveResult(); saveResult(); saveResult();
_.delay(saveResult, 32); _.delay(saveResult, 50);
_.delay(saveResult, 80); _.delay(saveResult, 150);
_.delay(saveResult, 96); _.delay(saveResult, 160);
_.delay(saveResult, 144); _.delay(saveResult, 230);
_.delay(function() { _.delay(function() {
equal(results[0], 1, "incr was called once"); equal(results[0], 1, "incr was called once");
equal(results[1], 1, "incr was throttled"); equal(results[1], 1, "incr was throttled");
@@ -175,7 +175,7 @@ $(document).ready(function() {
equal(results[4], 2, "incr was throttled"); equal(results[4], 2, "incr was throttled");
equal(results[5], 3, "incr was called trailing"); equal(results[5], 3, "incr was called trailing");
start(); start();
}, 192); }, 300);
}); });
asyncTest("throttle triggers trailing call when invoked repeatedly", 2, function() { asyncTest("throttle triggers trailing call when invoked repeatedly", 2, function() {