;-*- Mode:     Lisp -*-
;;;; Author:   Paul Dietz
;;;; Created:  Sun Aug 29 17:31:24 2004
;;;; Contains: Tests of SIMPLE-STRING-P

(in-package :cl-test)

(deftest simple-string-p.1
  (check-type-predicate #'simple-string-p 'simple-string)
  nil)

(deftest simple-string-p.2
  (notnot-mv (simple-string-p "ancd"))
  t)

(deftest simple-string-p.3
  (simple-string-p 0)
  nil)

;;; (deftest simple-string-p.4
;;;  (simple-string-p (make-array 4 :element-type 'character
;;;                            :initial-contents '(#\a #\a #\a #\b)
;;;                            :fill-pointer t))
;;;  nil)

(deftest simple-string-p.5
  (notnot-mv
   (simple-string-p (make-array
                     4 :element-type 'base-char
                     :initial-contents '(#\a #\a #\a #\b))))
  t)

(deftest simple-string-p.6
  (notnot-mv
   (simple-string-p (make-array
                     4 :element-type 'standard-char
                     :initial-contents '(#\a #\a #\a #\b))))
  t)

;;; (deftest simple-string-p.7
;;;  (let* ((s (make-array 10 :element-type 'character
;;;                     :initial-element #\a))
;;;      (s2 (make-array 4 :element-type 'character
;;;                      :displaced-to s
;;;                      :displaced-index-offset 2)))
;;;    (simple-string-p s2))
;;;  nil)

(deftest simple-string-p.8
  :notes (:nil-vectors-are-strings)
  (notnot-mv (simple-string-p (make-array '(0) :element-type nil)))
  t)

(deftest simple-string-p.9
  :notes (:nil-vectors-are-strings)
  (notnot-mv (simple-string-p (make-array '(37) :element-type nil)))
  t)

(deftest simple-string-p.10
  (let ((i 0))
    (values
     (notnot (simple-string-p (progn (incf i) "")))
     i))
  t 1)

;;; Error tests

(deftest simple-string-p.error.1
  (signals-error (simple-string-p) program-error)
  t)

(deftest simple-string-p.error.2
  (signals-error (simple-string-p "" nil) program-error)
  t)
