-
Notifications
You must be signed in to change notification settings - Fork 170
/
util_test.ts
73 lines (65 loc) · 2.42 KB
/
util_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
import { assertEquals } from 'std/testing/asserts.ts'
import { delay } from 'std/async/delay.ts'
import util from './util.ts'
Deno.test(`util`, async () => {
assertEquals(util.inDeno, true)
// test isLikelyHttpURL
assertEquals(util.isLikelyHttpURL('https://deno.land'), true)
assertEquals(util.isLikelyHttpURL('http://deno.land'), true)
assertEquals(util.isLikelyHttpURL('//deno.land'), false)
assertEquals(util.isLikelyHttpURL('file:///deno.land'), false)
assertEquals(util.isLikelyHttpURL('www.deno.land'), false)
// test trimPrefix
assertEquals(util.trimPrefix('foobar', 'foo'), 'bar')
assertEquals(util.trimPrefix('foobar', 'baz'), 'foobar')
assertEquals(util.trimSuffix('foobar', 'bar'), 'foo')
assertEquals(util.trimSuffix('foobar', 'baz'), 'foobar')
// test splitBy
assertEquals(util.splitBy('/app.tsx', '.'), ['/app', 'tsx'])
assertEquals(util.splitBy('foo.bar.', '.'), ['foo', 'bar.'])
assertEquals(util.splitBy('foobar.', '.'), ['foobar', ''])
assertEquals(util.splitBy('.foobar.', '.'), ['', 'foobar.'])
assertEquals(util.splitBy('foobar', '.'), ['foobar', ''])
// test formatBytes
assertEquals(util.formatBytes(100), '100B')
assertEquals(util.formatBytes(1024 ** 1), '1KB')
assertEquals(util.formatBytes(1024 ** 2), '1MB')
assertEquals(util.formatBytes(1024 ** 3), '1GB')
assertEquals(util.formatBytes(1024 ** 4), '1TB')
assertEquals(util.formatBytes(1024 ** 5), '1PB')
// test cleanPath
assertEquals(util.cleanPath('./'), '/')
assertEquals(util.cleanPath('./a/./b/./c/.'), '/a/b/c')
assertEquals(util.cleanPath('../'), '/')
assertEquals(util.cleanPath('../a/b/c'), '/a/b/c')
assertEquals(util.cleanPath('/a/../b/c'), '/b/c')
assertEquals(util.cleanPath('/a/b/../c'), '/a/c')
assertEquals(util.cleanPath('\\a\\b\\c'), '/a/b/c')
assertEquals(util.cleanPath('\\a\\b\\.\\..\\c'), '/a/c')
assertEquals(util.cleanPath('//a//b//c//'), '/a/b/c')
// test debounce
let n = 0
const plus = util.debounce(() => n++, 50)
plus()
assertEquals(n, 0)
await delay(75)
assertEquals(n, 1)
plus()
plus()
plus()
assertEquals(n, 1)
await delay(75)
assertEquals(n, 2)
// test debounceX
n = 0
util.debounceX('key', () => n++, 50)
assertEquals(n, 0)
await delay(75)
assertEquals(n, 1)
util.debounceX('key', () => n += 1, 50)
util.debounceX('key', () => n += 2, 50)
util.debounceX('key', () => n += 3, 50)
assertEquals(n, 1)
await delay(75)
assertEquals(n, 4)
})