@@ -109,6 +109,37 @@ def test_bigint():
109
109
assert isinstance (i , int )
110
110
assert i == BIG_NUMBER
111
111
112
+ def test_bigint_lshift ():
113
+ INT_SHIFT = - 2147483648
114
+ LONG_SHIFT = - 2147483649
115
+
116
+ assert_raises (ValueError , lambda : 0 << INT_SHIFT )
117
+ assert_raises (ValueError , lambda : - 1 << INT_SHIFT )
118
+ assert_raises (ValueError , lambda : ((1 << 32 ) - 1 ) << INT_SHIFT )
119
+ assert_raises (ValueError , lambda : ((1 << 64 ) - 1 ) << INT_SHIFT )
120
+ assert_raises (ValueError , lambda : BIG_NUMBER << INT_SHIFT )
121
+
122
+ assert_raises (ValueError , lambda : 0 << LONG_SHIFT )
123
+ assert_raises (ValueError , lambda : - 1 << LONG_SHIFT )
124
+ assert_raises (ValueError , lambda : 2147483647 << LONG_SHIFT )
125
+ assert_raises (ValueError , lambda : 9223372036854775807 << LONG_SHIFT )
126
+ assert_raises (ValueError , lambda : BIG_NUMBER << LONG_SHIFT )
127
+
128
+ def test_bigint_rshift ():
129
+ INT_SHIFT = - 2147483648
130
+ LONG_SHIFT = - 2147483649
131
+
132
+ assert_raises (ValueError , lambda : 0 >> INT_SHIFT )
133
+ assert_raises (ValueError , lambda : - 1 >> INT_SHIFT )
134
+ assert_raises (ValueError , lambda : ((1 >> 32 ) - 1 ) >> INT_SHIFT )
135
+ assert_raises (ValueError , lambda : ((1 >> 64 ) - 1 ) >> INT_SHIFT )
136
+ assert_raises (ValueError , lambda : BIG_NUMBER >> INT_SHIFT )
137
+
138
+ assert_raises (ValueError , lambda : 0 >> LONG_SHIFT )
139
+ assert_raises (ValueError , lambda : - 1 >> LONG_SHIFT )
140
+ assert_raises (ValueError , lambda : 2147483647 >> LONG_SHIFT )
141
+ assert_raises (ValueError , lambda : 9223372036854775807 >> LONG_SHIFT )
142
+ assert_raises (ValueError , lambda : BIG_NUMBER >> LONG_SHIFT )
112
143
113
144
def test_boolean2int ():
114
145
assert int (True ) == 1
@@ -425,10 +456,10 @@ def test_create_int_from_float():
425
456
assert True
426
457
else :
427
458
assert False , "expected ValueError"
428
-
459
+
429
460
class FloatSub (float ):
430
461
pass
431
-
462
+
432
463
try :
433
464
int (FloatSub (float ('nan' )))
434
465
except ValueError :
0 commit comments