1 from test
.test_support
import verbose
, TestSkipped
5 if sys
.platform
== 'darwin':
6 raise TestSkipped("Locale support on MacOSX is minimal and cannot be tested")
7 oldlocale
= locale
.setlocale(locale
.LC_NUMERIC
)
9 if sys
.platform
.startswith("win"):
12 tlocs
= ("en_US.UTF-8", "en_US.US-ASCII", "en_US")
16 locale
.setlocale(locale
.LC_NUMERIC
, tloc
)
21 raise ImportError, "test locale not supported (tried %s)"%(', '.join(tlocs
))
23 def testformat(formatstr
, value
, grouping
= 0, output
=None):
26 print "%s %% %s =? %s ..." %\
27 (repr(formatstr
), repr(value
), repr(output
)),
29 print "%s %% %s works? ..." % (repr(formatstr
), repr(value
)),
30 result
= locale
.format(formatstr
, value
, grouping
= grouping
)
31 if output
and result
!= output
:
34 print "%s %% %s == %s != %s" %\
35 (repr(formatstr
), repr(value
), repr(result
), repr(output
))
41 # On Solaris 10, the thousands_sep is the empty string
42 sep
= locale
.localeconv()['thousands_sep']
43 testformat("%f", 1024, grouping
=1, output
='1%s024.000000' % sep
)
44 testformat("%f", 102, grouping
=1, output
='102.000000')
45 testformat("%f", -42, grouping
=1, output
='-42.000000')
46 testformat("%+f", -42, grouping
=1, output
='-42.000000')
47 testformat("%20.f", -42, grouping
=1, output
=' -42')
48 testformat("%+10.f", -4200, grouping
=1, output
=' -4%s200' % sep
)
49 testformat("%-10.f", 4200, grouping
=1, output
='4%s200 ' % sep
)
50 # Invoke getpreferredencoding to make sure it does not cause exceptions,
51 locale
.getpreferredencoding()
53 locale
.setlocale(locale
.LC_NUMERIC
, oldlocale
)
56 # Test BSD Rune locale's bug for isctype functions.
57 def teststrop(s
, method
, output
):
59 print "%s.%s() =? %s ..." % (repr(s
), method
, repr(output
)),
60 result
= getattr(s
, method
)()
64 print "%s.%s() == %s != %s" % (repr(s
), method
, repr(result
),
70 if sys
.platform
== 'sunos5':
71 # On Solaris, in en_US.UTF-8, \xa0 is a space
73 oldlocale
= locale
.setlocale(locale
.LC_CTYPE
)
74 locale
.setlocale(locale
.LC_CTYPE
, 'en_US.UTF-8')
79 teststrop('\x20', 'isspace', True)
80 teststrop('\xa0', 'isspace', False)
81 teststrop('\xa1', 'isspace', False)
82 teststrop('\xc0', 'isalpha', False)
83 teststrop('\xc0', 'isalnum', False)
84 teststrop('\xc0', 'isupper', False)
85 teststrop('\xc0', 'islower', False)
86 teststrop('\xec\xa0\xbc', 'split', ['\xec\xa0\xbc'])
87 teststrop('\xed\x95\xa0', 'strip', '\xed\x95\xa0')
88 teststrop('\xcc\x85', 'lower', '\xcc\x85')
89 teststrop('\xed\x95\xa0', 'upper', '\xed\x95\xa0')
91 locale
.setlocale(locale
.LC_CTYPE
, oldlocale
)