Repository navigation
Expand file tree
/
Copy pathtest.js
More file actions
82 lines (67 loc) · 2.4 KB
/
Copy pathtest.js
File metadata and controls
82 lines (67 loc) · 2.4 KB
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
import assert from 'node:assert/strict'
import { describe, test } from 'node:test'
import { scheduler } from 'node:timers/promises'
import { distance } from 'fastest-levenshtein'
import { id } from './index.js'
describe('id generator', async () => {
test('id generator with prefix', async () => {
const prefix = 'test'
const generatedId = id(prefix)
assert.ok(generatedId)
assert.ok(generatedId.startsWith(prefix))
})
test('id generator without prefix', async () => {
const generatedId = id()
assert.ok(generatedId)
assert.ok(!generatedId.startsWith('_'))
})
test('id generator with empty prefix', async () => {
const prefix = ''
const generatedId = id(prefix)
assert.ok(generatedId)
assert.ok(!generatedId.startsWith('_'))
})
test('id generator should generate sortable ids with high distance', async () => {
const prefix = 'test'
const generatedId1 = id(prefix)
await scheduler.wait(1)
const generatedId2 = id(prefix)
await scheduler.wait(1)
const generatedId3 = id(prefix)
assert.ok(generatedId1)
assert.ok(generatedId2)
assert.ok(generatedId3)
assert.ok(generatedId1 < generatedId2)
assert.ok(generatedId2 < generatedId3)
assert.ok(generatedId1 < generatedId3)
assert.ok(distance(generatedId1, generatedId2) >= 1)
assert.ok(distance(generatedId2, generatedId3) >= 1)
assert.ok(distance(generatedId1, generatedId3) >= 1)
})
test('id generator should generate sortable ids with low distance in shortes interval', async () => {
const prefix = 'test'
const generatedId1 = id(prefix)
const generatedId2 = id(prefix)
const generatedId3 = id(prefix)
assert.ok(generatedId1)
assert.ok(generatedId2)
assert.ok(generatedId3)
assert.ok(generatedId1 < generatedId2)
assert.ok(generatedId2 < generatedId3)
assert.ok(generatedId1 < generatedId3)
assert.ok(distance(generatedId1, generatedId2) >= 1)
assert.ok(distance(generatedId2, generatedId3) >= 1)
assert.ok(distance(generatedId1, generatedId3) >= 1)
})
test('id generator should generate massive amount of sortable ids', async () => {
const prefix = 'test'
const generatedIds = []
for (let i = 0; i < 100000; i++) {
generatedIds.push(id(prefix))
}
assert.ok(generatedIds)
for (let i = 0; i < generatedIds.length - 1; i++) {
assert.ok(generatedIds[i] < generatedIds[i + 1])
}
})
})