count = ref 1
fail = ref false

def echo(s)
  # system("echo "^quote(s))
  if s != string_of(!count) then
    fail := true
  end
  count := !count + 1
  ()
end

def test(lbl,f)
  if f() then echo(lbl) else echo("fail "^lbl) end
end

test("1",{ 1==1 })
test("2",{ 1+1==2 })
test("3",{ (-1)+2==1 })
test("4",{ (-1)+2 <= 3*2 })
test("5",{ true })
test("6",{ true and true })
test("7",{ 1==1 and 1==1 })
test("8",{ (1==1) and (1==1) })
test("9",{ true and (-1)+2 <= 3*2 })

l = [ ("bla",""), ("bli","x"), ("blo","xx"), ("blu","xxx"), ("dix","10") ]
echo(l["dix"])
test("11",{ 2 == list.length(string.split(separator="",l["blo"])) })

%ifdef foobarbaz
  if = if is not a well-formed expression, and we do not care...
%endif

echo("1#{1+1}")
echo(string_of(int_of_float(float_of_string(default=13.,"blah"))))

f=fun(x)->x
# Checking that the following is not recursive:
f=fun(x)->f(x)
echo(string_of(f(14)))

if !fail then print("TEST FAILED") else print("TEST PASSED") end