@@ -49,6 +49,38 @@ class C: pass
4949if None is None and [] is not []: pass
5050else : raise TestFailed , 'identity test failed'
5151
52+ try : float ('' )
53+ except ValueError : pass
54+ else : raise TestFailed , "float('') didn't raise ValueError"
55+
56+ try : float ('5\0 ' )
57+ except ValueError : pass
58+ else : raise TestFailed , "float('5\0 ') didn't raise ValueError"
59+
60+ try : 5.0 / 0.0
61+ except ZeroDivisionError : pass
62+ else : raise TestFailed , "5.0 / 0.0 didn't raise ZeroDivisionError"
63+
64+ try : 5.0 // 0.0
65+ except ZeroDivisionError : pass
66+ else : raise TestFailed , "5.0 // 0.0 didn't raise ZeroDivisionError"
67+
68+ try : 5.0 % 0.0
69+ except ZeroDivisionError : pass
70+ else : raise TestFailed , "5.0 % 0.0 didn't raise ZeroDivisionError"
71+
72+ try : 5 / 0L
73+ except ZeroDivisionError : pass
74+ else : raise TestFailed , "5 / 0L didn't raise ZeroDivisionError"
75+
76+ try : 5 // 0L
77+ except ZeroDivisionError : pass
78+ else : raise TestFailed , "5 // 0L didn't raise ZeroDivisionError"
79+
80+ try : 5 % 0L
81+ except ZeroDivisionError : pass
82+ else : raise TestFailed , "5 % 0L didn't raise ZeroDivisionError"
83+
5284print '6.4 Numeric types (mostly conversions)'
5385if 0 != 0L or 0 != 0.0 or 0L != 0.0 : raise TestFailed , 'mixed comparisons'
5486if 1 != 1L or 1 != 1.0 or 1L != 1.0 : raise TestFailed , 'mixed comparisons'
@@ -116,6 +148,23 @@ class C: pass
116148try : int (long (x )- 1L )
117149except OverflowError : pass
118150else :raise TestFailed , 'long op'
151+
152+ try : 5 << - 5
153+ except ValueError : pass
154+ else : raise TestFailed , 'int negative shift <<'
155+
156+ try : 5L << - 5L
157+ except ValueError : pass
158+ else : raise TestFailed , 'long negative shift <<'
159+
160+ try : 5 >> - 5
161+ except ValueError : pass
162+ else : raise TestFailed , 'int negative shift >>'
163+
164+ try : 5L >> - 5L
165+ except ValueError : pass
166+ else : raise TestFailed , 'long negative shift >>'
167+
119168print '6.4.3 Floating point numbers'
120169if 12.0 + 24.0 != 36.0 : raise TestFailed , 'float op'
121170if 12.0 + (- 24.0 ) != - 12.0 : raise TestFailed , 'float op'
@@ -149,6 +198,14 @@ class C: pass
149198if min ((1 ,2 )) != 1 or max ((1 ,2 )) != 2 : raise TestFailed , 'min/max tuple'
150199if 0 in (0 ,1 ,2 ) and 1 in (0 ,1 ,2 ) and 2 in (0 ,1 ,2 ) and 3 not in (0 ,1 ,2 ): pass
151200else : raise TestFailed , 'in/not in tuple'
201+ try : ()[0 ]
202+ except IndexError : pass
203+ else : raise TestFailed , "tuple index error didn't raise IndexError"
204+ x = ()
205+ x += ()
206+ if x != (): raise TestFailed , 'tuple inplace add from () to () failed'
207+ x += (1 ,)
208+ if x != (1 ,): raise TestFailed , 'tuple resize from () failed'
152209
153210print '6.5.3 Lists'
154211if len ([]) != 0 : raise TestFailed , 'len([])'
@@ -174,6 +231,28 @@ class C: pass
174231a [1 :- 1 ] = a
175232if a != [1 , 1 , 2 , 3 , 4 , 5 , 5 ]:
176233 raise TestFailed , "list self-slice-assign (center)"
234+ try : [][0 ]
235+ except IndexError : pass
236+ else : raise TestFailed , "list index error didn't raise IndexError"
237+ try : [][0 ] = 5
238+ except IndexError : pass
239+ else : raise TestFailed , "list assignment index error didn't raise IndexError"
240+ try : [].pop ()
241+ except IndexError : pass
242+ else : raise TestFailed , "empty list.pop() didn't raise IndexError"
243+ try : [1 ].pop (5 )
244+ except IndexError : pass
245+ else : raise TestFailed , "[1].pop(5) didn't raise IndexError"
246+ try : [][0 :1 ] = 5
247+ except TypeError : pass
248+ else : raise TestFailed , "bad list slice assignment didn't raise TypeError"
249+ try : [].extend (None )
250+ except TypeError : pass
251+ else : raise TestFailed , "list.extend(None) didn't raise TypeError"
252+ a = [1 , 2 , 3 , 4 ]
253+ a *= 0
254+ if a != []:
255+ raise TestFailed , "list inplace repeat"
177256
178257
179258print '6.5.3a Additional list operations'
@@ -246,6 +325,8 @@ def myComparison(x,y):
246325print '6.6 Mappings == Dictionaries'
247326d = {}
248327if d .keys () != []: raise TestFailed , '{}.keys()'
328+ if d .values () != []: raise TestFailed , '{}.values()'
329+ if d .items () != []: raise TestFailed , '{}.items()'
249330if d .has_key ('a' ) != 0 : raise TestFailed , '{}.has_key(\' a\' )'
250331if ('a' in d ) != 0 : raise TestFailed , "'a' in {}"
251332if ('a' not in d ) != 1 : raise TestFailed , "'a' not in {}"
@@ -390,10 +471,47 @@ def __getitem__(self, key):
390471 if a : raise TestFailed , 'a not empty after popitems: %s' % str (a )
391472 if b : raise TestFailed , 'b not empty after popitems: %s' % str (b )
392473
474+ d .clear ()
475+ try : d .popitem ()
476+ except KeyError : pass
477+ else : raise TestFailed , "{}.popitem doesn't raise KeyError"
478+
479+ d [1 ] = 1
480+ try :
481+ for i in d :
482+ d [i + 1 ] = 1
483+ except RuntimeError :
484+ pass
485+ else :
486+ raise TestFailed , "changing dict size during iteration doesn't raise Error"
487+
393488try : type (1 , 2 )
394489except TypeError : pass
395490else : raise TestFailed , 'type(), w/2 args expected TypeError'
396491
397492try : type (1 , 2 , 3 , 4 )
398493except TypeError : pass
399494else : raise TestFailed , 'type(), w/4 args expected TypeError'
495+
496+ print 'Buffers'
497+ try : buffer ('asdf' , - 1 )
498+ except ValueError : pass
499+ else : raise TestFailed , "buffer('asdf', -1) should raise ValueError"
500+
501+ try : buffer (None )
502+ except TypeError : pass
503+ else : raise TestFailed , "buffer(None) should raise TypeError"
504+
505+ a = buffer ('asdf' )
506+ hash (a )
507+ b = a * 5
508+ if a == b :
509+ raise TestFailed , 'buffers should not be equal'
510+
511+ try : a [1 ] = 'g'
512+ except TypeError : pass
513+ else : raise TestFailed , "buffer assignment should raise TypeError"
514+
515+ try : a [0 :1 ] = 'g'
516+ except TypeError : pass
517+ else : raise TestFailed , "buffer slice assignment should raise TypeError"
0 commit comments