forked from antfu/utils
-
Notifications
You must be signed in to change notification settings - Fork 0
/
string.test.ts
121 lines (105 loc) · 2.25 KB
/
string.test.ts
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import { expect, it } from 'vitest'
import { capitalize, ensurePrefix, ensureSuffix, slash, template } from './string'
it('template', () => {
expect(
template(
'Hello {0}! My name is {1}.',
'Inès',
'Anthony',
),
).toEqual('Hello Inès! My name is Anthony.')
expect(
template(
'{0} + {1} = {2}{3}',
1,
'1',
// @ts-expect-error disallow non-literal on type
{ v: 2 },
[2, 3],
),
).toEqual('1 + 1 = [object Object]2,3')
expect(
template(
'{10}',
),
).toEqual('undefined')
expect(
template(
'Hi',
'',
),
).toEqual('Hi')
})
it('namedTemplate', () => {
expect(
template(
'{greet}! My name is {name}.',
{ greet: 'Hello', name: 'Anthony' },
),
).toEqual('Hello! My name is Anthony.')
expect(
template(
'{a} + {b} = {result}',
{ a: 1, b: 2, result: 3 },
),
).toEqual('1 + 2 = 3')
expect(
template(
'{1} + {b} = 3',
{ 1: 'a', b: 2 },
),
).toEqual('a + 2 = 3')
// Without fallback return the variable name
expect(
template(
'{10}',
{},
),
).toEqual('10')
expect(
template(
'{11}',
null,
),
).toEqual('undefined')
expect(
template(
'{11}',
undefined,
),
).toEqual('undefined')
expect(
template(
'{10}',
{},
'unknown',
),
).toEqual('unknown')
expect(
template(
'{1} {2} {3} {4}',
{ 4: 'known key' },
k => String(+k * 2),
),
).toEqual('2 4 6 known key')
})
it('slash', () => {
expect(slash('\\123')).toEqual('/123')
expect(slash('\\\\')).toEqual('//')
expect(slash('\\\h\\\i')).toEqual('/h/i')
})
it('ensurePrefix', () => {
expect(ensurePrefix('abc', 'abcdef')).toEqual('abcdef')
expect(ensurePrefix('hi ', 'jack')).toEqual('hi jack')
})
it('ensureSuffix', () => {
expect(ensureSuffix('world', 'hello ')).toEqual('hello world')
expect(ensureSuffix('123', 'abc123')).toEqual('abc123')
})
it('capitalize', () => {
expect(capitalize('hello World')).toEqual('Hello world')
expect(capitalize('123')).toEqual('123')
expect(capitalize('中国')).toEqual('中国')
expect(capitalize('āÁĂÀ')).toEqual('Āáăà')
expect(capitalize('\a')).toEqual('A')
})