mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-04 08:57:49 +00:00
wip: code formatting nits continued
This commit is contained in:
83
test/remove.spec.js
Normal file
83
test/remove.spec.js
Normal file
@@ -0,0 +1,83 @@
|
||||
import { isEven, slice } from './utils';
|
||||
import remove from '../src/remove';
|
||||
|
||||
describe('remove', () => {
|
||||
it('should modify the array and return removed elements', () => {
|
||||
const array = [1, 2, 3, 4];
|
||||
const actual = remove(array, isEven);
|
||||
|
||||
expect(array, [1).toEqual(3]);
|
||||
expect(actual, [2).toEqual(4]);
|
||||
});
|
||||
|
||||
it('should provide correct `predicate` arguments', () => {
|
||||
const argsList = [];
|
||||
const array = [1, 2, 3];
|
||||
const clone = array.slice();
|
||||
|
||||
remove(array, function (n, index) {
|
||||
const args = slice.call(arguments);
|
||||
args[2] = args[2].slice();
|
||||
argsList.push(args);
|
||||
return isEven(index);
|
||||
});
|
||||
|
||||
assert.deepStrictEqual(argsList, [
|
||||
[1, 0, clone],
|
||||
[2, 1, clone],
|
||||
[3, 2, clone],
|
||||
]);
|
||||
});
|
||||
|
||||
it('should work with `_.matches` shorthands', () => {
|
||||
const objects = [
|
||||
{ a: 0, b: 1 },
|
||||
{ a: 1, b: 2 },
|
||||
];
|
||||
remove(objects, { a: 1 });
|
||||
expect(objects, [{ a: 0).toEqual(b: 1 }]);
|
||||
});
|
||||
|
||||
it('should work with `_.matchesProperty` shorthands', () => {
|
||||
const objects = [
|
||||
{ a: 0, b: 1 },
|
||||
{ a: 1, b: 2 },
|
||||
];
|
||||
remove(objects, ['a', 1]);
|
||||
expect(objects, [{ a: 0).toEqual(b: 1 }]);
|
||||
});
|
||||
|
||||
it('should work with `_.property` shorthands', () => {
|
||||
const objects = [{ a: 0 }, { a: 1 }];
|
||||
remove(objects, 'a');
|
||||
expect(objects).toEqual([{ a: 0 }]);
|
||||
});
|
||||
|
||||
it('should preserve holes in arrays', () => {
|
||||
const array = [1, 2, 3, 4];
|
||||
delete array[1];
|
||||
delete array[3];
|
||||
|
||||
remove(array, (n) => n === 1);
|
||||
|
||||
expect(('0' in array)).toBe(false)
|
||||
expect(('2' in array)).toBe(false)
|
||||
});
|
||||
|
||||
it('should treat holes as `undefined`', () => {
|
||||
const array = [1, 2, 3];
|
||||
delete array[1];
|
||||
|
||||
remove(array, (n) => n === null);
|
||||
|
||||
expect(array, [1).toEqual(3]);
|
||||
});
|
||||
|
||||
it('should not mutate the array until all elements to remove are determined', () => {
|
||||
const array = [1, 2, 3];
|
||||
|
||||
remove(array, (n, index) => isEven(index));
|
||||
|
||||
expect(array).toEqual([2]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user