From 4049176dfbcaef2919d761d9f19ac100b86a4468 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Tue, 11 Apr 2023 15:15:58 -0700 Subject: [PATCH 1/2] couple of typos --- reference.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/reference.md b/reference.md index 35e5b1d..db2ee1c 100644 --- a/reference.md +++ b/reference.md @@ -188,7 +188,7 @@ The text-editor widget includes extremely thorough automated tests to give you early warning if you break something. * `state = edit.initialize_state(top, left, right, font_height, line_height)` -- - returns an object that can be used to render an interactive editor widgets + returns an object that can be used to render an interactive editor widget for text and line drawings starting at `y=top` on the app window, between `x=left` and `x=right`. Wraps long lines at word boundaries where possible, or in the middle of words (no hyphenation yet) when it must. @@ -196,12 +196,12 @@ early warning if you break something. * `edit.quit()` -- calling this ensures any final edits are flushed to disk before the app exits. -* `edit.draw(state)` -- Call this from `App.draw` to display the current +* `edit.draw(state)` -- call this from `App.draw` to display the current editor state on the app window as requested in the call to `edit.initialize_state` that created `state`. -* `edit.update(state, dt)` -- call this from `App.update` to periodically auto - saves editor contents to disk. +* `edit.update(state, dt)` -- call this from `App.update` to periodically + auto-save editor contents to disk. * `edit.mouse_press(state, x,y, mouse_button)` and `edit.mouse_release(x,y, mouse_button)` -- call these to position the cursor or select some text. From 658f96667b360ed5f7711ecd81a01635f0254837 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Tue, 11 Apr 2023 21:33:33 -0700 Subject: [PATCH 2/2] primitives for writing tests --- app.lua | 2 +- reference.md | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/app.lua b/app.lua index 53a133f..b41b1ad 100644 --- a/app.lua +++ b/app.lua @@ -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 = {} diff --git a/reference.md b/reference.md index db2ee1c..3234cfa 100644 --- a/reference.md +++ b/reference.md @@ -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()`.