module TestStrBuf // String buffers, like char sbuf[N] in C except we don't have to worry about a missing null terminator imports Prelude Data.StrBuf where main :: () -> I32 main () = do putLn "test StrBuf" p = new (strbuf #6) // will hold strings of length 5 assert (strlen p == 0) put p assert (to_strbuf "BL" p) // to_strbuf returns True if all the characters were copied put p assert (strlen p == 2) assert (to_strbuf "Brett" p) assert (strlen p == 5) put p assert (not (to_strbuf "Letner" p)) // to_strbuf returns False if not all the characters were able to be copied. assert (strlen p == 5) put p q = new (strbuf #7) assert (to_strbuf "Letner" q) assert (strlen q == 6) put q switch strcmp p q of LT -> assert True EQ -> assert False GT -> assert False assert (to_strbuf "Letne" q) put p put q switch strcmp p q of EQ -> assert True _ -> assert False assert (to_strbuf "foo" p) put p put q assert (strcpy p q) put q assert (strcmp p q == EQ) putLn "done" 0