vis-config
lua scripts to configure vis editor
git clone https://9o.is/git/vis-config.git
parser_test.lua
(3085B)
1 #!/usr/bin/env lua5.4
2
3 local parser = require('parser')
4
5 local function build_msg(body)
6 return 'Content-Length: ' .. tostring(string.len(body)) .. '\r\n\r\n' .. body
7 end
8
9 local lunatest = require('lunatest')
10
11 function test_complete_msg() -- luacheck: ignore 111
12 local msg = build_msg('foo')
13 local p = parser.new()
14 local err = p:add(msg)
15 lunatest.assert_nil(err)
16
17 local msgs = p:get_msgs()
18 lunatest.assert_table(msgs)
19 lunatest.assert_len(1, msgs)
20 lunatest.assert_equal(msgs[1], 'foo')
21 end
22
23 function test_two_complete_msgs() -- luacheck: ignore 111
24 local p = parser.new()
25 local data = build_msg('foo')
26 local err = p:add(data)
27 lunatest.assert_nil(err)
28
29 local msgs = p:get_msgs()
30 lunatest.assert_table(msgs)
31 lunatest.assert_len(1, msgs)
32 lunatest.assert_equal(msgs[1], 'foo')
33
34 data = build_msg('bar')
35 err = p:add(data)
36 lunatest.assert_nil(err)
37 msgs = p:get_msgs()
38 lunatest.assert_table(msgs)
39 lunatest.assert_len(1, msgs)
40 lunatest.assert_equal(msgs[1], 'bar')
41 end
42
43 function test_two_complete_msgs_at_once() -- luacheck: ignore 111
44 local data = build_msg('foo') .. build_msg('bar')
45 local p = parser.new()
46 local err = p:add(data)
47 lunatest.assert_nil(err)
48
49 local msgs = p:get_msgs()
50 lunatest.assert_table(msgs)
51 lunatest.assert_len(2, msgs)
52 lunatest.assert_equal(msgs[1], 'foo')
53 lunatest.assert_equal(msgs[2], 'bar')
54 end
55
56 function test_split_msg() -- luacheck: ignore 111
57 local msg = build_msg('foo')
58 local part1 = msg:sub(1, -3)
59 local part2 = msg:sub(-2)
60 local p = parser.new()
61 local err = p:add(part1)
62 lunatest.assert_nil(err)
63
64 err = p:add(part2)
65 lunatest.assert_nil(err)
66
67 local msgs = p:get_msgs()
68 lunatest.assert_table(msgs)
69 lunatest.assert_len(1, msgs)
70 lunatest.assert_equal(msgs[1], 'foo')
71 end
72
73 function test_complete_and_split_msg() -- luacheck: ignore 111
74 local msg = build_msg('foo') .. build_msg('bar')
75 local part1 = msg:sub(1, -3)
76 local part2 = msg:sub(-2)
77 local p = parser.new()
78 local err = p:add(part1)
79 lunatest.assert_nil(err)
80
81 err = p:add(part2)
82 lunatest.assert_nil(err)
83
84 local msgs = p:get_msgs()
85 lunatest.assert_table(msgs)
86 lunatest.assert_len(2, msgs)
87 lunatest.assert_equal(msgs[1], 'foo')
88 lunatest.assert_equal(msgs[2], 'bar')
89 end
90
91 function test_split_hdr() -- luacheck: ignore 111
92 local msg = build_msg('foo')
93 local part1 = msg:sub(1, 3)
94 local part2 = msg:sub(4)
95 local p = parser.new()
96 local err = p:add(part1)
97 lunatest.assert_nil(err)
98
99 err = p:add(part2)
100 lunatest.assert_nil(err)
101
102 local msgs = p:get_msgs()
103 lunatest.assert_table(msgs)
104 lunatest.assert_len(1, msgs)
105 lunatest.assert_equal(msgs[1], 'foo')
106 end
107
108 function test_split_hdr_body_sep() -- luacheck: ignore 111
109 local msg = build_msg('foo')
110 local part1 = msg:sub(1, 19)
111 local part2 = msg:sub(20)
112 local p = parser.new()
113 local err = p:add(part1)
114 lunatest.assert_nil(err)
115
116 err = p:add(part2)
117 lunatest.assert_nil(err)
118
119 local msgs = p:get_msgs()
120 lunatest.assert_table(msgs)
121 lunatest.assert_len(1, msgs)
122 lunatest.assert_equal(msgs[1], 'foo')
123 end
124
125 lunatest.run()