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()