string-test.ss
#lang mzscheme

(require (file "string.ss")
         (file "test-base.ss"))

(provide string-tests)

(define string-tests
  (test-suite "string.ss"
    
    (test-equal? "string-namecase works on O'"
      (string-namecase "O'GRADY, DON'T LISTEN to o'connor. HE'S crazy.")
      "O'Grady, Don't Listen To O'Connor. He's Crazy.")
    
    (test-equal? "string-namecase works on Mac and Mc"
      (string-namecase "Macdonald hates MACDONALD'S ChickeN MCNUGGETS")
      "MacDonald Hates MacDonald's Chicken McNuggets")
    
    (test-equal? "string-namecase works on le, van and der"
      (string-namecase "LE COMBER, VAN DER GIEZEN")
      "le Comber, van der Giezen")
    
    (test-equal? "ensure-string leaves a string as a string"
      (ensure-string "dave")
      "dave")
    
    (test-equal? "ensure-string converts a bytes to a string"
      (ensure-string #"dave")
      "dave")
    
    (test-equal? "ensure-string leaves a symbol as is"
      (ensure-string 'dave)
      'dave)
    
    (test-equal? "ensure-string leaves #f as is"
      (ensure-string #f)
      #f)
    
    (test-equal? "string-delimit with no keyword arguments"
      (string-delimit (list "a" "b" "c")
                      ", ")
      "a, b, c")
    
    (test-equal? "string-delimit with #:prefix argument"
      (string-delimit (list "a" "b" "c")
                      ", "
                      #:prefix "[")
      "[a, b, c")
    
    (test-equal? "string-delimit with #:suffix argument"
      (string-delimit (list "a" "b" "c")
                      ", "
                      #:suffix "]")
      "a, b, c]")
    
    (test-equal? "string-delimit with #:prefix and #:suffix arguments"
      (string-delimit (list "a" "b" "c")
                      ", "
                      #:prefix "["
                      #:suffix "]")
      "[a, b, c]")
    
    ))