Skip to content

Commit 547428b

Browse files
committed
Merge pull request #2384 from captbaritone/test-cleanups-uniq
Clean up assertions for _.uniq()
2 parents a5c88b1 + 13e93b4 commit 547428b

File tree

1 file changed

+17
-29
lines changed

1 file changed

+17
-29
lines changed

test/arrays.js

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -143,53 +143,41 @@
143143
QUnit.test('uniq', function(assert) {
144144
var list = [1, 2, 1, 3, 1, 4];
145145
assert.deepEqual(_.uniq(list), [1, 2, 3, 4], 'can find the unique values of an unsorted array');
146-
147146
list = [1, 1, 1, 2, 2, 3];
148147
assert.deepEqual(_.uniq(list, true), [1, 2, 3], 'can find the unique values of a sorted array faster');
149148

150-
list = [{name: 'moe'}, {name: 'curly'}, {name: 'larry'}, {name: 'curly'}];
151-
var iterator = function(value) { return value.name; };
152-
assert.deepEqual(_.map(_.uniq(list, false, iterator), iterator), ['moe', 'curly', 'larry'], 'can find the unique values of an array using a custom iterator');
153-
154-
assert.deepEqual(_.map(_.uniq(list, iterator), iterator), ['moe', 'curly', 'larry'], 'can find the unique values of an array using a custom iterator without specifying whether array is sorted');
155-
156-
iterator = function(value) { return value + 1; };
157-
list = [1, 2, 2, 3, 4, 4];
158-
assert.deepEqual(_.uniq(list, true, iterator), [1, 2, 3, 4], 'iterator works with sorted array');
159-
160-
var kittens = [
161-
{kitten: 'Celery', cuteness: 8},
162-
{kitten: 'Juniper', cuteness: 10},
163-
{kitten: 'Spottis', cuteness: 10}
164-
];
165-
166-
var expected = [
167-
{kitten: 'Celery', cuteness: 8},
168-
{kitten: 'Juniper', cuteness: 10}
169-
];
149+
list = [{name: 'Moe'}, {name: 'Curly'}, {name: 'Larry'}, {name: 'Curly'}];
150+
var expected = [{name: 'Moe'}, {name: 'Curly'}, {name: 'Larry'}];
151+
var iterator = function(stooge) { return stooge.name; };
152+
assert.deepEqual(_.uniq(list, false, iterator), expected, 'uses the result of `iterator` for uniqueness comparisons (unsorted case)');
153+
assert.deepEqual(_.uniq(list, iterator), expected, '`sorted` argument defaults to false when omitted');
154+
assert.deepEqual(_.uniq(list, 'name'), expected, 'when `iterator` is a string, uses that key for comparisons (unsorted case)');
170155

171-
assert.deepEqual(_.uniq(kittens, true, 'cuteness'), expected, 'string iterator works with sorted array');
156+
list = [{score: 8}, {score: 10}, {score: 10}];
157+
expected = [{score: 8}, {score: 10}];
158+
iterator = function(item) { return item.score; };
159+
assert.deepEqual(_.uniq(list, true, iterator), expected, 'uses the result of `iterator` for uniqueness comparisons (sorted case)');
160+
assert.deepEqual(_.uniq(list, true, 'score'), expected, 'when `iterator` is a string, uses that key for comparisons (sorted case)');
172161

162+
assert.deepEqual(_.uniq([{0: 1}, {0: 1}, {0: 1}, {0: 2}], 0), [{0: 1}, {0: 2}], 'can use falsey pluck like iterator');
173163

174164
var result = (function(){ return _.uniq(arguments); }(1, 2, 1, 3, 1, 4));
175165
assert.deepEqual(result, [1, 2, 3, 4], 'works on an arguments object');
176166

177167
var a = {}, b = {}, c = {};
178168
assert.deepEqual(_.uniq([a, b, a, b, c]), [a, b, c], 'works on values that can be tested for equivalency but not ordered');
179169

180-
assert.deepEqual(_.uniq(null), []);
170+
assert.deepEqual(_.uniq(null), [], 'returns an empty array when `array` is not iterable');
181171

182172
var context = {};
183173
list = [3];
184174
_.uniq(list, function(value, index, array) {
185-
assert.strictEqual(this, context);
186-
assert.strictEqual(value, 3);
187-
assert.strictEqual(index, 0);
188-
assert.strictEqual(array, list);
175+
assert.strictEqual(this, context, 'executes its iterator in the given context');
176+
assert.strictEqual(value, 3, 'passes its iterator the value');
177+
assert.strictEqual(index, 0, 'passes its iterator the index');
178+
assert.strictEqual(array, list, 'passes its iterator the entire array');
189179
}, context);
190180

191-
assert.deepEqual(_.uniq([{a: 1, b: 1}, {a: 1, b: 2}, {a: 1, b: 3}, {a: 2, b: 1}], 'a'), [{a: 1, b: 1}, {a: 2, b: 1}], 'can use pluck like iterator');
192-
assert.deepEqual(_.uniq([{0: 1, b: 1}, {0: 1, b: 2}, {0: 1, b: 3}, {0: 2, b: 1}], 0), [{0: 1, b: 1}, {0: 2, b: 1}], 'can use falsey pluck like iterator');
193181
});
194182

195183
QUnit.test('unique', function(assert) {

0 commit comments

Comments
 (0)