Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 20s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
50 lines
1.2 KiB
Plaintext
50 lines
1.2 KiB
Plaintext
;; program-io.sx — tests for real IO monad (putStrLn, print, putStr).
|
|
|
|
(hk-test
|
|
"putStrLn single line"
|
|
(hk-run-io "main = putStrLn \"hello\"")
|
|
(list "hello"))
|
|
|
|
(hk-test
|
|
"putStrLn two lines via do"
|
|
(hk-run-io "main = do { putStrLn \"a\"; putStrLn \"b\" }")
|
|
(list "a" "b"))
|
|
|
|
(hk-test "print Int" (hk-run-io "main = print 42") (list "42"))
|
|
|
|
(hk-test "print Bool True" (hk-run-io "main = print True") (list "True"))
|
|
|
|
(hk-test
|
|
"putStr collects string"
|
|
(hk-run-io "main = putStr \"hello\"")
|
|
(list "hello"))
|
|
|
|
(hk-test
|
|
"do with let then putStrLn"
|
|
(hk-run-io "main = do\n let s = \"world\"\n putStrLn s")
|
|
(list "world"))
|
|
|
|
(hk-test
|
|
"do sequence three lines"
|
|
(hk-run-io "main = do { putStrLn \"1\"; putStrLn \"2\"; putStrLn \"3\" }")
|
|
(list "1" "2" "3"))
|
|
|
|
(hk-test
|
|
"print computed value"
|
|
(hk-run-io "main = print (6 * 7)")
|
|
(list "42"))
|
|
|
|
(hk-test
|
|
"putStrLn returns IO unit"
|
|
(hk-deep-force (hk-run "main = putStrLn \"hi\""))
|
|
(list "IO" (list "Tuple")))
|
|
|
|
(hk-test
|
|
"hk-run-io resets between calls"
|
|
(begin
|
|
(hk-run-io "main = putStrLn \"first\"")
|
|
(hk-run-io "main = putStrLn \"second\""))
|
|
(list "second"))
|
|
|
|
{:fails hk-test-fails :pass hk-test-pass :fail hk-test-fail}
|