diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2022-05-23 08:13:58 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2022-05-23 08:17:40 -0700 |
commit | 37f1313b16971200f56552dbbf8c2b0b2b65417e (patch) | |
tree | e16e4ed0862a03d775a71cf4dea6d04864421d32 /app.lua | |
parent | 46d4c4de10b31a82664364364c911e1d8a08c0e5 (diff) | |
download | text.love-37f1313b16971200f56552dbbf8c2b0b2b65417e.tar.gz |
first successful pagedown test, first bug found by test
I also really need to rethink how people debug my programs. My approach of inserting and deleting print() takes a lot of commitment. I need my old trace-based whitebox testing idea. However, in my past projects I never did figure out a good framework for tweaking how verbose a trace to emit. Perhaps that's too many knobs. Perhaps we just need a way to run a single test with the most verbose trace possible. Then it's just a matter of having the trace tell a coherent story? But even if the trace stays out of program output in that situation, it's still in the programmer's face in the _code_. Ugh. Current plan: ship program with maximum tests and zero commented-out prints. If you want to debug, insert prints. This is better than previous, text-mode, projects just by virtue of the stdout channel being dedicated to debug stuff.
Diffstat (limited to 'app.lua')
-rw-r--r-- | app.lua | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/app.lua b/app.lua index d43f4f6..f14b0ec 100644 --- a/app.lua +++ b/app.lua @@ -93,7 +93,7 @@ end -- App.font{ -- height=15 -- } --- App.run_with_keypress('pagedown') +-- App.run_after_keypress('pagedown') -- App.check_screen_contents{ -- y0='ghi' -- y15='' @@ -138,6 +138,7 @@ end function App.screen.print(msg, x,y) local screen_row = 'y'..tostring(y) + print('drawing "'..msg..'" at y '..tostring(y)) local screen = App.screen if screen.contents[screen_row] == nil then screen.contents[screen_row] = {} @@ -175,6 +176,12 @@ function App.run_after_textinput(t) App.draw() end +function App.run_after_keychord(key) + App.keychord_pressed(key) + App.screen.contents = {} + App.draw() +end + function App.width(text) return text.text:getWidth() end @@ -182,6 +189,9 @@ end function App.screen.check(y, expected_contents, msg) local screen_row = 'y'..tostring(y) local contents = '' + if App.screen.contents[screen_row] == nil then + error('no text at y '..tostring(y)) + end for i,s in ipairs(App.screen.contents[screen_row]) do contents = contents..s end |