2
;;;; Author: Paul Dietz
3
;;;; Created: Sun Aug 25 13:06:54 2002
4
;;;; Contains: Tests for SEARCH on strings
8
(compile-and-load "search-aux.lsp")
10
;;; The next test was busted due to to a stupid cut and paste
11
;;; error. The loop terminates immediately, doing nothing
14
(deftest search-string.1
15
(let ((target *searched-string*)
17
(loop for i from 0 to (1- (length target))
20
(let ((pos (search pat tail)))
21
(search-check pat tail pos))))
25
(deftest search-string.2
26
(let ((target *searched-string*)
28
(loop for i from 1 to (length target)
30
(let ((pos (search pat target :end2 i :from-end t)))
31
(search-check pat target pos :end2 i :from-end t))))
34
(deftest search-string.3
35
(let ((target *searched-string*))
36
(loop for pat in *pattern-substrings*
37
for pos = (search pat target)
38
unless (search-check pat target pos)
42
(deftest search-string.4
43
(let ((target *searched-string*))
44
(loop for pat in *pattern-substrings*
45
for pos = (search pat target :from-end t)
46
unless (search-check pat target pos :from-end t)
50
(deftest search-string.5
51
(let ((target *searched-string*))
52
(loop for pat in *pattern-substrings*
53
for pos = (search pat target :start2 25 :end2 75)
54
unless (search-check pat target pos :start2 25 :end2 75)
58
(deftest search-string.6
59
(let ((target *searched-string*))
60
(loop for pat in *pattern-substrings*
61
for pos = (search pat target :from-end t :start2 25 :end2 75)
62
unless (search-check pat target pos :from-end t
67
(deftest search-string.7
68
(let ((target *searched-string*))
69
(loop for pat in *pattern-substrings*
70
for pos = (search pat target :start2 20)
71
unless (search-check pat target pos :start2 20)
75
(deftest search-string.8
76
(let ((target *searched-string*))
77
(loop for pat in *pattern-substrings*
78
for pos = (search pat target :from-end t :start2 20)
79
unless (search-check pat target pos :from-end t
84
(deftest search-string.9
85
(flet ((%f (x) (case x ((#\0 a) 'c) ((#\1 b) 'd) (t nil))))
86
(let ((target *searched-string*))
87
(loop for pat in *pattern-sublists*
88
for pos = (search pat target :start2 20 :key #'%f)
89
unless (search-check pat target pos :start2 20 :key #'%f)
93
(deftest search-string.10
94
(let ((target *searched-string*))
95
(loop for pat in *pattern-substrings*
96
for pos = (search pat target :start2 20 :test (complement #'eql))
97
unless (search-check pat target pos :start2 20
98
:test (complement #'eql))
102
(deftest search-string.11
103
(let ((target *searched-string*))
104
(loop for pat in *pattern-substrings*
105
for pos = (search pat target :from-end t :start2 20 :test-not #'eql)
106
unless (search-check pat target pos :from-end t
107
:start2 20 :test (complement #'eql))
111
(deftest search-string.13
112
(let ((target *searched-string*))
113
(loop for pat in *pattern-substrings*
114
when (and (> (length pat) 0)
115
(let ((pos (search pat target :start1 1
116
:test (complement #'eql))))
117
(not (search-check pat target pos
119
:test (complement #'eql)))))
123
(deftest search-string.14
124
(let ((target *searched-string*))
125
(loop for pat in *pattern-substrings*
126
when (let ((len (length pat)))
128
(let ((pos (search pat target :end1 (1- len)
129
:test (complement #'eql))))
130
(not (search-check pat target pos
132
:test (complement #'eql))))))
136
(deftest search-string.15
137
(let ((a (make-array '(10) :initial-contents "abbaaababb"
139
:element-type 'character)))
142
(search "a" a :from-end t)
144
(search "ab" a :from-end t)
146
(search "aba" a :from-end t)))
149
(deftest search-string.16
150
(let ((pat (make-array '(3) :initial-contents '(#\a #\b #\a)
155
(search pat a :from-end t)
157
(setf (fill-pointer pat) 2)
159
(search pat a :from-end t)
161
(setf (fill-pointer pat) 3)
163
(search pat a :from-end t)))
166
;; Order of test, test-not
168
(deftest search-string.17
171
(search pat target :test #'char<))
174
(deftest search-string.18
177
(search pat target :test-not #'char>=))
b'\\ No newline at end of file'