source: trunk/source/tests/ansi-tests/string-trim.lsp @ 8991

Last change on this file since 8991 was 8991, checked in by gz, 12 years ago

Check in the gcl ansi test suite (original, in preparation for making local changes)

File size: 5.0 KB
Line 
1;-*- Mode:     Lisp -*-
2;;;; Author:   Paul Dietz
3;;;; Created:  Thu Oct  3 21:53:38 2002
4;;;; Contains: Tests for STRING-TRIM
5
6(in-package :cl-test)
7
8(deftest string-trim.1
9  (let* ((s (copy-seq "abcdaba"))
10         (s2 (string-trim "ab" s)))
11    (values s s2))
12  "abcdaba"
13  "cd")
14
15(deftest string-trim.2
16  (let* ((s (copy-seq "abcdaba"))
17         (s2 (string-trim '(#\a #\b) s)))
18    (values s s2))
19  "abcdaba"
20  "cd")
21
22(deftest string-trim.3
23  (let* ((s (copy-seq "abcdaba"))
24         (s2 (string-trim #(#\a #\b) s)))
25    (values s s2))
26  "abcdaba"
27  "cd")
28
29(deftest string-trim.4
30  (let* ((s (copy-seq "abcdaba"))
31         (s2 (string-trim (make-array 2 :initial-contents '(#\a #\b))
32                          s)))
33    (values s s2))
34  "abcdaba"
35  "cd")
36
37(deftest string-trim.5
38  (let* ((s (copy-seq "abcdaba"))
39         (s2 (string-trim (make-array 2 :initial-contents '(#\a #\b)
40                                      :element-type 'character)
41                          s)))
42    (values s s2))
43  "abcdaba"
44  "cd")
45
46(deftest string-trim.6
47  (let* ((s (copy-seq "abcdaba"))
48         (s2 (string-trim (make-array 2 :initial-contents '(#\a #\b)
49                                      :element-type 'standard-char)
50                          s)))
51    (values s s2))
52  "abcdaba"
53  "cd")
54
55(deftest string-trim.7
56  (let* ((s (copy-seq "abcdaba"))
57         (s2 (string-trim (make-array 2 :initial-contents '(#\a #\b)
58                                      :element-type 'base-char)
59                          s)))
60    (values s s2))
61  "abcdaba"
62  "cd")
63
64(deftest string-trim.8
65  (let* ((s (copy-seq "abcdaba"))
66         (s2 (string-trim (make-array 4 :initial-contents '(#\a #\b #\c #\d)
67                                      :element-type 'character
68                                      :fill-pointer 2)
69                          s)))
70    (values s s2))
71  "abcdaba"
72  "cd")
73
74(deftest string-trim.8a
75  (let* ((s (copy-seq "abcdaba"))
76         (s2 (string-trim (make-array 4 :initial-contents '(#\a #\b #\c #\d)
77                                      :element-type 'base-char
78                                      :fill-pointer 2)
79                          s)))
80    (values s s2))
81  "abcdaba"
82  "cd")
83
84(deftest string-trim.9
85  (let* ((s (make-array 7 :initial-contents "abcdaba"
86                        :element-type 'character
87                        ))
88         (s2 (string-trim "ab" s)))
89    (values s s2))
90  "abcdaba"
91  "cd")
92
93(deftest string-trim.10
94  (let* ((s (make-array 9 :initial-contents "abcdabadd"
95                        :element-type 'character
96                        :fill-pointer 7))
97         (s2 (string-trim "ab" s)))
98    (values s s2))
99  "abcdaba"
100  "cd")
101
102(deftest string-trim.10a
103  (let* ((s (make-array 9 :initial-contents "abcdabadd"
104                        :element-type 'base-char
105                        :adjustable t
106                        :fill-pointer 7))
107         (s2 (string-trim "ab" s)))
108    (values s s2))
109  "abcdaba"
110  "cd")
111
112(deftest string-trim.11
113  (let* ((s (make-array 7 :initial-contents "abcdaba"
114                        :element-type 'standard-char
115                        ))
116         (s2 (string-trim "ab" s)))
117    (values s s2))
118  "abcdaba"
119  "cd")
120
121(deftest string-trim.12
122  (let* ((s (make-array 7 :initial-contents "abcdaba"
123                        :element-type 'base-char
124                        ))
125         (s2 (string-trim "ab" s)))
126    (values s s2))
127  "abcdaba"
128  "cd")
129
130;;; Test that trimming is case sensitive
131(deftest string-trim.13
132  (let* ((s (copy-seq "Aa"))
133         (s2 (string-trim "a" s)))
134    (values s s2))
135  "Aa" "A")
136
137(deftest string-trim.14
138  (let* ((s '|abcdaba|)
139         (s2 (string-trim "ab" s)))
140    (values (symbol-name s) s2))
141  "abcdaba"
142  "cd")
143
144(deftest string-trim.15
145  (string-trim "abc" "")
146  "")
147
148(deftest string-trim.16
149  (string-trim "a" #\a)
150  "")
151
152(deftest string-trim.17
153  (string-trim "b" #\a)
154  "a")
155
156(deftest string-trim.18
157  (string-trim "" (copy-seq "abcde"))
158  "abcde")
159
160(deftest string-trim.19
161  (string-trim "abc" (copy-seq "abcabcabc"))
162  "")
163
164(deftest string-trim.20
165  :notes (:nil-vectors-are-strings)
166  (string-trim "abcd" (make-array '(0) :element-type nil))
167  "")
168
169(deftest string-trim.21
170  :notes (:nil-vectors-are-strings)
171  (string-trim (make-array '(0) :element-type nil) "abcd")
172  "abcd")
173
174(deftest string-trim.22
175  (let ((s (make-array '(6) :initial-contents "abcaeb"
176                       :element-type 'base-char
177                       :adjustable t)))
178    (values (string-trim "ab" s) s))
179  "cae" "abcaeb")
180
181(deftest string-trim.23
182  (let ((s (make-array '(6) :initial-contents "abcaeb"
183                       :element-type 'character
184                       :adjustable t)))
185    (values (string-trim "ab" s) s))
186  "cae" "abcaeb")
187
188(deftest string-trim.24
189  (let* ((etype 'base-char)
190         (s0 (make-array '(6) :initial-contents "abcaeb"
191                         :element-type etype))
192         (s (make-array '(3) :element-type etype
193                        :displaced-to s0
194                        :displaced-index-offset 1)))
195    (values (string-trim "ab" s) s s0))
196  "c" "bca" "abcaeb")
197
198(deftest string-trim.25
199  (let* ((etype 'character)
200         (s0 (make-array '(6) :initial-contents "abcaeb"
201                         :element-type etype))
202         (s (make-array '(3) :element-type etype
203                        :displaced-to s0
204                        :displaced-index-offset 1)))
205    (values (string-trim "ab" s) s s0))
206  "c" "bca" "abcaeb")
207
208(deftest string-trim.order.1
209  (let ((i 0) x y)
210    (values
211     (string-trim (progn (setf x (incf i)) " ")
212                  (progn (setf y (incf i))
213                         (copy-seq "   abc d e f  ")))
214     i x y))
215  "abc d e f" 2 1 2)
216
217(def-fold-test string-trim.fold.1 (string-trim " " " abcd "))
218
219;;; Error cases
220
221(deftest string-trim.error.1
222  (signals-error (string-trim) program-error)
223  t)
224
225(deftest string-trim.error.2
226  (signals-error (string-trim "abc") program-error)
227  t)
228
229(deftest string-trim.error.3
230  (signals-error (string-trim "abc" "abcdddabc" nil) program-error)
231  t)
Note: See TracBrowser for help on using the repository browser.