From 80939448a70ee494a562aacc055228bce6d893c6 Mon Sep 17 00:00:00 2001 From: Jeremy Ashkenas Date: Thu, 12 Nov 2009 21:31:03 -0500 Subject: [PATCH] fixing broken _.breakLoop test -- implementation was fine, test was out of date. --- test/collections.js | 74 ++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/test/collections.js b/test/collections.js index 1a6f5992d..c0bfe1ee8 100644 --- a/test/collections.js +++ b/test/collections.js @@ -1,89 +1,89 @@ $(document).ready(function() { - + module("Collection functions (each, any, select, and so on...)"); - + test("collections: each", function() { _.each([1, 2, 3], function(num, i) { equals(num, i + 1, 'each iterators provide value and iteration count'); }); - + var answer = null; - _.each([1, 2, 3], function(num){ if ((answer = num) == 2) throw '__break__'; }); + _.each([1, 2, 3], function(num){ if ((answer = num) == 2) _.breakLoop(); }); equals(answer, 2, 'the loop broke in the middle'); - + var answers = []; _.each([1, 2, 3], function(num){ answers.push(num * this.multiplier);}, {multiplier : 5}); equals(answers.join(', '), '5, 10, 15', 'context object property accessed'); - + answers = []; _.each("moe", function(letter){ answers.push(letter); }); equals(answers.join(', '), 'm, o, e', 'iterates over the letters in strings'); - + answers = []; _.forEach([1, 2, 3], function(num){ answers.push(num); }); equals(answers.join(', '), '1, 2, 3', 'aliased as "forEach"'); - + answers = []; var obj = {one : 1, two : 2, three : 3}; obj.constructor.prototype.four = 4; _.each(obj, function(value, key){ answers.push(key); }); equals(answers.join(", "), 'one, two, three', 'iterating over objects works, and ignores the object prototype.'); delete obj.constructor.prototype.four; - + answer = null; _.each([1, 2, 3], function(num, index, arr){ if (_.include(arr, num)) answer = true; }); - ok(answer, 'can reference the original collection from inside the iterator'); + ok(answer, 'can reference the original collection from inside the iterator'); }); - + test('collections: map', function() { var doubled = _.map([1, 2, 3], function(num){ return num * 2; }); equals(doubled.join(', '), '2, 4, 6', 'doubled numbers'); - + var tripled = _.map([1, 2, 3], function(num){ return num * this.multiplier; }, {multiplier : 3}); equals(tripled.join(', '), '3, 6, 9', 'tripled numbers with context'); - + var doubled = _([1, 2, 3]).map(function(num){ return num * 2; }); equals(doubled.join(', '), '2, 4, 6', 'OO-style doubled numbers'); }); - + test('collections: reduce', function() { var sum = _.reduce([1, 2, 3], 0, function(sum, num){ return sum + num; }); equals(sum, 6, 'can sum up an array'); - + var context = {multiplier : 3}; sum = _.reduce([1, 2, 3], 0, function(sum, num){ return sum + num * this.multiplier; }, context); equals(sum, 18, 'can reduce with a context object'); - + sum = _.inject([1, 2, 3], 0, function(sum, num){ return sum + num; }); equals(sum, 6, 'aliased as "inject"'); - + sum = _([1, 2, 3]).reduce(0, function(sum, num){ return sum + num; }); equals(sum, 6, 'OO-style reduce'); }); - + test('collections: reduceRight', function() { var list = _.foldr([1, 2, 3], '', function(memo, num){ return memo + num; }); equals(list, '321', 'can perform right folds'); }); - + test('collections: detect', function() { var result = _.detect([1, 2, 3], function(num){ return num * 2 == 4; }); equals(result, 2, 'found the first "2" and broke the loop'); }); - + test('collections: select', function() { var evens = _.select([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }); equals(evens.join(', '), '2, 4, 6', 'selected each even number'); - + evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }); equals(evens.join(', '), '2, 4, 6', 'aliased as "filter"'); }); - + test('collections: reject', function() { var odds = _.reject([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }); equals(odds.join(', '), '1, 3, 5', 'rejected each even number'); }); - + test('collections: all', function() { ok(_.all([]), 'the empty set'); ok(_.all([true, true, true]), 'all true values'); @@ -92,7 +92,7 @@ $(document).ready(function() { ok(!_.all([0, 11, 28], function(num){ return num % 2 == 0; }), 'an odd number'); ok(_.every([true, true, true]), 'aliased as "every"'); }); - + test('collections: any', function() { ok(!_.any([]), 'the empty set'); ok(!_.any([false, false, false]), 'all false values'); @@ -101,62 +101,62 @@ $(document).ready(function() { ok(_.any([1, 10, 29], function(num){ return num % 2 == 0; }), 'an even number'); ok(_.some([false, false, true]), 'aliased as "some"'); }); - + test('collections: include', function() { ok(_.include([1,2,3], 2), 'two is in the array'); ok(!_.include([1,3,9], 2), 'two is not in the array'); ok(_.include({moe:1, larry:3, curly:9}, 3), '_.include on objects checks their values'); ok(_([1,2,3]).include(2), 'OO-style include'); }); - + test('collections: invoke', function() { var list = [[5, 1, 7], [3, 2, 1]]; var result = _.invoke(list, 'sort'); equals(result[0].join(', '), '1, 5, 7', 'first array sorted'); equals(result[1].join(', '), '1, 2, 3', 'second array sorted'); }); - + test('collections: pluck', function() { var people = [{name : 'moe', age : 30}, {name : 'curly', age : 50}]; equals(_.pluck(people, 'name').join(', '), 'moe, curly', 'pulls names out of objects'); }); - + test('collections: max', function() { equals(3, _.max([1, 2, 3]), 'can perform a regular Math.max'); - + var neg = _.max([1, 2, 3], function(num){ return -num; }); equals(neg, 1, 'can perform a computation-based max'); }); - + test('collections: min', function() { equals(1, _.min([1, 2, 3]), 'can perform a regular Math.min'); - + var neg = _.min([1, 2, 3], function(num){ return -num; }); equals(neg, 3, 'can perform a computation-based min'); }); - + test('collections: sortBy', function() { var people = [{name : 'curly', age : 50}, {name : 'moe', age : 30}]; people = _.sortBy(people, function(person){ return person.age; }); equals(_.pluck(people, 'name').join(', '), 'moe, curly', 'stooges sorted by age'); }); - + test('collections: sortedIndex', function() { var numbers = [10, 20, 30, 40, 50], num = 35; var index = _.sortedIndex(numbers, num); equals(index, 3, '35 should be inserted at index 3'); }); - + test('collections: toArray', function() { ok(!_.isArray(arguments), 'arguments object is not an array'); ok(_.isArray(_.toArray(arguments)), 'arguments object converted into array'); - + var numbers = _.toArray({one : 1, two : 2, three : 3}); equals(numbers.join(', '), '1, 2, 3', 'object flattened into array'); }); - + test('collections: size', function() { equals(_.size({one : 1, two : 2, three : 3}), 3, 'can compute the size of an object'); }); - + });