-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
127 lines (114 loc) · 3.21 KB
/
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
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
122
123
124
125
126
127
import assert from 'node:assert/strict'
import test from 'node:test'
import {h} from 'hastscript'
import {selectAll} from 'hast-util-select'
import {truncate} from 'hast-util-truncate'
test('truncate', async function (t) {
await t.test('should expose the public api', async function () {
assert.deepEqual(Object.keys(await import('hast-util-truncate')).sort(), [
'truncate'
])
})
await t.test('should truncate', async function () {
assert.deepEqual(
truncate(h('p', 'Lorem ipsum dolor sit amet'), {size: 11}),
h('p', 'Lorem ipsum')
)
})
await t.test('should truncate to a nice break', async function () {
assert.deepEqual(
truncate(h('p', 'Lorem ipsum dolor sit amet'), {size: 10}),
h('p', 'Lorem')
)
})
await t.test(
'should truncate to an ugly break if there’s no perfect break',
async function () {
assert.deepEqual(
truncate(h('p', 'Lorem ipsum dolor sit amet'), {size: 4}),
h('p', 'Lore')
)
}
)
await t.test('should truncate w/ `ellipsis`', async function () {
assert.deepEqual(
truncate(h('p', 'Lorem ipsum dolor sit amet'), {
size: 10,
ellipsis: '…'
}),
h('p', 'Lorem…')
)
})
await t.test(
'should truncate right to `size`, if that’s a perfect break',
async function () {
assert.deepEqual(
truncate(h('p', 'Lorem ipsum dolor sit amet'), {size: 11}),
h('p', 'Lorem ipsum')
)
}
)
await t.test(
'should truncate right to the wordbreak before `size`, if that points to whitespace',
async function () {
assert.deepEqual(
truncate(h('p', 'Lorem ipsum dolor sit amet'), {size: 12}),
h('p', 'Lorem ipsum')
)
}
)
await t.test(
'should truncate right to the wordbreak before `size`, if that points to punctuation',
async function () {
assert.deepEqual(
truncate(h('p', 'Lorem ipsum, dolor sit amet'), {size: 11}),
h('p', 'Lorem ipsum')
)
}
)
await t.test(
'should truncate right to the punctuation at `size`, if that points to whitespace',
async function () {
assert.deepEqual(
truncate(h('p', 'Lorem ipsum, dolor sit amet'), {size: 12}),
h('p', 'Lorem ipsum,')
)
}
)
await t.test('should truncate w/ `maxCharacterStrip: 0`', async function () {
assert.deepEqual(
truncate(h('p', 'Lorem ipsum dolor sit amet'), {
size: 10,
maxCharacterStrip: 0
}),
h('p', 'Lorem ipsu')
)
})
const tree = h('p', [
'Lorem ipsum dolor sit amet, ',
h('del', 'consectetur'),
' adipisicing elit'
])
await t.test('should copy elements', async function () {
assert.deepEqual(
truncate(
h('p', [
'Lorem ipsum dolor sit amet, ',
h('del', 'consectetur'),
' adipisicing elit'
])
),
h('p', [
'Lorem ipsum dolor sit amet, ',
h('del', 'consectetur'),
' adipisicing elit'
])
)
})
await t.test('should truncate w/ `ignore`', async function () {
assert.deepEqual(
truncate(tree, {ignore: selectAll('del', tree)}),
h('p', ['Lorem ipsum dolor sit amet, ', ' adipisicing elit'])
)
})
})