packages feed

pec-0.2.0: test_cases/TestStrBuf.pec

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