Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,40 +1,40 @@
const totalIntegers = require('./totalIntegers-solution');

describe('totalIntegers', () => {
test('Works with a simple array of numbers', () => {
test('Counts all integers in a simple array of only integers', () => {
expect(totalIntegers([1, 2, 3])).toBe(3);
});
test('Ignores non-integer values', () => {
test('Ignores non-number values', () => {
expect(totalIntegers([1, 2, '3', 4])).toBe(3);
});
test('Works with simple objects', () => {
test('Counts all integers in a plain object', () => {
expect(totalIntegers({ a: 1, b: '2', c: 3 })).toBe(2);
});
test('Works with an empty nested array', () => {
test('Does not find any integers in nested empty arrays', () => {
expect(totalIntegers([[], [], []])).toBe(0);
});
test('Works with a very nested array', () => {
test('Counts integers in deeply nested arrays', () => {
expect(totalIntegers([[[[[[[[[[[[[[4]]]]]], 246]]]]]]]])).toBe(2);
});
test('Works with negative numbers', () => {
test('Counts negative integers', () => {
expect(totalIntegers([5, 7, -7, [45, -1, -0], [4, 7, -4, -4, -4, [777777, -45674]], [-5477654]])).toBe(14);
});
test('Works with floats', () => {
test('Does not count non-integer numbers', () => {
expect(totalIntegers([5, 7.7, 7, [45, 1, 0], [4.0, 7, [7.77777, 4567.4]], [5477.654]])).toBe(7);
});
test('Only accepts arrays or objects', () => {
test('Returns undefined for non-array/object arguments', () => {
expect(totalIntegers('2')).toBe(undefined);
expect(totalIntegers(() => {})).toBe(undefined);
expect(totalIntegers(42)).toBe(undefined);
expect(totalIntegers(NaN)).toBe(undefined);
});
test('Works with NaN', () => {
test('Does not count NaN as an integer', () => {
expect(totalIntegers([5, NaN, [NaN, NaN, 64], 4])).toBe(3);
});
test('Works with a nested array of all kinds of things', () => {
test('Counts all integers even with deeply nested containing multiple types', () => {
expect(totalIntegers([NaN, [[{}], 555 ], '444', [], 74.0, undefined, [[() => {}], [4], Infinity, [[[], -44.0], [null, '-4'], NaN [[]], 6]], () => {}, [[], [-Infinity, ['4'], [4.7, -46.7], NaN]]])).toBe(5);
});
test('Works with arrays containing objects containing integers', () => {
test('Counts all integers when nested arrays and objects are mixed together', () => {
expect(totalIntegers([4, 6, { a: 1, b: { a: [5, 10], b: 11 } }, 9])).toBe(7);
});
});
22 changes: 11 additions & 11 deletions computer_science/recursion/3_totalIntegers/totalIntegers.spec.js
Original file line number Diff line number Diff line change
@@ -1,50 +1,50 @@
const totalIntegers = require('./totalIntegers');

describe('totalIntegers', () => {
test('Works with a simple array of numbers', () => {
test('Counts all integers in a simple array of only integers', () => {
expect(totalIntegers([1, 2, 3])).toBe(3);
});

test.skip('Ignores non-integer values', () => {
test.skip('Ignores non-number values', () => {
expect(totalIntegers([1, 2, '3', 4])).toBe(3);
});

test.skip('Works with simple objects', () => {
test.skip('Counts all integers in a plain object', () => {
expect(totalIntegers({ a: 1, b: '2', c: 3 })).toBe(2);
});

test.skip('Works with an empty nested array', () => {
test.skip('Does not find any integers in nested empty arrays', () => {
expect(totalIntegers([[], [], []])).toBe(0);
});

test.skip('Works with a very nested array', () => {
test.skip('Counts integers in deeply nested arrays', () => {
expect(totalIntegers([[[[[[[[[[[[[[4]]]]]], 246]]]]]]]])).toBe(2);
});

test.skip('Works with negative numbers', () => {
test.skip('Counts negative integers', () => {
expect(totalIntegers([5, 7, -7, [45, -1, -0], [4, 7, -4, -4, -4, [777777, -45674]], [-5477654]])).toBe(14);
});

test.skip('Works with floats', () => {
test.skip('Does not count non-integer numbers', () => {
expect(totalIntegers([5, 7.7, 7, [45, 1, 0], [4.0, 7, [7.77777, 4567.4]], [5477.654]])).toBe(7);
});

test.skip('Only accepts arrays or objects', () => {
test.skip('Returns undefined for non-array/object arguments', () => {
expect(totalIntegers('2')).toBe(undefined);
expect(totalIntegers(() => {})).toBe(undefined);
expect(totalIntegers(42)).toBe(undefined);
expect(totalIntegers(NaN)).toBe(undefined);
});

test.skip('Works with NaN', () => {
test.skip('Does not count NaN as an integer', () => {
expect(totalIntegers([5, NaN, [NaN, NaN, 64], 4])).toBe(3);
});

test.skip('Works with a nested array of all kinds of things', () => {
test.skip('Counts all integers even with deeply nested containing multiple types', () => {
expect(totalIntegers([NaN, [[{}], 555 ], '444', [], 74.0, undefined, [[() => {}], [4], Infinity, [[[], -44.0], [null, '-4'], NaN [[]], 6]], () => {}, [[], [-Infinity, ['4'], [4.7, -46.7], NaN]]])).toBe(5);
});

test.skip('Works with arrays containing objects containing integers', () => {
test.skip('Counts all integers when nested arrays and objects are mixed together', () => {
expect(totalIntegers([4, 6, { a: 1, b: { a: [5, 10], b: 11 } }, 9])).toBe(7);
});
});