66import _random
77import unittest
88
9- from iptest import is_cli , is_netcoreapp , is_posix , run_test
9+ from iptest import is_cli , is_mono , is_netcoreapp , is_posix , run_test , skipUnlessIronPython
1010
1111class _LocaleTest (unittest .TestCase ):
1212
@@ -27,37 +27,37 @@ def test_getdefaultlocale(self):
2727 result1 = _locale ._getdefaultlocale ()
2828 result2 = _locale ._getdefaultlocale ()
2929 self .assertEqual (result1 ,result2 )
30-
30+
3131 def test_localeconv (self ):
3232 result = _locale .localeconv ()
3333 self .assertTrue (result != None , "The method does not return the correct value" )
3434 self .assertTrue (len (result )>= 14 , "The elements in the sequence are not enough" )
35-
35+
3636 def test_strxfrm (self ):
3737 str1 = "this is a test !"
3838 str2 = _locale .strxfrm (str1 )
3939 str1 .__eq__ (str2 )
40-
40+
4141 str1 = "this is a test&^%%^$%$ !"
4242 str2 = _locale .strxfrm (str1 )
4343 str1 .__eq__ (str2 )
44-
44+
4545 str1 = "this \" \" is a test&^%%^$%$ !"
4646 str2 = _locale .strxfrm (str1 )
4747 str1 .__eq__ (str2 )
48-
48+
4949 str1 = "123456789"
5050 str2 = _locale .strxfrm (str1 )
5151 str1 .__eq__ (str2 )
52-
52+
5353 #argument is int type
5454 i = 12
5555 self .assertRaises (TypeError ,_locale .strxfrm ,i )
56-
56+
5757 #argument is random type
5858 obj = _random .Random ()
5959 self .assertRaises (TypeError ,_locale .strxfrm ,obj )
60-
60+
6161 def collate (self ,str1 ,str2 ,result ):
6262 if result == 0 :
6363 self .assertTrue (_locale .strcoll (str1 ,str2 )== 0 , "expected that collating \" %r \" and \" %r \" result should greater than zero" % (str1 , str2 ))
@@ -72,48 +72,48 @@ def validcollate(self):
7272 str1 = "This is a test"
7373 str2 = "This is a test"
7474 self .collate (str1 ,str2 ,result )
75-
75+
7676 str1 = "@$%$%+_)(*"
7777 str2 = "@$%$%+_)(*"
7878 self .collate (str1 ,str2 ,result )
79-
79+
8080 str1 = "123This is a test"
8181 str2 = "123This is a test"
8282 self .collate (str1 ,str2 ,result )
83-
83+
8484 # str1 is greater than str2
8585 result = 1
8686 str1 = "this is a test"
8787 self .collate (str1 ,str2 ,result )
88-
88+
8989 str1 = "234 this is a test"
9090 str2 = "123 this is a test"
9191 self .collate (str1 ,str2 ,result )
92-
92+
9393 str2 = "@^@%^#& this is a test"
9494 str2 = "#^@%^#& this is a test"
9595 self .collate (str1 ,str2 ,result )
96-
96+
9797 # str1 is less than str2
9898 result = - 1
9999 str1 = "this is a test"
100100 str2 = "This Is a Test"
101101 self .collate (str1 ,str2 ,result )
102-
102+
103103 str1 = "This is a test123"
104104 str2 = "This is a test456"
105105 self .collate (str1 ,str2 ,result )
106-
106+
107107 str1 = "#$%This is a test"
108108 str2 = "@#$This is a test"
109109 self .collate (str1 ,str2 ,result )
110-
110+
111111 # an argument is int
112112 str2 = 3
113113 self .assertRaises (TypeError ,_locale .strcoll ,str1 ,str2 )
114114 str2 = - 1
115115 self .assertRaises (TypeError ,_locale .strcoll ,str1 ,str2 )
116-
116+
117117 # an argument is Random type
118118 str2 = _random .Random ()
119119 self .assertRaises (TypeError ,_locale .strcoll ,str1 ,str2 )
@@ -122,7 +122,7 @@ def validcollate(self):
122122 def test_strcoll (self ):
123123 _locale .setlocale (_locale .LC_COLLATE ,"English" )
124124 self .validcollate ()
125-
125+
126126 _locale .setlocale (_locale .LC_COLLATE ,"French" )
127127 self .validcollate ()
128128
@@ -135,14 +135,13 @@ def test_setlocale(self):
135135 _locale .LC_NUMERIC ,
136136 _locale .LC_TIME ,
137137 ]
138-
138+
139139 for c in c_list :
140140 resultLocale = None
141141 _locale .setlocale (c ,"English" )
142142 resultLocale = _locale .setlocale (c )
143143 self .assertEqual (resultLocale ,"English_United States.1252" )
144-
145-
144+
146145 for c in c_list :
147146 resultLocale = None
148147 _locale .setlocale (c ,"French" )
@@ -155,13 +154,13 @@ def test_setlocale_negative(self):
155154 c = _locale .LC_ALL
156155 locale = ''
157156 _locale .setlocale (c ,locale )
158-
157+
159158 #the locale is None
160159 locale = _locale .setlocale (c )
161160 resultLocale = _locale .setlocale (c )
162161 self .assertEqual (locale ,resultLocale )
163-
164- #set Numeric as a unknown locale,should thorw a _locale.Error
162+
163+ #set Numeric as a unknown locale,should throw a _locale.Error
165164 locale = "11-22"
166165 self .assertRaises (_locale .Error ,_locale .setlocale ,c ,locale )
167166 locale = "@^#^&%"
@@ -183,4 +182,22 @@ def test_bad_category(self):
183182 self .assertRaises (TypeError , _locale .setlocale , 'LC_NUMERIC' , 'en_US.UTF8' )
184183 self .assertRaises (TypeError , _locale .setlocale , 'LC_NUMERIC' , None )
185184
185+ @skipUnlessIronPython ()
186+ def test__getdefaultlocale (self ):
187+ import System
188+ current_culture = System .Globalization .CultureInfo .CurrentCulture
189+ try :
190+ # https://github.com/IronLanguages/ironpython3/issues/1527
191+ for x in range (26 ):
192+ for y in range (26 ):
193+ try :
194+ culture_info = System .Globalization .CultureInfo ("en-{}{}" .format (chr (x + ord ('A' )), chr (y + ord ('A' ))))
195+ except ValueError :
196+ self .assertTrue (is_mono )
197+ else :
198+ System .Globalization .CultureInfo .CurrentCulture = culture_info
199+ self .assertNotEqual (_locale ._getdefaultlocale ()[1 ], "cp0" )
200+ finally :
201+ System .Globalization .CultureInfo .CurrentCulture = current_culture
202+
186203run_test (__name__ )
0 commit comments