X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fstring.pure.lisp;h=89e98066c94daf1cff3700ee4f4f748d5a1e4b0e;hb=cf49f2d086069a9c1b57f501df9a6a0bd3a34c3c;hp=82ccc94005964254065949625c4b1f9e0e5acd89;hpb=94e0f68a627ce839d59e88b4c8faad486e75af91;p=sbcl.git diff --git a/tests/string.pure.lisp b/tests/string.pure.lisp index 82ccc94..89e9806 100644 --- a/tests/string.pure.lisp +++ b/tests/string.pure.lisp @@ -119,3 +119,29 @@ (make-test " x x " "x x " " x x" "x x")) +;;; Trimming should respect fill-pointers +(let* ((s (make-array 9 :initial-contents "abcdabadd" :element-type + 'character :fill-pointer 7)) + (s2 (string-left-trim "ab" s)) + (s3 (string-right-trim "ab" s))) + (assert (equal "abcdaba" s)) + (assert (equal "cdaba" s2)) + (assert (equal "abcd" s3))) + +;;; Trimming should replace displacement offsets +(let* ((etype 'base-char) + (s0 + (make-array '(6) :initial-contents "abcaeb" :element-type etype)) + (s + (make-array '(3) :element-type etype :displaced-to s0 :displaced-index-offset 1))) + (assert (equal "bc" (string-right-trim "ab" s))) + (assert (equal "bca" s)) + (assert (equal "abcaeb" s0))) + +;;; Trimming non-simple-strings when there is nothing to do +(let ((a (make-array 10 :element-type 'character :initial-contents "abcde00000" :fill-pointer 5))) + (assert (equal "abcde" (string-right-trim "Z" a)))) + +;;; Trimming non-strings when there is nothing to do. +(string-right-trim " " #\a) +