about summary refs log tree commit diff stats
path: root/app.lua
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-05-23 08:13:58 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-05-23 08:17:40 -0700
commit37f1313b16971200f56552dbbf8c2b0b2b65417e (patch)
treee16e4ed0862a03d775a71cf4dea6d04864421d32 /app.lua
parent46d4c4de10b31a82664364364c911e1d8a08c0e5 (diff)
downloadlines.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.lua12
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