X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fstring.pure.lisp;h=1b659fdc22b4e7ca6e6ecf5d6602121fd4c0c127;hb=5cd0fc84df83d1b3321b7fc969843207721de429;hp=c44ffb37bfabda2a0a8ecbbbf5073940155128db;hpb=f35f00839f0966ec7e0064603a9c82aa042ecb5a;p=sbcl.git diff --git a/tests/string.pure.lisp b/tests/string.pure.lisp index c44ffb3..1b659fd 100644 --- a/tests/string.pure.lisp +++ b/tests/string.pure.lisp @@ -13,6 +13,7 @@ (in-package "CL-USER") +;;; basic non-destructive case operations (assert (string= (string-upcase "This is a test.") "THIS IS A TEST.")) (assert (string= (string-downcase "This is a test.") "this is a test.")) (assert (string= (string-capitalize "This is a test.") "This Is A Test.")) @@ -23,3 +24,66 @@ "Is this 900-sex-hott, please?")) (assert (string= (string-capitalize "Is this 900-Sex-hott, please?") "Is This 900-Sex-Hott, Please?")) + +;;; The non-destructive case operations accept string designators, not +;;; just strings. +(assert (string= (string-upcase '|String designator|) "STRING DESIGNATOR")) +(assert (string= (string-downcase #\S) "s")) +(assert (string= (string-downcase #\.) ".")) +(assert (string= (string-capitalize 'ya-str-desig :end 5) "Ya-StR-DESIG")) + +;;; basic destructive case operations +(let ((nstring (make-array 5 :element-type 'character :fill-pointer 0))) + (vector-push-extend #\c nstring) + (vector-push-extend #\a nstring) + (vector-push-extend #\t nstring) + (nstring-upcase nstring) + (assert (string= nstring "CAT")) + (setf (fill-pointer nstring) 2) + (nstring-downcase nstring :start 1) + (setf (fill-pointer nstring) 3) + (assert (string= nstring "CaT")) + (nstring-capitalize nstring) + (assert (string= nstring "Cat"))) + +;;; (VECTOR NIL)s are strings. Tests for that and issues uncovered in +;;; the process. +(assert (typep (make-array 1 :element-type nil) 'string)) +(assert (not (typep (make-array 2 :element-type nil) 'base-string))) +(assert (typep (make-string 3 :element-type nil) 'simple-string)) +(assert (not (typep (make-string 4 :element-type nil) 'simple-base-string))) + +(assert (subtypep (class-of (make-array 1 :element-type nil)) + (find-class 'string))) +(assert (subtypep (class-of (make-array 2 :element-type nil :fill-pointer 1)) + (find-class 'string))) + +(assert (string= "" (make-array 0 :element-type nil))) +(assert (string/= "a" (make-array 0 :element-type nil))) +(assert (string= "" (make-array 5 :element-type nil :fill-pointer 0))) + +(assert (= (sxhash "") + (sxhash (make-array 0 :element-type nil)) + (sxhash (make-array 5 :element-type nil :fill-pointer 0)) + (sxhash (make-string 0 :element-type nil)))) +(assert (subtypep (type-of (make-array 2 :element-type nil)) 'simple-string)) +(assert (subtypep (type-of (make-array 4 :element-type nil :fill-pointer t)) + 'string)) + +(assert (eq (intern "") (intern (make-array 0 :element-type nil)))) +(assert (eq (intern "") + (intern (make-array 5 :element-type nil :fill-pointer 0)))) + +(assert (raises-error? (make-string 5 :element-type t))) +(assert (raises-error? (let () (make-string 5 :element-type t)))) + +;; MISC.574 +(assert (= (funcall (lambda (a) + (declare (optimize (speed 3) (safety 1) + (debug 1) (space 2)) + (fixnum a)) + (string<= (coerce "e99mo7yAJ6oU4" 'base-string) + (coerce "aaABAAbaa" 'base-string) + :start1 a)) + 9) + 9))