basic support for testing writes to screen
This commit is contained in:
parent
983285c6b2
commit
c53df5c4cc
73
template.tlv
73
template.tlv
|
@ -282,6 +282,32 @@
|
||||||
> h.getch = function(self)
|
> h.getch = function(self)
|
||||||
> return table.remove(h.kbd, 1)
|
> return table.remove(h.kbd, 1)
|
||||||
> end
|
> end
|
||||||
|
> h.addch = function(self, c)
|
||||||
|
> local scr = self.scr
|
||||||
|
> if scr.cursy <= scr.h then
|
||||||
|
> scr[scr.cursy][scr.cursx] = c
|
||||||
|
> scr.cursx = scr.cursx+1
|
||||||
|
> if scr.cursx > scr.w then
|
||||||
|
> scr.cursy = scr.cursy+1
|
||||||
|
> scr.cursx = 1
|
||||||
|
> end
|
||||||
|
> end
|
||||||
|
> end
|
||||||
|
> h.addstr = function(self, s)
|
||||||
|
> for i=1,string.len(s) do
|
||||||
|
> self:addch(s[i])
|
||||||
|
> end
|
||||||
|
> end
|
||||||
|
> h.mvaddch = function(self, y, x, c)
|
||||||
|
> self.scr.cursy = y
|
||||||
|
> self.scr.cursx = x
|
||||||
|
> self.addch(c)
|
||||||
|
> end
|
||||||
|
> h.mvaddstr = function(self, y, x, s)
|
||||||
|
> self.scr.cursy = y
|
||||||
|
> self.scr.cursx = x
|
||||||
|
> self:addstr(s)
|
||||||
|
> end
|
||||||
> return h
|
> return h
|
||||||
>end
|
>end
|
||||||
- __teliva_timestamp: original
|
- __teliva_timestamp: original
|
||||||
|
@ -296,5 +322,52 @@
|
||||||
- __teliva_timestamp: original
|
- __teliva_timestamp: original
|
||||||
scr:
|
scr:
|
||||||
>function scr(props)
|
>function scr(props)
|
||||||
|
> props.cursx = 1
|
||||||
|
> props.cursy = 1
|
||||||
|
> for y=1,props.h do
|
||||||
|
> props[y] = {}
|
||||||
|
> for x=1,props.w do
|
||||||
|
> props[y][x] = ' '
|
||||||
|
> end
|
||||||
|
> end
|
||||||
> return props
|
> return props
|
||||||
>end
|
>end
|
||||||
|
- __teliva_timestamp:
|
||||||
|
>Thu Mar 3 22:04:15 2022
|
||||||
|
check_screen:
|
||||||
|
>function check_screen(window, contents, message)
|
||||||
|
> local x, y = 1, 1
|
||||||
|
> for i=1,string.len(contents) do
|
||||||
|
> check_eq(contents[i], window.scr[y][x], message..'/'..y..','..x)
|
||||||
|
> x = x+1
|
||||||
|
> if x > window.scr.w then
|
||||||
|
> y = y+1
|
||||||
|
> x = 1
|
||||||
|
> end
|
||||||
|
> end
|
||||||
|
>end
|
||||||
|
>
|
||||||
|
>-- putting it all together, an example test of both keyboard and screen
|
||||||
|
>function test_check_screen()
|
||||||
|
> local lines = {
|
||||||
|
> c='123',
|
||||||
|
> d='234',
|
||||||
|
> a='345',
|
||||||
|
> b='456',
|
||||||
|
> }
|
||||||
|
> local w = window{
|
||||||
|
> kbd=kbd('abc'),
|
||||||
|
> scr=scr{h=3, w=5},
|
||||||
|
> }
|
||||||
|
> local y = 1
|
||||||
|
> while true do
|
||||||
|
> local c = w:getch()
|
||||||
|
> if c == nil then break end
|
||||||
|
> w:mvaddstr(y, 1, lines[c])
|
||||||
|
> y = y+1
|
||||||
|
> end
|
||||||
|
> check_screen(w, '345 '..
|
||||||
|
> '456 '..
|
||||||
|
> '123 ',
|
||||||
|
> 'test_check_screen')
|
||||||
|
>end
|
||||||
|
|
Loading…
Reference in New Issue