about summary refs log tree commit diff stats
path: root/chesstv.tlv
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-04-11 22:41:26 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-04-11 22:43:26 -0700
commit394c9f894c48925b53da610d907b5a66ee1e61f0 (patch)
tree9d9479bc19215613c36214e5d92ba1a0557f0507 /chesstv.tlv
parent98e657d6e21c7261099ed027ba6e5ebe5a5e677e (diff)
downloadteliva-394c9f894c48925b53da610d907b5a66ee1e61f0.tar.gz
fix a few sample apps
Broken since Mar 18, when I started running tests in src/file.lua.

It's more than a little ugly that .lua files in src/ require helpers
inside .tlv apps.
Diffstat (limited to 'chesstv.tlv')
-rw-r--r--chesstv.tlv68
1 files changed, 68 insertions, 0 deletions
diff --git a/chesstv.tlv b/chesstv.tlv
index 74acefd..f440fa1 100644
--- a/chesstv.tlv
+++ b/chesstv.tlv
@@ -17,6 +17,74 @@
 # If these constraints are violated, Teliva may unceremoniously crash. Please
 # report bugs at http://akkartik.name/contact
 - __teliva_timestamp: original
+  check:
+    >function check(x, msg)
+    >  if x then
+    >    Window:addch('.')
+    >  else
+    >    print('F - '..msg)
+    >    print('  '..str(x)..' is false/nil')
+    >    teliva_num_test_failures = teliva_num_test_failures + 1
+    >    -- overlay first test failure on editors
+    >    if teliva_first_failure == nil then
+    >      teliva_first_failure = msg
+    >    end
+    >  end
+    >end
+- __teliva_timestamp: original
+  check_eq:
+    >function check_eq(x, expected, msg)
+    >  if eq(x, expected) then
+    >    Window:addch('.')
+    >  else
+    >    print('F - '..msg)
+    >    print('  expected '..str(expected)..' but got '..str(x))
+    >    teliva_num_test_failures = teliva_num_test_failures + 1
+    >    -- overlay first test failure on editors
+    >    if teliva_first_failure == nil then
+    >      teliva_first_failure = msg
+    >    end
+    >  end
+    >end
+- __teliva_timestamp: original
+  eq:
+    >function eq(a, b)
+    >  if type(a) ~= type(b) then return false end
+    >  if type(a) == 'table' then
+    >    if #a ~= #b then return false end
+    >    for k, v in pairs(a) do
+    >      if b[k] ~= v then
+    >        return false
+    >      end
+    >    end
+    >    for k, v in pairs(b) do
+    >      if a[k] ~= v then
+    >        return false
+    >      end
+    >    end
+    >    return true
+    >  end
+    >  return a == b
+    >end
+- __teliva_timestamp: original
+  str:
+    >-- smarter tostring
+    >-- slow; used only for debugging
+    >function str(x)
+    >  if type(x) == 'table' then
+    >    local result = ''
+    >    result = result..#x..'{'
+    >    for k, v in pairs(x) do
+    >      result = result..str(k)..'='..str(v)..', '
+    >    end
+    >    result = result..'}'
+    >    return result
+    >  elseif type(x) == 'string' then
+    >    return '"'..x..'"'
+    >  end
+    >  return tostring(x)
+    >end
+- __teliva_timestamp: original
   Window:
     >Window = curses.stdscr()
     >-- animation-based app