Files
SpeedScope/utils.test.ts
T
Jamie Wong aee4534de4 Integrate jest and add first test file (#51)
This sets up the first bit of test infrastructure to write and run unit tests on every PR

Related to #14 
Fixes #7
2018-05-29 14:34:09 -07:00

67 lines
1.7 KiB
TypeScript

import {
sortBy,
getOrInsert,
getOrElse,
getOrThrow,
itMap,
itForEach,
itReduce,
zeroPad,
} from './utils'
test('sortBy', () => {
const ls = ['a3', 'b2', 'c1', 'd4']
sortBy(ls, k => k.charCodeAt(1))
expect(ls).toEqual(['c1', 'b2', 'a3', 'd4'])
})
test('getOrInsert', () => {
const m = new Map<string, number>()
expect(getOrInsert(m, 'hello', k => k.length)).toBe(5)
expect(getOrInsert(m, 'hello', k => 2 * k.length)).toBe(5)
expect(getOrInsert(m, 'x', k => k.length)).toBe(1)
expect(m.get('hello')).toBe(5)
expect(m.get('x')).toBe(1)
})
test('getOrElse', () => {
const m = new Map<string, number>()
expect(getOrElse(m, 'hello', k => k.length)).toBe(5)
expect(getOrElse(m, 'hello', k => 2 * k.length)).toBe(10)
expect(getOrElse(m, 'x', k => k.length)).toBe(1)
expect(getOrElse(m, 'x', () => 3)).toBe(3)
expect(m.get('hello')).toBe(undefined)
expect(m.get('x')).toBe(undefined)
})
test('getOrThrow', () => {
const m = new Map<string, number>()
m.set('hello', 5)
expect(getOrThrow(m, 'hello')).toBe(5)
expect(() => getOrThrow(m, 'goodbye')).toThrow('Expected key goodbye')
})
test('itMap', () => {
const s = new Set<number>([1, 2, 3])
expect(new Set(itMap(s, v => v * v))).toEqual(new Set([1, 4, 9]))
})
test('itForEach', () => {
const s = new Set<number>([1, 2, 3])
const t = new Set()
itForEach(s, v => t.add(v * v))
expect(t).toEqual(new Set([1, 4, 9]))
})
test('itReduce', () => {
const s = new Set<number>([1, 2, 3])
expect(itReduce(s, (a, b) => a + b, 0)).toBe(6)
})
test('zeroPad', () => {
expect(zeroPad('1', 2)).toBe('01')
expect(zeroPad('1', 3)).toBe('001')
expect(zeroPad('1000', 3)).toBe('1000')
expect(zeroPad('FF', 4)).toBe('00FF')
})