~ubuntu-branches/ubuntu/quantal/gclcvs/quantal

« back to all changes in this revision

Viewing changes to ansi-tests/make-string.lsp

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2004-06-24 15:13:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040624151346-xh0xaaktyyp7aorc
Tags: 2.7.0-26
C_GC_OFFSET is 2 on m68k-linux

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
;-*- Mode:     Lisp -*-
 
2
;;;; Author:   Paul Dietz
 
3
;;;; Created:  Sat Oct  5 12:32:20 2002
 
4
;;;; Contains: Tests for MAKE-STRING
 
5
 
 
6
(in-package :cl-test)
 
7
 
 
8
(deftest make-string.1
 
9
  (let ((s (make-string 10)))
 
10
    (and (stringp s)
 
11
         #+:ansi-tests-strict-initial-element
 
12
         (string-all-the-same s)
 
13
         (eqlt (length s) 10)
 
14
         ))
 
15
  t)
 
16
 
 
17
(deftest make-string.2
 
18
  (let ((s (make-string 10 :initial-element #\a)))
 
19
    (and (stringp s)
 
20
         (eql (length s) 10)
 
21
         s))
 
22
  "aaaaaaaaaa")
 
23
 
 
24
(deftest make-string.3
 
25
  (let ((s (make-string 10 :initial-element #\a
 
26
                        :element-type 'character)))
 
27
    (and (stringp s)
 
28
         (eql (length s) 10)
 
29
         s))
 
30
  "aaaaaaaaaa")
 
31
 
 
32
(deftest make-string.4
 
33
  (let ((s (make-string 10 :initial-element #\a
 
34
                        :element-type 'standard-char)))
 
35
    (and (stringp s)
 
36
         (eql (length s) 10)
 
37
         s))
 
38
  "aaaaaaaaaa")
 
39
 
 
40
(deftest make-string.5
 
41
  (let ((s (make-string 10 :initial-element #\a
 
42
                        :element-type 'base-char)))
 
43
    (and (stringp s)
 
44
         (eql (length s) 10)
 
45
         s))
 
46
  "aaaaaaaaaa")
 
47
 
 
48
(deftest make-string.6
 
49
  (make-string 0)
 
50
  "")
 
51
 
 
52
(deftest make-string.7
 
53
  (let ((s (make-string 10 :element-type 'character)))
 
54
    (and (stringp s)
 
55
         (eqlt (length s) 10)
 
56
         #+:ansi-tests-strict-initial-element
 
57
         (string-all-the-same s)
 
58
         ))
 
59
  t)
 
60
 
 
61
(deftest make-string.8
 
62
  (let ((s (make-string 10 :element-type 'standard-char)))
 
63
    (and (stringp s)
 
64
         (eqlt (length s) 10)
 
65
         #+:ansi-tests-strict-initial-element
 
66
         (string-all-the-same s)
 
67
         ))
 
68
  t)
 
69
 
 
70
(deftest make-string.9
 
71
  (let ((s (make-string 10 :element-type 'base-char)))
 
72
    (and (stringp s)
 
73
         (eqlt (length s) 10)
 
74
         #+:ansi-tests-strict-initial-element
 
75
         (string-all-the-same s)
 
76
         ))
 
77
  t)
 
78
 
 
79
(deftest make-string.10
 
80
  :notes (:nil-vectors-are-strings)
 
81
  (let ((s (make-string 0 :element-type nil)))
 
82
    (values
 
83
     (notnot (stringp s))
 
84
     (eqlt (length s) 0)
 
85
     (equalt s "")))
 
86
  t t t)
 
87
 
 
88
;;; Keyword tests
 
89
;
 
90
(deftest make-string.allow-other-keys.1
 
91
  (make-string 5 :allow-other-keys t :initial-element #\a)
 
92
  "aaaaa")
 
93
 
 
94
(deftest make-string.allow-other-keys.2
 
95
  (make-string 5 :initial-element #\a :allow-other-keys t)
 
96
  "aaaaa")
 
97
 
 
98
(deftest make-string.allow-other-keys.3
 
99
  (make-string 5 :initial-element #\a :allow-other-keys t
 
100
               :bad t)
 
101
  "aaaaa")
 
102
 
 
103
(deftest make-string.allow-other-keys.4
 
104
  (make-string 5 :bad t :allow-other-keys t :allow-other-keys nil
 
105
               :initial-element #\a)
 
106
  "aaaaa")
 
107
 
 
108
(deftest make-string.allow-other-keys.5
 
109
  (make-string 5 :allow-other-keys t :bad t :allow-other-keys nil
 
110
               :initial-element #\a)
 
111
  "aaaaa")
 
112
 
 
113
(deftest make-string.allow-other-keys.6
 
114
  (make-string 5 :allow-other-keys t :allow-other-keys nil :bad nil
 
115
               :initial-element #\a)
 
116
  "aaaaa")
 
117
 
 
118
(deftest make-string.keywords.7
 
119
  (make-string 5 :initial-element #\a :initial-element #\b)
 
120
  "aaaaa")
 
121
 
 
122
;; Error cases
 
123
 
 
124
(deftest make-string.error.1
 
125
  (signals-error (make-string) program-error)
 
126
  t)
 
127
 
 
128
(deftest make-string.error.2
 
129
  (signals-error (make-string 10 :bad t) program-error)
 
130
  t)
 
131
 
 
132
(deftest make-string.error.3
 
133
  (signals-error (make-string 10 :bad t :allow-other-keys nil)
 
134
                 program-error)
 
135
  t)
 
136
 
 
137
(deftest make-string.error.4
 
138
  (signals-error (make-string 10 :initial-element) program-error)
 
139
  t)
 
140
 
 
141
(deftest make-string.error.5
 
142
  (signals-error (make-string 10 1 1) program-error)
 
143
  t)
 
144
 
 
145
(deftest make-string.error.6
 
146
  (signals-error (make-string 10 :element-type) program-error)
 
147
  t)
 
148
 
 
149
;;; Order of evaluation
 
150
 
 
151
(deftest make-string.order.1
 
152
  (let ((i 0) a b)
 
153
    (values
 
154
     (make-string (progn (setf a (incf i)) 4)
 
155
                  :initial-element (progn (setf b (incf i)) #\a))
 
156
     i a b))
 
157
  "aaaa" 2 1 2)
 
158
 
 
159
(deftest make-string.order.2
 
160
  (let ((i 0) a b c)
 
161
    (values
 
162
     (make-string (progn (setf a (incf i)) 4)
 
163
                  :initial-element (progn (setf b (incf i)) #\a)
 
164
                  :element-type (progn (setf c (incf i)) 'base-char))
 
165
     i a b c))
 
166
  "aaaa" 3 1 2 3)
 
167
 
 
168
(deftest make-string.order.3
 
169
  (let ((i 0) a b c)
 
170
    (values
 
171
     (make-string (progn (setf a (incf i)) 4)
 
172
                  :element-type (progn (setf b (incf i)) 'base-char)
 
173
                  :initial-element (progn (setf c (incf i)) #\a))
 
174
     i a b c))
 
175
  "aaaa" 3 1 2 3)
 
176
 
 
177