about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2023-04-11 21:41:27 -0700
committerKartik K. Agaram <vc@akkartik.com>2023-04-11 21:41:27 -0700
commit88caf4eb3108a5dee7325cc75d8581711568619f (patch)
tree3bb440c6d0c29cc87d1c584b84c33ad6d9afb8f7
parentc16998bcc62d632201d873445c273d66ea16b18c (diff)
parent658f96667b360ed5f7711ecd81a01635f0254837 (diff)
downloadtext.love-88caf4eb3108a5dee7325cc75d8581711568619f.tar.gz
Merge lines.love
-rw-r--r--app.lua2
-rw-r--r--reference.md35
2 files changed, 32 insertions, 5 deletions
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 c9cee55..5c3c29f 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 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.
@@ -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()`.