-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.js
More file actions
55 lines (47 loc) · 1.49 KB
/
test.js
File metadata and controls
55 lines (47 loc) · 1.49 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
import {parseJevko} from './parseJevko.js'
import {parseJevkoWithHeredocs} from './parseJevkoWithHeredocs.js'
import {assert, assertEquals} from './devDeps.js'
const parsed = parseJevko(`Name [Horse]
Conservation status [Domesticated]
Scientific classification [
\`[Kingdom\`] [Animalia]
Phylum [Chordata]
Class [Mammalia]
Order [Perissodactyla]
Family [Equidae]
Genus [Equus]
Species [E. ferus]
Subspecies [E. f. caballus]
]
Trinomial name [
[Equus ferus caballus]
[Linnaeus, 1758]
]
Synonyms [at least 48 published]`)
Deno.test('parseJevko', () => {
assert(parsed.subjevkos.length === 5)
assert(parsed.suffix === "")
assert(parsed.subjevkos[2].jevko.subjevkos.some(({prefix}) => prefix.includes(" [Kingdom] ")), JSON.stringify(parsed.subjevkos[2].jevko.subjevkos, null, 2))
try {
parseJevko(`
this should crash [
with unexpected \`] at 5:1
]
]`)
} catch (e) {
assert(e.message.includes('5:1'), e)
}
})
Deno.test('slicing optimization', () => {
assert(parseJevko(` \`\`\`\`aaa\`[bbb\`]\`]ccc\`\` `).suffix === ' ``aaa[bbb]]ccc` ')
assert(parseJevko(` \`\`\`\`aaa\`[bbb\`]\`]ccc\`\` []`).subjevkos[0].prefix === ' ``aaa[bbb]]ccc` ')
})
Deno.test('parseJevkoWithHeredocs', () => {
const parsed = parseJevkoWithHeredocs(`
test \`/x/]]][[[\`\`\`///y/y/d/ddc/x/
`, {quoter: '/'})
const sub = parsed.subjevkos[0]
assertEquals(sub.prefix, '\ntest ')
assertEquals(sub.jevko.suffix, ']]][[[\`\`\`///y/y/d/ddc')
assertEquals(sub.jevko.tag, 'x')
})