diff --git a/ansi-tests/gclload2.lsp b/ansi-tests/gclload2.lsp index eddd01c31b39bf352fb6e319fefd8f47c3d6a906..bf754a1dec62dfbc58e9183c1b00d457e0d86cca 100644 --- a/ansi-tests/gclload2.lsp +++ b/ansi-tests/gclload2.lsp @@ -128,4 +128,5 @@ ;;; Tests of string comparison functions (compile-and-load "string-aux.lsp") (load "string-comparisons.lsp") +(load "make-string.lsp") diff --git a/ansi-tests/make-string.lsp b/ansi-tests/make-string.lsp new file mode 100644 index 0000000000000000000000000000000000000000..d2cfc270d944a56cbe11842f34138af6e8df468b --- /dev/null +++ b/ansi-tests/make-string.lsp @@ -0,0 +1,74 @@ +;-*- Mode: Lisp -*- +;;;; Author: Paul Dietz +;;;; Created: Sat Oct 5 12:32:20 2002 +;;;; Contains: Tests for MAKE-STRING + +(in-package :cl-test) + +(deftest make-string.1 + (let ((s (make-string 10))) + (and (stringp s) + (eql (length s) 10) + (string-all-the-same s))) + t) + +(deftest make-string.2 + (let ((s (make-string 10 :initial-element #\a))) + (and (stringp s) + (eql (length s) 10) + s)) + "aaaaaaaaaa") + +(deftest make-string.3 + (let ((s (make-string 10 :initial-element #\a + :element-type 'character))) + (and (stringp s) + (eql (length s) 10) + s)) + "aaaaaaaaaa") + +(deftest make-string.4 + (let ((s (make-string 10 :initial-element #\a + :element-type 'standard-char))) + (and (stringp s) + (eql (length s) 10) + s)) + "aaaaaaaaaa") + +(deftest make-string.5 + (let ((s (make-string 10 :initial-element #\a + :element-type 'base-char))) + (and (stringp s) + (eql (length s) 10) + s)) + "aaaaaaaaaa") + +(deftest make-string.6 + (make-string 0) + "") + +(deftest make-string.7 + (let ((s (make-string 10 :element-type 'character))) + (and (stringp s) + (eql (length s) 10) + (string-all-the-same s))) + t) + +(deftest make-string.8 + (let ((s (make-string 10 :element-type 'standard-char))) + (and (stringp s) + (eql (length s) 10) + (string-all-the-same s))) + t) + +(deftest make-string.9 + (let ((s (make-string 10 :element-type 'base-char))) + (and (stringp s) + (eql (length s) 10) + (string-all-the-same s))) + t) + + + + + diff --git a/ansi-tests/string-aux.lsp b/ansi-tests/string-aux.lsp index 9c459c67080d23718cc9e3780480f0d76734d3ff..d6e04f4aa3db8c4428b600c4db299aa6050bc7e3 100644 --- a/ansi-tests/string-aux.lsp +++ b/ansi-tests/string-aux.lsp @@ -139,7 +139,14 @@ (and x y (eq comparison '=)))))))) (defun make-random-string (n) - (let ((s (make-string n))) + (let ((s (random-case + (make-string n) + (make-array n :element-type 'character + :initial-element #\a) + (make-array n :element-type 'standard-char + :initial-element #\a) + (make-array n :element-type 'base-char + :initial-element #\a)))) (if (coin) (dotimes (i n) (setf (char s i) (elt #(#\a #\b #\A #\B) (random 4)))) @@ -151,12 +158,8 @@ (random 62))))))) s)) - - - - - - - - - \ No newline at end of file +(defun string-all-the-same (s) + (let ((len (length s))) + (or (= len 0) + (let ((c (char s 0))) + (loop for d across s always (eql c d))))))