packages feed

pec-0.1: test_cases/TestStrBuf.pec

module TestStrBuf exports all

where

import Prelude
import StrBuf

// String buffers, like char sbuf[N] in C except we don't have to worry about a missing null terminator

main :: () -> W32
main () = do
  putLn "test StrBuf"
  p = new (strbuf #5) // declaring an empty string buffer requires a singleton "Count" value
  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 #6)
  assert (to_strbuf "Letner" q)
  assert (strlen q == 6)
  put q
  case strcmp p q of
    LT -> assert True
    EQ -> assert False
    GT -> assert False
  assert (to_strbuf "Letne" q)
  puts (from_strbuf p)
  puts (from_strbuf q)
  case strcmp p q of
    EQ -> assert True
    _ -> assert False
  to_strbuf "foo" p
  put p
  put q
  strcpy p q
  put q
  assert (strcmp p q == EQ)
  putLn "done"
  0