git.iko.soy/typeable/pandoc
on 465eeec help sign in
typeable/pandoc/test/lua/module/pandoc-utils.lua
96 lines 2.8 kB history raw
1local tasty = require 'tasty'
2local utils = require 'pandoc.utils'
4local assert = tasty.assert
5local test = tasty.test_case
6local group = tasty.test_group
8return {
9 group 'blocks_to_inlines' {
10 test('default separator', function ()
11 local blocks = {
12 pandoc.Para { pandoc.Str 'Paragraph1' },
13 pandoc.Para { pandoc.Emph { pandoc.Str 'Paragraph2' } }
14 }
15 local expected = {
16 pandoc.Str 'Paragraph1',
17 pandoc.Space(), pandoc.Str '¶', pandoc.Space(),
18 pandoc.Emph { pandoc.Str 'Paragraph2' }
19 }
20 assert.are_same(
21 expected,
22 utils.blocks_to_inlines(blocks)
23 )
24 end),
25 test('custom separator', function ()
26 local blocks = {
27 pandoc.Para{ pandoc.Str 'Paragraph1' },
28 pandoc.Para{ pandoc.Emph 'Paragraph2' }
29 }
30 local expected = {
31 pandoc.Str 'Paragraph1',
32 pandoc.LineBreak(),
33 pandoc.Emph { pandoc.Str 'Paragraph2' }
34 }
35 assert.are_same(
36 expected,
37 utils.blocks_to_inlines(blocks, { pandoc.LineBreak() })
38 )
39 end)
40 },
42 group 'hierarchicalize' {
43 test('sanity check', function ()
44 local blks = {
45 pandoc.Header(1, {pandoc.Str 'First'}),
46 pandoc.Header(2, {pandoc.Str 'Second'}),
47 pandoc.Header(2, {pandoc.Str 'Third'}),
48 }
49 local hblks = utils.hierarchicalize(blks)
50 -- cannot create Elements directly; performing only an approximate
51 -- sanity checking instead of a full equality comparison.
52 assert.are_equal('Sec', hblks[1].t)
53 assert.are_equal('Sec', hblks[1].contents[1].t)
54 assert.are_equal(1, hblks[1].contents[2].numbering[1])
55 assert.are_equal(2, hblks[1].contents[2].numbering[2])
56 end)
57 },
59 group 'normalize_date' {
60 test('09 Nov 1989', function ()
61 assert.are_equal('1989-11-09', utils.normalize_date '09 Nov 1989')
62 end),
63 test('12/31/2017', function ()
64 assert.are_equal('2017-12-31', utils.normalize_date '12/31/2017')
65 end),
66 },
68 group 'sha1' {
69 test('hashing', function ()
70 local ref_hash = '0a0a9f2a6772942557ab5355d76af442f8f65e01'
71 assert.are_equal(ref_hash, utils.sha1 'Hello, World!')
72 end)
73 },
75 group 'stringify' {
76 test('inlines', function ()
77 local inline = pandoc.Emph{
78 pandoc.Str 'Cogito',
79 pandoc.Space(),
80 pandoc.Str 'ergo',
81 pandoc.Space(),
82 pandoc.Str 'sum.',
83 }
84 assert.are_equal('Cogito ergo sum.', utils.stringify(inline))
85 end)
86 },
88 group 'to_roman_numeral' {
89 test('convertes number', function ()
90 assert.are_equal('MDCCCLXXXVIII', utils.to_roman_numeral(1888))
91 end),
92 test('fails on non-convertible argument', function ()
93 assert.is_falsy(pcall(utils.to_roman_numeral, 'not a number'))
94 end)
95 },