(define
  lua-eval-tests
  (list
    (list "arith-add" "return 1 + 2" 3)
    (list "arith-sub" "return 10 - 3" 7)
    (list "arith-mul" "return 4 * 5" 20)
    (list "arith-prec" "return 1 + 2 * 3" 7)
    (list "arith-paren" "return (1 + 2) * 3" 9)
    (list "unary-neg" "return -5 + 10" 5)
    (list "lt" "return 1 < 2" true)
    (list "eq" "return 2 == 2" true)
    (list "neq" "return 1 ~= 2" true)
    (list "and-value" "return true and 42" 42)
    (list "or-value" "return false or 99" 99)
    (list "or-nil" "return nil or 7" 7)
    (list "and-short" "return false and 999" false)
    (list "not-true" "return not true" false)
    (list "not-zero" "return not 0" false)
    (list "local" "local x = 5 return x * 2" 10)
    (list "local-mutate" "local x=0 x=x+1 x=x+1 return x" 2)
    (list "local-multi" "local a,b = 1,2 return a + b" 3)
    (list "for-sum" "local sum=0 for i=1,5 do sum=sum+i end return sum" 15)
    (list "for-neg-step" "local n=0 for i=10,1,-1 do n=n+1 end return n" 10)
    (list "while" "local i=0 while i<5 do i=i+1 end return i" 5)
    (list "repeat" "local i=0 repeat i=i+1 until i>=3 return i" 3)
    (list "for-big" "local s=0 for i=1,100 do s=s+i end return s" 5050)
    (list
      "nested-for"
      "local s=0 for i=1,3 do for j=1,3 do s=s+1 end end return s"
      9)))
