mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-08 02:17:48 +00:00
Fix typo and add lazy tests.
This commit is contained in:
@@ -4821,7 +4821,7 @@
|
|||||||
if (doneDropping) {
|
if (doneDropping) {
|
||||||
result[resIndex++] = value;
|
result[resIndex++] = value;
|
||||||
} else {
|
} else {
|
||||||
doneDropping = ++droppedCount < dropCount;
|
doneDropping = ++droppedCount >= dropCount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return isRight ? result.reverse() : result;
|
return isRight ? result.reverse() : result;
|
||||||
@@ -9957,7 +9957,9 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
LazyWrapper.prototype[methodName + 'RightWhile'] = function(predicate, thisArg) {
|
LazyWrapper.prototype[methodName + 'RightWhile'] = function(predicate, thisArg) {
|
||||||
return this.reverse()[whileName](predicate, thisArg).reverse();
|
var result = this.reverse()[whileName](predicate, thisArg);
|
||||||
|
result.filtered = true;
|
||||||
|
return result.reverse();
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
87
test/test.js
87
test/test.js
@@ -295,33 +295,6 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the unwrapped value from its wrapper.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Object} wrapped The value to unwrap.
|
|
||||||
* @returns {*} Returns the unwrapped value.
|
|
||||||
*/
|
|
||||||
function getUnwrappedValue(wrapped) {
|
|
||||||
if (typeof wrapped.value == 'function') {
|
|
||||||
return wrapped.value();
|
|
||||||
}
|
|
||||||
var index = -1,
|
|
||||||
queue = wrapped.__queue__,
|
|
||||||
length = queue.length,
|
|
||||||
result = wrapped.__wrapped__;
|
|
||||||
|
|
||||||
while (++index < length) {
|
|
||||||
var args = [result],
|
|
||||||
data = queue[index],
|
|
||||||
object = data[1];
|
|
||||||
|
|
||||||
push.apply(args, data[2]);
|
|
||||||
result = object[data[0]].apply(object, args);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a non-enumerable property value on `object`.
|
* Sets a non-enumerable property value on `object`.
|
||||||
*
|
*
|
||||||
@@ -805,7 +778,7 @@
|
|||||||
if (lodashBizarro) {
|
if (lodashBizarro) {
|
||||||
var actual = _.map(values, function(value) {
|
var actual = _.map(values, function(value) {
|
||||||
var wrapped = _(lodashBizarro(value)),
|
var wrapped = _(lodashBizarro(value)),
|
||||||
unwrapped = getUnwrappedValue(wrapped);
|
unwrapped = wrapped.value();
|
||||||
|
|
||||||
return wrapped instanceof _ &&
|
return wrapped instanceof _ &&
|
||||||
(unwrapped === value || (_.isNaN(unwrapped) && _.isNaN(value)));
|
(unwrapped === value || (_.isNaN(unwrapped) && _.isNaN(value)));
|
||||||
@@ -3109,6 +3082,16 @@
|
|||||||
skipTest(2);
|
skipTest(2);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should work in a lazy chain sequence', 1, function() {
|
||||||
|
if (!isNpm) {
|
||||||
|
var actual = _(array).filter(function(value) {return value > 1; }).drop(1).value();
|
||||||
|
deepEqual(actual, [3]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
skipTest(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
}());
|
}());
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
@@ -3163,6 +3146,16 @@
|
|||||||
skipTest(2);
|
skipTest(2);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should work in a lazy chain sequence', 1, function() {
|
||||||
|
if (!isNpm) {
|
||||||
|
var actual = _(array).filter(function(value) {return value < 3; }).dropRight(1).value();
|
||||||
|
deepEqual(actual, [1]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
skipTest(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
}());
|
}());
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
@@ -7849,9 +7842,9 @@
|
|||||||
QUnit.module('lodash.mixin');
|
QUnit.module('lodash.mixin');
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
function wrapper(value) {
|
function Wrapper(value) {
|
||||||
if (!(this instanceof wrapper)) {
|
if (!(this instanceof Wrapper)) {
|
||||||
return new wrapper(value);
|
return new Wrapper(value);
|
||||||
}
|
}
|
||||||
if (_.has(value, '__wrapped__')) {
|
if (_.has(value, '__wrapped__')) {
|
||||||
var chain = value.__chain__,
|
var chain = value.__chain__,
|
||||||
@@ -7864,7 +7857,7 @@
|
|||||||
this.__wrapped__ = value;
|
this.__wrapped__ = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
wrapper.prototype.value = _.prototype.value;
|
Wrapper.prototype.value = _.prototype.value;
|
||||||
|
|
||||||
var value = ['a'],
|
var value = ['a'],
|
||||||
source = { 'a': function(array) { return array[0]; }, 'b': 'B' };
|
source = { 'a': function(array) { return array[0]; }, 'b': 'B' };
|
||||||
@@ -7873,7 +7866,7 @@
|
|||||||
_.mixin(source);
|
_.mixin(source);
|
||||||
|
|
||||||
strictEqual(_.a(value), 'a');
|
strictEqual(_.a(value), 'a');
|
||||||
strictEqual(getUnwrappedValue(_(value).a()), 'a');
|
strictEqual(_(value).a().value(), 'a');
|
||||||
|
|
||||||
delete _.a;
|
delete _.a;
|
||||||
delete _.prototype.a;
|
delete _.prototype.a;
|
||||||
@@ -7894,10 +7887,10 @@
|
|||||||
ok(!('a' in _));
|
ok(!('a' in _));
|
||||||
ok(!('a' in _.prototype));
|
ok(!('a' in _.prototype));
|
||||||
|
|
||||||
delete wrapper.a;
|
delete Wrapper.a;
|
||||||
delete wrapper.prototype.a;
|
delete Wrapper.prototype.a;
|
||||||
delete wrapper.b;
|
delete Wrapper.b;
|
||||||
delete wrapper.prototype.b;
|
delete Wrapper.prototype.b;
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should accept an `object` argument', 1, function() {
|
test('should accept an `object` argument', 1, function() {
|
||||||
@@ -7913,18 +7906,18 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('should work with a function for `object`', 2, function() {
|
test('should work with a function for `object`', 2, function() {
|
||||||
_.mixin(wrapper, source);
|
_.mixin(Wrapper, source);
|
||||||
|
|
||||||
var wrapped = wrapper(value),
|
var wrapped = Wrapper(value),
|
||||||
actual = wrapped.a();
|
actual = wrapped.a();
|
||||||
|
|
||||||
strictEqual(getUnwrappedValue(actual), 'a');
|
strictEqual(actual.value(), 'a');
|
||||||
ok(actual instanceof wrapper);
|
ok(actual instanceof Wrapper);
|
||||||
|
|
||||||
delete wrapper.a;
|
delete Wrapper.a;
|
||||||
delete wrapper.prototype.a;
|
delete Wrapper.prototype.a;
|
||||||
delete wrapper.b;
|
delete Wrapper.b;
|
||||||
delete wrapper.prototype.b;
|
delete Wrapper.prototype.b;
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should not assign inherited `source` properties', 1, function() {
|
test('should not assign inherited `source` properties', 1, function() {
|
||||||
@@ -7939,7 +7932,7 @@
|
|||||||
return (func === _ ? 'lodash' : 'provided') + ' function should ' + (chain ? '' : 'not ') + 'chain';
|
return (func === _ ? 'lodash' : 'provided') + ' function should ' + (chain ? '' : 'not ') + 'chain';
|
||||||
}
|
}
|
||||||
|
|
||||||
_.each([_, wrapper], function(func) {
|
_.each([_, Wrapper], function(func) {
|
||||||
_.each([false, true, { 'chain': false }, { 'chain': true }], function(options) {
|
_.each([false, true, { 'chain': false }, { 'chain': true }], function(options) {
|
||||||
if (!isNpm) {
|
if (!isNpm) {
|
||||||
if (func === _) {
|
if (func === _) {
|
||||||
@@ -8002,7 +7995,7 @@
|
|||||||
|
|
||||||
test('should not return the existing wrapped value when chaining', 2, function() {
|
test('should not return the existing wrapped value when chaining', 2, function() {
|
||||||
if (!isNpm) {
|
if (!isNpm) {
|
||||||
_.each([_, wrapper], function(func) {
|
_.each([_, Wrapper], function(func) {
|
||||||
if (func === _) {
|
if (func === _) {
|
||||||
var wrapped = _(source),
|
var wrapped = _(source),
|
||||||
actual = wrapped.mixin();
|
actual = wrapped.mixin();
|
||||||
|
|||||||
Reference in New Issue
Block a user