@@ -109,6 +109,37 @@ def test_bigint():
109109 assert isinstance (i , int )
110110 assert i == BIG_NUMBER
111111
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 )
112143
113144def test_boolean2int ():
114145 assert int (True ) == 1
@@ -425,10 +456,10 @@ def test_create_int_from_float():
425456 assert True
426457 else :
427458 assert False , "expected ValueError"
428-
459+
429460 class FloatSub (float ):
430461 pass
431-
462+
432463 try :
433464 int (FloatSub (float ('nan' )))
434465 except ValueError :
0 commit comments