Skip to content

Commit 32d0cec

Browse files
committed
tests(pkg): improve tests for utils/getTypeof
1 parent 8cf1725 commit 32d0cec

1 file changed

Lines changed: 53 additions & 24 deletions

File tree

Lines changed: 53 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,66 @@
1-
import { describe, expect, it } from 'vitest'
1+
import { describe, expect, test } from 'vitest'
22
import { getTypeof } from '../getTypeof'
33

44
describe('getTypeof.ts - exports', () => {
5-
it('getTypeof function', () => {
5+
test('getTypeof function', () => {
66
expect(getTypeof).toBeDefined()
77
expect(getTypeof).toBeInstanceOf(Function)
88
})
99
})
1010

11-
describe('getTypeof', () => {
12-
it('it returns correct type', () => {
13-
expect(getTypeof(undefined)).toBe('undefined')
14-
expect(getTypeof(null)).toBe('null')
15-
expect(getTypeof(true)).toBe('boolean')
16-
expect(getTypeof('this is a string')).toBe('string')
17-
expect(getTypeof(() => 'this is a function')).toBe('function')
18-
expect(getTypeof({ an: 'object' })).toBe('object')
19-
expect(getTypeof(['an', 'array'])).toBe('array')
11+
describe('getTypeof()', () => {
12+
describe('returns correct type for primitive values:', () => {
13+
test.each([
14+
[undefined, 'undefined'],
15+
[null, 'null'],
16+
[true, 'boolean'],
17+
[false, 'boolean'],
18+
['this is a string', 'string'],
19+
[123, 'number'],
20+
[123.456, 'number'],
21+
[NaN, 'number'],
22+
[Infinity, 'number'],
23+
[0, 'number'],
24+
[-0, 'number'],
25+
[Infinity, 'number'],
26+
[-Infinity, 'number'],
27+
[123n, 'bigint'],
28+
[Symbol('test'), 'symbol'],
29+
])('value: %s = type: "%s"', (value, type) => {
30+
expect(getTypeof(value)).toBe(type)
31+
})
2032
})
2133

22-
it('it handles different Error types as type "error"', () => {
23-
const error = new Error('this is an error')
24-
const typeError = new TypeError('this is a type error')
25-
const rangeError = new RangeError('this is a range error')
26-
const referenceError = new ReferenceError('this is a reference error')
27-
const syntaxError = new SyntaxError('this is a syntax error')
28-
const uriError = new URIError('this is a URI error')
34+
describe('returns correct type for non-primitive values:', () => {
35+
test.each([
36+
[{ message: 'test' }, 'object'],
37+
[{}, 'object'],
38+
[[1, 2, 3], 'array'],
39+
[() => null, 'function'],
40+
[class {}, 'function'],
41+
[new Map(), 'map'],
42+
[new Date(), 'date'],
43+
[new RegExp('test'), 'regexp'],
44+
[Promise.resolve(), 'promise'],
45+
[new Set(), 'set'],
46+
[new WeakMap(), 'weakmap'],
47+
[new WeakSet(), 'weakset'],
48+
])(`value: %s = type: "%s"`, (value, type) => {
49+
expect(getTypeof(value)).toBe(type)
50+
})
51+
})
2952

30-
expect(getTypeof(error)).toBe('error')
31-
expect(getTypeof(typeError)).toBe('error')
32-
expect(getTypeof(rangeError)).toBe('error')
33-
expect(getTypeof(referenceError)).toBe('error')
34-
expect(getTypeof(syntaxError)).toBe('error')
35-
expect(getTypeof(uriError)).toBe('error')
53+
describe('returns type "error" for all Error types:', () => {
54+
test.each([
55+
[Error(), 'error'],
56+
[TypeError(), 'error'],
57+
[SyntaxError(), 'error'],
58+
[EvalError(), 'error'],
59+
[RangeError(), 'error'],
60+
[ReferenceError(), 'error'],
61+
[URIError(), 'error'],
62+
])(`value: %s = type: "%s"`, (error) => {
63+
expect(getTypeof(error)).toBe('error')
64+
})
3665
})
3766
})

0 commit comments

Comments
 (0)