1 # Test properties of bool promised by PEP 285
3 from test
.test_support
import verbose
, TestFailed
, TESTFN
, vereq
, have_unicode
8 raise TestFailed
, "%r is %r" % (a
, b
)
12 raise TestFailed
, "%r is %r" % (a
, b
)
20 raise TestFailed
, "bool should not be subclassable"
27 raise TestFailed
, "should not be able to create new bool instances"
29 # checking tp_print slot
30 fo
= open(TESTFN
, "wb")
31 print >> fo
, False, True
33 fo
= open(TESTFN
, "rb")
34 vereq(fo
.read(), 'False True\n')
38 # checking repr and str
39 vereq(str(False), 'False')
40 vereq(str(True), 'True')
41 vereq(repr(False), 'False')
42 vereq(repr(True), 'True')
43 vereq(eval(repr(False)), False)
44 vereq(eval(repr(True)), True)
47 verisnot(int(False), False)
49 verisnot(int(True), True)
52 verisnot(+False, False)
54 verisnot(-False, False)
56 verisnot(abs(False), False)
61 verisnot(abs(True), True)
71 verisnot(False+False, False)
73 verisnot(False+True, True)
75 verisnot(True+False, True)
79 verisnot(True-True, False)
81 verisnot(False-False, False)
83 verisnot(True-False, True)
88 verisnot(False*1, False)
91 verisnot(True/1, True)
93 verisnot(False/1, False)
97 vereq(b
**i
, int(b
)**i
)
98 verisnot(b
**i
, bool(int(b
)**i
))
100 for a
in False, True:
101 for b
in False, True:
102 veris(a
&b
, bool(int(a
)&int(b
)))
103 veris(a|b
, bool(int(a
)|
int(b
)))
104 veris(a^b
, bool(int(a
)^
int(b
)))
105 vereq(a
&int(b
), int(a
)&int(b
))
106 verisnot(a
&int(b
), bool(int(a
)&int(b
)))
107 vereq(a|
int(b
), int(a
)|
int(b
))
108 verisnot(a|
int(b
), bool(int(a
)|
int(b
)))
109 vereq(a^
int(b
), int(a
)^
int(b
))
110 verisnot(a^
int(b
), bool(int(a
)^
int(b
)))
111 vereq(int(a
)&b
, int(a
)&int(b
))
112 verisnot(int(a
)&b
, bool(int(a
)&int(b
)))
113 vereq(int(a
)|b
, int(a
)|
int(b
))
114 verisnot(int(a
)|b
, bool(int(a
)|
int(b
)))
115 vereq(int(a
)^b
, int(a
)^
int(b
))
116 verisnot(int(a
)^b
, bool(int(a
)^
int(b
)))
120 # XXX <, <=, >, >=, !=
124 veris(x
is not x
, False)
128 veris(1 not in x
, False)
129 veris(0 not in x
, True)
131 veris(not True, False)
132 veris(not False, True)
134 veris(bool(10), True)
136 veris(bool(-1), True)
137 veris(bool(0), False)
138 veris(bool("hello"), True)
139 veris(bool(""), False)
141 veris(hasattr([], "append"), True)
142 veris(hasattr([], "wobble"), False)
144 veris(callable(len), True)
145 veris(callable(1), False)
147 veris(isinstance(True, bool), True)
148 veris(isinstance(False, bool), True)
149 veris(isinstance(True, int), True)
150 veris(isinstance(False, int), True)
151 veris(isinstance(1, bool), False)
152 veris(isinstance(0, bool), False)
154 veris(issubclass(bool, int), True)
155 veris(issubclass(int, bool), False)
157 veris({}.has_key(1), False)
158 veris({1:1}.has_key(1), True)
160 veris("xyz".endswith("z"), True)
161 veris("xyz".endswith("x"), False)
162 veris("xyz0123".isalnum(), True)
163 veris("@#$%".isalnum(), False)
164 veris("xyz".isalpha(), True)
165 veris("@#$%".isalpha(), False)
166 veris("0123".isdigit(), True)
167 veris("xyz".isdigit(), False)
168 veris("xyz".islower(), True)
169 veris("XYZ".islower(), False)
170 veris(" ".isspace(), True)
171 veris("XYZ".isspace(), False)
172 veris("X".istitle(), True)
173 veris("x".istitle(), False)
174 veris("XYZ".isupper(), True)
175 veris("xyz".isupper(), False)
176 veris("xyz".startswith("x"), True)
177 veris("xyz".startswith("z"), False)
180 veris(unicode("xyz", 'ascii').endswith(unicode("z", 'ascii')), True)
181 veris(unicode("xyz", 'ascii').endswith(unicode("x", 'ascii')), False)
182 veris(unicode("xyz0123", 'ascii').isalnum(), True)
183 veris(unicode("@#$%", 'ascii').isalnum(), False)
184 veris(unicode("xyz", 'ascii').isalpha(), True)
185 veris(unicode("@#$%", 'ascii').isalpha(), False)
186 veris(unicode("0123", 'ascii').isdecimal(), True)
187 veris(unicode("xyz", 'ascii').isdecimal(), False)
188 veris(unicode("0123", 'ascii').isdigit(), True)
189 veris(unicode("xyz", 'ascii').isdigit(), False)
190 veris(unicode("xyz", 'ascii').islower(), True)
191 veris(unicode("XYZ", 'ascii').islower(), False)
192 veris(unicode("0123", 'ascii').isnumeric(), True)
193 veris(unicode("xyz", 'ascii').isnumeric(), False)
194 veris(unicode(" ", 'ascii').isspace(), True)
195 veris(unicode("XYZ", 'ascii').isspace(), False)
196 veris(unicode("X", 'ascii').istitle(), True)
197 veris(unicode("x", 'ascii').istitle(), False)
198 veris(unicode("XYZ", 'ascii').isupper(), True)
199 veris(unicode("xyz", 'ascii').isupper(), False)
200 veris(unicode("xyz", 'ascii').startswith(unicode("x", 'ascii')), True)
201 veris(unicode("xyz", 'ascii').startswith(unicode("z", 'ascii')), False)
203 f
= file(TESTFN
, "w")
204 veris(f
.closed
, False)
206 veris(f
.closed
, True)
210 veris(operator
.truth(0), False)
211 veris(operator
.truth(1), True)
212 veris(operator
.isCallable(0), False)
213 veris(operator
.isCallable(len), True)
214 veris(operator
.isNumberType(None), False)
215 veris(operator
.isNumberType(0), True)
216 veris(operator
.not_(1), False)
217 veris(operator
.not_(0), True)
218 veris(operator
.isSequenceType(0), False)
219 veris(operator
.isSequenceType([]), True)
220 veris(operator
.contains([], 1), False)
221 veris(operator
.contains([1], 1), True)
222 veris(operator
.isMappingType(1), False)
223 veris(operator
.isMappingType({}), True)
224 veris(operator
.lt(0, 0), False)
225 veris(operator
.lt(0, 1), True)
228 veris(marshal
.loads(marshal
.dumps(True)), True)
229 veris(marshal
.loads(marshal
.dumps(False)), False)
232 veris(pickle
.loads(pickle
.dumps(True)), True)
233 veris(pickle
.loads(pickle
.dumps(False)), False)
234 veris(pickle
.loads(pickle
.dumps(True, True)), True)
235 veris(pickle
.loads(pickle
.dumps(False, True)), False)
238 veris(cPickle
.loads(cPickle
.dumps(True)), True)
239 veris(cPickle
.loads(cPickle
.dumps(False)), False)
240 veris(cPickle
.loads(cPickle
.dumps(True, True)), True)
241 veris(cPickle
.loads(cPickle
.dumps(False, True)), False)
243 veris(pickle
.loads(cPickle
.dumps(True)), True)
244 veris(pickle
.loads(cPickle
.dumps(False)), False)
245 veris(pickle
.loads(cPickle
.dumps(True, True)), True)
246 veris(pickle
.loads(cPickle
.dumps(False, True)), False)
248 veris(cPickle
.loads(pickle
.dumps(True)), True)
249 veris(cPickle
.loads(pickle
.dumps(False)), False)
250 veris(cPickle
.loads(pickle
.dumps(True, True)), True)
251 veris(cPickle
.loads(pickle
.dumps(False, True)), False)
253 # Test for specific backwards-compatible pickle values
254 vereq(pickle
.dumps(True), "I01\n.")
255 vereq(pickle
.dumps(False), "I00\n.")
256 vereq(cPickle
.dumps(True), "I01\n.")
257 vereq(cPickle
.dumps(False), "I00\n.")
258 vereq(pickle
.dumps(True, True), "I01\n.")
259 vereq(pickle
.dumps(False, True), "I00\n.")
260 vereq(cPickle
.dumps(True, True), "I01\n.")
261 vereq(cPickle
.dumps(False, True), "I00\n.")