primitives for writing tests

This commit is contained in:
Kartik K. Agaram 2023-04-11 21:33:33 -07:00
parent 4049176dfb
commit 658f96667b
2 changed files with 28 additions and 1 deletions

View File

@ -145,7 +145,7 @@ function App.run_tests_and_initialize()
end
function App.initialize_for_test()
App.screen.init({width=100, height=50})
App.screen.init{width=100, height=50}
App.screen.contents = {} -- clear screen
App.filesystem = {}
App.fake_keys_pressed = {}

View File

@ -311,3 +311,30 @@ and [the Lua manual](https://www.lua.org/manual/5.1/manual.html#5.7).
There's much more I could include here; check out [the LÖVE manual](https://love2d.org/wiki)
and [the Lua manual](https://www.lua.org/manual/5.1/manual.html).
### writing tests
* `App.screen.init{width=.., height=..}` -- creates a fake screen for a test
* `App.screen.check(y, expected_contents, msg)` -- verifies text written to
the fake screen at `y`. This isn't very realistic; `y` must exactly match
what was displayed, and the expected contents show everything printed to
that `y` in chronological order, regardless of `x` coordinate. In spite of
these limitations, you can write lots of useful tests with this.
* `App.run_after_textinput(t)` -- mimics keystrokes resulting in `t` and then
draws one frame.
* `App.run_after_keychord(chord)` -- mimics keystrokes resulting in `chord`
and then draws one frame.
* `App.run_after_mouse_press(x,y, mouse_button)` -- mimics a mouse press down
followed by drawing a frame.
* `App.run_after_mouse_release(x,y, mouse_button)` -- mimics a mouse release
up followed by drawing a frame.
* `App.run_after_mouse_click(x,y, mouse_button)` -- mimics a mouse press down
and mouse release up followed by drawing a frame.
* `App.wait_fake_time(t)` -- simulates the passage of time for `App.getTime()`.