mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-11 11:27:50 +00:00
Add more _.assign, _.defaults, _.merge, and _.transform tests.
This commit is contained in:
79
test/test.js
79
test/test.js
@@ -1826,7 +1826,7 @@
|
|||||||
deepEqual(actual, ['a', 'b', 'c']);
|
deepEqual(actual, ['a', 'b', 'c']);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('`_.' + methodName + '` should produce an object from the same realm as `value`', 1, function() {
|
test('`_.' + methodName + '` should create an object from the same realm as `value`', 1, function() {
|
||||||
var objects = _.transform(_, function(result, value, key) {
|
var objects = _.transform(_, function(result, value, key) {
|
||||||
if (_.startsWith(key, '_') && _.isObject(value) && !_.isArguments(value) && !_.isElement(value) && !_.isFunction(value)) {
|
if (_.startsWith(key, '_') && _.isObject(value) && !_.isArguments(value) && !_.isElement(value) && !_.isFunction(value)) {
|
||||||
result.push(value);
|
result.push(value);
|
||||||
@@ -4559,8 +4559,12 @@
|
|||||||
_.each(['assign', 'defaults', 'merge'], function(methodName) {
|
_.each(['assign', 'defaults', 'merge'], function(methodName) {
|
||||||
var func = _[methodName];
|
var func = _[methodName];
|
||||||
|
|
||||||
test('`_.' + methodName + '` should return `undefined` when no destination object is provided', 1, function() {
|
test('`_.' + methodName + '` should pass thru falsey `object` values', 1, function() {
|
||||||
strictEqual(func(), undefined);
|
var actual = _.map(falsey, function(value, index) {
|
||||||
|
return index ? func(value) : func();
|
||||||
|
});
|
||||||
|
|
||||||
|
deepEqual(actual, falsey);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('`_.' + methodName + '` should not assign inherited `source` properties', 1, function() {
|
test('`_.' + methodName + '` should not assign inherited `source` properties', 1, function() {
|
||||||
@@ -11585,19 +11589,48 @@
|
|||||||
QUnit.module('lodash.transform');
|
QUnit.module('lodash.transform');
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
test('should produce an object with the same `[[Prototype]]` as `object`', 2, function() {
|
test('should create an object with the same `[[Prototype]]` as `object` when `accumulator` is `null` or `undefined`', 4, function() {
|
||||||
function Foo() {
|
function Foo() {
|
||||||
this.a = 1;
|
this.a = 1;
|
||||||
this.b = 2;
|
this.b = 2;
|
||||||
this.c = 3;
|
this.c = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
var actual = _.transform(new Foo, function(result, value, key) {
|
var accumulators = [, null, undefined],
|
||||||
|
expected = _.map(accumulators, _.constant(true)),
|
||||||
|
object = new Foo;
|
||||||
|
|
||||||
|
var iteratee = function(result, value, key) {
|
||||||
result[key] = value * value;
|
result[key] = value * value;
|
||||||
|
};
|
||||||
|
|
||||||
|
var mapper = function(accumulator, index) {
|
||||||
|
return index ? _.transform(object, iteratee, accumulator) : _.transform(object, iteratee);
|
||||||
|
};
|
||||||
|
|
||||||
|
var results = _.map(accumulators, mapper);
|
||||||
|
|
||||||
|
var actual = _.map(results, function(result) {
|
||||||
|
return result instanceof Foo;
|
||||||
});
|
});
|
||||||
|
|
||||||
ok(actual instanceof Foo);
|
deepEqual(actual, expected);
|
||||||
deepEqual(_.clone(actual), { 'a': 1, 'b': 4, 'c': 9 });
|
|
||||||
|
expected = _.map(accumulators, _.constant({ 'a': 1, 'b': 4, 'c': 9 }));
|
||||||
|
actual = _.map(results, _.clone);
|
||||||
|
|
||||||
|
deepEqual(actual, expected);
|
||||||
|
|
||||||
|
object = { 'a': 1, 'b': 2, 'c': 3 };
|
||||||
|
actual = _.map(accumulators, mapper);
|
||||||
|
|
||||||
|
deepEqual(actual, expected);
|
||||||
|
|
||||||
|
object = [1, 2, 3];
|
||||||
|
expected = _.map(accumulators, _.constant([1, 4, 9]));
|
||||||
|
actual = _.map(accumulators, mapper);
|
||||||
|
|
||||||
|
deepEqual(actual, expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should treat sparse arrays as dense', 1, function() {
|
test('should treat sparse arrays as dense', 1, function() {
|
||||||
@@ -11613,8 +11646,34 @@
|
|||||||
ok(_.transform(new Foo) instanceof Foo);
|
ok(_.transform(new Foo) instanceof Foo);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should check that `object` is an object before using its `[[Prototype]]`', 1, function() {
|
test('should check that `object` is an object before using its `[[Prototype]]`', 2, function() {
|
||||||
ok(!(_.transform(1) instanceof Number));
|
var Ctors = [Boolean, Boolean, Number, Number, Number, String, String],
|
||||||
|
values = [true, false, 0, 1, NaN, '', 'a'],
|
||||||
|
expected = _.map(values, _.constant({}));
|
||||||
|
|
||||||
|
var results = _.map(values, function(value, index) {
|
||||||
|
return index ? _.transform(value) : _.transform();
|
||||||
|
});
|
||||||
|
|
||||||
|
deepEqual(results, expected);
|
||||||
|
|
||||||
|
expected = _.map(values, _.constant(false));
|
||||||
|
|
||||||
|
var actual = _.map(results, function(value, index) {
|
||||||
|
return value instanceof Ctors[index];
|
||||||
|
});
|
||||||
|
|
||||||
|
deepEqual(actual, expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should create an empty object when provided a falsey `object` argument', 1, function() {
|
||||||
|
var expected = _.map(falsey, _.constant({}));
|
||||||
|
|
||||||
|
var actual = _.map(falsey, function(value, index) {
|
||||||
|
return index ? _.transform(value) : _.transform();
|
||||||
|
});
|
||||||
|
|
||||||
|
deepEqual(actual, expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
_.each({
|
_.each({
|
||||||
@@ -11649,7 +11708,7 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should produce an object from the same realm as `object`', 1, function() {
|
test('should create an object from the same realm as `object`', 1, function() {
|
||||||
var objects = _.transform(_, function(result, value, key) {
|
var objects = _.transform(_, function(result, value, key) {
|
||||||
if (_.startsWith(key, '_') && _.isObject(value) && !_.isElement(value)) {
|
if (_.startsWith(key, '_') && _.isObject(value) && !_.isElement(value)) {
|
||||||
result.push(value);
|
result.push(value);
|
||||||
|
|||||||
Reference in New Issue
Block a user