nstring-downcase.lsp 5.13 KB
Newer Older
1 2 3 4 5 6 7 8 9
;-*- Mode:     Lisp -*-
;;;; Author:   Paul Dietz
;;;; Created:  Thu Oct  3 21:33:16 2002
;;;; Contains: Tests for NSTRING-DOWNCASE

(in-package :cl-test)

(deftest nstring-downcase.1
  (let* ((s (copy-seq "A"))
sds's avatar
sds committed
10
         (s2 (nstring-downcase s)))
11
    (values (eqt s s2) s))
12 13 14 15
  t "a")

(deftest nstring-downcase.2
  (let* ((s (copy-seq "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"))
sds's avatar
sds committed
16
         (s2 (nstring-downcase s)))
17
    (values (eqt s s2) s))
18 19 20 21 22
  t
  "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")

(deftest nstring-downcase.3
  (let* ((s (copy-seq "0123456789!@#$%^&*()_-+=|\\{}[]:\";'<>?,./ "))
sds's avatar
sds committed
23
         (s2 (nstring-downcase s)))
24
    (values (eqt s s2) s))
25 26 27 28 29
  t
  "0123456789!@#$%^&*()_-+=|\\{}[]:\";'<>?,./ ")

(deftest nstring-downcase.6
  (let* ((s (make-array 6 :element-type 'character
sds's avatar
sds committed
30 31
                        :initial-contents '(#\A #\B #\C #\D #\E #\F)))
         (s2 (nstring-downcase s)))
32
    (values (eqt s s2) s))
33 34 35 36
  t "abcdef")

(deftest nstring-downcase.7
  (let* ((s (make-array 6 :element-type 'standard-char
sds's avatar
sds committed
37 38
                        :initial-contents '(#\A #\B #\7 #\D #\E #\F)))
         (s2 (nstring-downcase s)))
39
    (values (eqt s s2) s))
40 41 42 43 44 45 46 47
  t
  "ab7def")

;; Tests with :start, :end

(deftest nstring-downcase.8
  (let ((s "ABCDEF"))
     (loop for i from 0 to 6
sds's avatar
sds committed
48
           collect (nstring-downcase (copy-seq s) :start i)))
49 50 51 52 53
  ("abcdef" "Abcdef" "ABcdef" "ABCdef" "ABCDef" "ABCDEf" "ABCDEF"))

(deftest nstring-downcase.9
  (let ((s "ABCDEF"))
     (loop for i from 0 to 6
sds's avatar
sds committed
54
           collect (nstring-downcase (copy-seq s) :start i :end nil)))
55 56 57 58 59
  ("abcdef" "Abcdef" "ABcdef" "ABCdef" "ABCDef" "ABCDEf" "ABCDEF"))

(deftest nstring-downcase.10
  (let ((s "ABCDE"))
    (loop for i from 0 to 4
sds's avatar
sds committed
60 61 62 63
          collect (loop for j from i to 5
                        collect (string-invertcase
                                 (nstring-downcase (copy-seq s)
                                                   :start i :end j)))))
64 65 66 67 68 69
  (("abcde" "Abcde" "ABcde" "ABCde" "ABCDe" "ABCDE")
   ("abcde" "aBcde" "aBCde" "aBCDe" "aBCDE")
   ("abcde" "abCde" "abCDe" "abCDE")
   ("abcde" "abcDe" "abcDE")
   ("abcde" "abcdE")))

70
(deftest nstring-downcase.11
71
  :notes (:nil-vectors-are-strings)
72 73 74
  (nstring-downcase (make-array '(0) :element-type nil))
  "")

75 76
(deftest nstring-downcase.12
  (loop for type in '(standard-char base-char character)
sds's avatar
sds committed
77 78 79 80 81 82 83 84
        for s = (make-array '(10) :element-type type
                            :fill-pointer 5
                            :initial-contents "aB0cDefGHi")
        collect (list (copy-seq s)
                      (copy-seq (nstring-downcase s))
                      (copy-seq s)
                      (progn (setf (fill-pointer s) 10) (copy-seq s))
                      ))
85 86 87 88 89 90
  (("aB0cD" "ab0cd" "ab0cd" "ab0cdefGHi")
   ("aB0cD" "ab0cd" "ab0cd" "ab0cdefGHi")
   ("aB0cD" "ab0cd" "ab0cd" "ab0cdefGHi")))

(deftest nstring-downcase.13
  (loop for type in '(standard-char base-char character)
sds's avatar
sds committed
91 92 93 94 95 96 97 98 99
        for s0 = (make-array '(10) :element-type type
                             :initial-contents "zZaB0cDefG")
        for s = (make-array '(5) :element-type type
                            :displaced-to s0
                            :displaced-index-offset 2)
        collect (list (copy-seq s)
                      (nstring-downcase s)
                      (copy-seq s)
                      s0))
100 101 102 103 104 105
  (("aB0cD" "ab0cd" "ab0cd" "zZab0cdefG")
   ("aB0cD" "ab0cd" "ab0cd" "zZab0cdefG")
   ("aB0cD" "ab0cd" "ab0cd" "zZab0cdefG")))

(deftest nstring-downcase.14
  (loop for type in '(standard-char base-char character)
sds's avatar
sds committed
106 107 108 109 110 111
        for s = (make-array '(5) :element-type type
                            :adjustable t
                            :initial-contents "aB0cD")
        collect (list (copy-seq s)
                      (nstring-downcase s)
                      (copy-seq s)))
112 113 114 115 116 117
  (("aB0cD" "ab0cd" "ab0cd")
   ("aB0cD" "ab0cd" "ab0cd")
   ("aB0cD" "ab0cd" "ab0cd")))

;;; Order of evaluation tests

118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
(deftest nstring-downcase.order.1
  (let ((i 0) a b c (s (copy-seq "ABCDEF")))
    (values
     (nstring-downcase
      (progn (setf a (incf i)) s)
      :start (progn (setf b (incf i)) 1)
      :end   (progn (setf c (incf i)) 4))
     i a b c))
  "AbcdEF" 3 1 2 3)

(deftest nstring-downcase.order.2
  (let ((i 0) a b c (s (copy-seq "ABCDEF")))
    (values
     (nstring-downcase
      (progn (setf a (incf i)) s)
      :end   (progn (setf b (incf i)) 4)
      :start (progn (setf c (incf i)) 1))
     i a b c))
  "AbcdEF" 3 1 2 3)

138 139 140
;;; Error cases

(deftest nstring-downcase.error.1
141 142
  (signals-error (nstring-downcase) program-error)
  t)
143 144

(deftest nstring-downcase.error.2
145 146
  (signals-error (nstring-downcase (copy-seq "abc") :bad t) program-error)
  t)
147 148

(deftest nstring-downcase.error.3
149 150
  (signals-error (nstring-downcase (copy-seq "abc") :start) program-error)
  t)
151 152

(deftest nstring-downcase.error.4
153
  (signals-error (nstring-downcase (copy-seq "abc") :bad t
sds's avatar
sds committed
154 155
                                      :allow-other-keys nil)
                 program-error)
156
  t)
157 158

(deftest nstring-downcase.error.5
159 160
  (signals-error (nstring-downcase (copy-seq "abc") :end) program-error)
  t)
161 162

(deftest nstring-downcase.error.6
163 164 165
  (signals-error (nstring-downcase (copy-seq "abc") 1 2) program-error)
  t)

166 167


168