/
parse-options.js
43 lines (40 loc) · 1.55 KB
/
parse-options.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
const t = require('tap')
const parseOptions = require('../../internal/parse-options.js')
t.test('falsey values always empty options object', t => {
t.strictSame(parseOptions(null), {})
t.strictSame(parseOptions(false), {})
t.strictSame(parseOptions(undefined), {})
t.strictSame(parseOptions(), {})
t.strictSame(parseOptions(0), {})
t.strictSame(parseOptions(''), {})
t.end()
})
t.test('truthy non-objects always loose mode, for backwards comp', t => {
t.strictSame(parseOptions('hello'), { loose: true })
t.strictSame(parseOptions(true), { loose: true })
t.strictSame(parseOptions(1), { loose: true })
t.end()
})
t.test('any object passed is returned', t => {
t.strictSame(parseOptions(/asdf/), /asdf/)
t.strictSame(parseOptions(new Error('hello')), new Error('hello'))
t.strictSame(parseOptions({ loose: true, a: 1, rtl: false }), { loose: true, a: 1, rtl: false })
t.strictSame(parseOptions({ loose: 1, rtl: 2, includePrerelease: 10 }), {
loose: 1,
rtl: 2,
includePrerelease: 10,
})
t.strictSame(parseOptions({ loose: true }), { loose: true })
t.strictSame(parseOptions({ rtl: true }), { rtl: true })
t.strictSame(parseOptions({ includePrerelease: true }), { includePrerelease: true })
t.strictSame(parseOptions({ loose: true, rtl: true }), { loose: true, rtl: true })
t.strictSame(parseOptions({ loose: true, includePrerelease: true }), {
loose: true,
includePrerelease: true,
})
t.strictSame(parseOptions({ rtl: true, includePrerelease: true }), {
rtl: true,
includePrerelease: true,
})
t.end()
})