forked from TheAlgorithms/JavaScript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFindMinIterator.test.js
58 lines (51 loc) · 1.69 KB
/
FindMinIterator.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { FindMinIterator } from '../FindMinIterator'
describe('FindMinIterator', () => {
test('given empty array then min is undefined', () => {
expect(FindMinIterator([])).toBeUndefined()
})
test('given single value array then min is found', () => {
expect(FindMinIterator([1])).toBe(1)
expect(FindMinIterator([-1])).toBe(-1)
expect(FindMinIterator([0])).toBe(0)
})
test('given array then min is found', () => {
expect(FindMinIterator([1, 2])).toBe(1)
expect(FindMinIterator([-1, 10])).toBe(-1)
expect(FindMinIterator([0, 100])).toBe(0)
expect(FindMinIterator([100, 0])).toBe(0)
expect(
FindMinIterator([100, 50, 20, 0, -100, 0, 2, 30, 45, 99, 104, 23])
).toBe(-100)
})
test('given empty generator then min is undefined', () => {
const src = function* () {} // eslint-disable-line
expect(FindMinIterator(src())).toBeUndefined()
})
test('given generator then min is found', () => {
const src = function* () {
// eslint-disable-line
yield 1
yield -1
yield 0
}
expect(FindMinIterator(src())).toBe(-1)
})
test('given string generator then min string length is found', () => {
const src = function* () {
// eslint-disable-line
yield 'abc'
yield 'de'
yield 'qwerty'
}
expect(FindMinIterator(src(), (_x) => _x.length)).toBe(2)
})
test('given array of objects then min accessor is found', () => {
const array = [
{ name: 'Item #1', price: 1.0 },
{ name: 'Item #2', price: 0.0 },
{ name: 'Item #3', price: -1.0 }
]
expect(FindMinIterator(array, (_x) => _x.price)).toBe(-1)
expect(FindMinIterator(array, (_x) => _x.name)).toBe('Item #1')
})
})