@@ -55,16 +55,17 @@ def test_basic(self):
5555 self .assertEqual (int (- 3.5 ), - 3 )
5656 self .assertEqual (int ("-3" ), - 3 )
5757 self .assertEqual (int (" -3 " ), - 3 )
58+ self .assertEqual (int (" \N{MINUS SIGN} 3 " ), - 3 )
5859 self .assertEqual (int ("\N{EM SPACE} -3\N{EN SPACE} " ), - 3 )
5960 # Different base:
6061 self .assertEqual (int ("10" ,16 ), 16 )
6162 # Test conversion from strings and various anomalies
6263 for s , v in L :
63- for sign in "" , "+" , "-" :
64+ for sign in "" , "+" , "-" , " \N{MINUS SIGN} " :
6465 for prefix in "" , " " , "\t " , " \t \t " :
6566 ss = prefix + sign + s
6667 vv = v
67- if sign == "-" and v is not ValueError :
68+ if sign in ( "-" , " \N{MINUS SIGN} " ) and v is not ValueError :
6869 vv = - v
6970 try :
7071 self .assertEqual (int (ss ), vv )
@@ -237,6 +238,8 @@ def test_invalid_signs(self):
237238 int ('-' )
238239 with self .assertRaises (ValueError ):
239240 int ('- 1' )
241+ with self .assertRaises (ValueError ):
242+ int ('\N{MINUS SIGN} 1' )
240243 with self .assertRaises (ValueError ):
241244 int ('+ 1' )
242245 with self .assertRaises (ValueError ):
@@ -247,6 +250,7 @@ def test_unicode(self):
247250 self .assertEqual (int ('١٢٣٤٥٦٧٨٩٠' ), 1234567890 )
248251 self .assertEqual (int ("१२३४५६७८९०1234567890" , 0 ), 12345678901234567890 )
249252 self .assertEqual (int ('١٢٣٤٥٦٧٨٩٠' , 0 ), 1234567890 )
253+ self .assertEqual (int ('\N{MINUS SIGN} ١٢٣٤٥٦٧٨٩٠' , 0 ), - 1234567890 )
250254
251255 def test_underscores (self ):
252256 for lit in VALID_UNDERSCORE_LITERALS :
@@ -558,6 +562,7 @@ def test_max_str_digits_edge_cases(self):
558562 int_class ('1' * maxdigits + ' ' )
559563 int_class ('+' + '1' * maxdigits )
560564 int_class ('-' + '1' * maxdigits )
565+ int_class ('\N{MINUS SIGN} ' + '1' * maxdigits )
561566 self .assertEqual (len (str (10 ** (maxdigits - 1 ))), maxdigits )
562567
563568 def check (self , i , base = None ):
@@ -575,6 +580,7 @@ def test_max_str_digits(self):
575580 self .check ('1' * (maxdigits + 1 ) + ' ' )
576581 self .check ('+' + '1' * (maxdigits + 1 ))
577582 self .check ('-' + '1' * (maxdigits + 1 ))
583+ self .check ('\N{MINUS SIGN} ' + '1' * (maxdigits + 1 ))
578584 self .check ('1' * (maxdigits + 1 ))
579585
580586 i = 10 ** maxdigits
@@ -688,6 +694,8 @@ def test_sign_not_counted(self):
688694 assert i == pos_i
689695 neg_i = int_class (f'-{ s } ' )
690696 assert - pos_i == neg_i
697+ neg_i = int_class (f'\N{MINUS SIGN} { s } ' )
698+ assert - pos_i == neg_i
691699 str (pos_i )
692700 str (neg_i )
693701
@@ -799,6 +807,8 @@ def test_pylong_str_to_int(self):
799807 assert - v1 == v3
800808 v4 = int (' +' + s + ' ' )
801809 assert v1 == v4
810+ v5 = int (' \N{MINUS SIGN} ' + s )
811+ assert - v1 == v5
802812 with self .assertRaises (ValueError ) as err :
803813 int (s + 'z' )
804814 with self .assertRaises (ValueError ) as err :
0 commit comments