annotate Lib/test/test_format.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents d115dc671f52
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46115
diff changeset
1 from test.support import verbose, TestFailed
75231
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
2 import locale
16516
af88465999c7 String method conversion.
Eric S. Raymond <esr@thyrsus.com>
parents: 15977
diff changeset
3 import sys
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46115
diff changeset
4 import test.support as support
46115
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
5 import unittest
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
6
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46115
diff changeset
7 maxsize = support.MAX_Py_ssize_t
13194
753af62ab8a1 Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
8
753af62ab8a1 Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
9 # test string formatting operator (I am not sure if this is being tested
753af62ab8a1 Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
10 # elsewhere but, surely, some of the given cases are *not* tested because
753af62ab8a1 Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
11 # they crash python)
753af62ab8a1 Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
12 # test on unicode strings as well
753af62ab8a1 Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
13
59069
8690d08d953f Merged revisions 78372-78373 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 58811
diff changeset
14 def testformat(formatstr, args, output=None, limit=None, overflowok=False):
14713
58b832b8745e Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats.
Tim Peters <tim.peters@gmail.com>
parents: 13194
diff changeset
15 if verbose:
58b832b8745e Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats.
Tim Peters <tim.peters@gmail.com>
parents: 13194
diff changeset
16 if output:
82333
831be7dc260a #17217: fix UnicodeEncodeErrors errors in test_format by printing ASCII only.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 59069
diff changeset
17 print("{!a} % {!a} =? {!a} ...".format(formatstr, args, output),
831be7dc260a #17217: fix UnicodeEncodeErrors errors in test_format by printing ASCII only.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 59069
diff changeset
18 end=' ')
14713
58b832b8745e Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats.
Tim Peters <tim.peters@gmail.com>
parents: 13194
diff changeset
19 else:
82333
831be7dc260a #17217: fix UnicodeEncodeErrors errors in test_format by printing ASCII only.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 59069
diff changeset
20 print("{!a} % {!a} works? ...".format(formatstr, args), end=' ')
14713
58b832b8745e Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats.
Tim Peters <tim.peters@gmail.com>
parents: 13194
diff changeset
21 try:
58b832b8745e Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats.
Tim Peters <tim.peters@gmail.com>
parents: 13194
diff changeset
22 result = formatstr % args
58b832b8745e Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats.
Tim Peters <tim.peters@gmail.com>
parents: 13194
diff changeset
23 except OverflowError:
58b832b8745e Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats.
Tim Peters <tim.peters@gmail.com>
parents: 13194
diff changeset
24 if not overflowok:
58b832b8745e Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats.
Tim Peters <tim.peters@gmail.com>
parents: 13194
diff changeset
25 raise
58b832b8745e Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats.
Tim Peters <tim.peters@gmail.com>
parents: 13194
diff changeset
26 if verbose:
40775
4cdf21a0dbbc Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents: 40644
diff changeset
27 print('overflow (this is fine)')
14713
58b832b8745e Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats.
Tim Peters <tim.peters@gmail.com>
parents: 13194
diff changeset
28 else:
58811
1be7114473eb Merged revisions 78082,78086 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 53187
diff changeset
29 if output and limit is None and result != output:
42309
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
30 if verbose:
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
31 print('no')
46115
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
32 raise AssertionError("%r %% %r == %r != %r" %
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
33 (formatstr, args, result, output))
45504
1b6fb5699634 Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
34 # when 'limit' is specified, it determines how many characters
1b6fb5699634 Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
35 # must match exactly; lengths must always match.
1b6fb5699634 Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
36 # ex: limit=5, '12345678' matches '12345___'
1b6fb5699634 Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
37 # (mainly for floating point format tests for which an exact match
1b6fb5699634 Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
38 # can't be guaranteed due to rounding and representation errors)
1b6fb5699634 Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
39 elif output and limit is not None and (
1b6fb5699634 Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
40 len(result)!=len(output) or result[:limit]!=output[:limit]):
1b6fb5699634 Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
41 if verbose:
1b6fb5699634 Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
42 print('no')
1b6fb5699634 Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
43 print("%s %% %s == %s != %s" % \
1b6fb5699634 Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
44 (repr(formatstr), repr(args), repr(result), repr(output)))
14713
58b832b8745e Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats.
Tim Peters <tim.peters@gmail.com>
parents: 13194
diff changeset
45 else:
58b832b8745e Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats.
Tim Peters <tim.peters@gmail.com>
parents: 13194
diff changeset
46 if verbose:
40775
4cdf21a0dbbc Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents: 40644
diff changeset
47 print('yes')
13194
753af62ab8a1 Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
48
753af62ab8a1 Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
diff changeset
49
46115
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
50 class FormatTest(unittest.TestCase):
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
51 def test_format(self):
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
52 testformat("%.1d", (1,), "1")
59069
8690d08d953f Merged revisions 78372-78373 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 58811
diff changeset
53 testformat("%.*d", (sys.maxsize,1), overflowok=True) # expect overflow
8690d08d953f Merged revisions 78372-78373 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 58811
diff changeset
54 testformat("%.100d", (1,), '00000000000000000000000000000000000000'
8690d08d953f Merged revisions 78372-78373 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 58811
diff changeset
55 '000000000000000000000000000000000000000000000000000000'
8690d08d953f Merged revisions 78372-78373 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 58811
diff changeset
56 '00000001', overflowok=True)
8690d08d953f Merged revisions 78372-78373 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 58811
diff changeset
57 testformat("%#.117x", (1,), '0x00000000000000000000000000000000000'
8690d08d953f Merged revisions 78372-78373 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 58811
diff changeset
58 '000000000000000000000000000000000000000000000000000000'
8690d08d953f Merged revisions 78372-78373 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 58811
diff changeset
59 '0000000000000000000000000001',
8690d08d953f Merged revisions 78372-78373 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 58811
diff changeset
60 overflowok=True)
8690d08d953f Merged revisions 78372-78373 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 58811
diff changeset
61 testformat("%#.118x", (1,), '0x00000000000000000000000000000000000'
8690d08d953f Merged revisions 78372-78373 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 58811
diff changeset
62 '000000000000000000000000000000000000000000000000000000'
8690d08d953f Merged revisions 78372-78373 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 58811
diff changeset
63 '00000000000000000000000000001',
8690d08d953f Merged revisions 78372-78373 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 58811
diff changeset
64 overflowok=True)
14713
58b832b8745e Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats.
Tim Peters <tim.peters@gmail.com>
parents: 13194
diff changeset
65
46115
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
66 testformat("%f", (1.0,), "1.000000")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
67 # these are trying to test the limits of the internal magic-number-length
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
68 # formatting buffer, if that number changes then these tests are less
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
69 # effective
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
70 testformat("%#.*g", (109, -1.e+49/3.))
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
71 testformat("%#.*g", (110, -1.e+49/3.))
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
72 testformat("%#.*g", (110, -1.e+100/3.))
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
73 # test some ridiculously large precision, expect overflow
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
74 testformat('%12.*f', (123456, 1.0))
58811
1be7114473eb Merged revisions 78082,78086 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 53187
diff changeset
75
46115
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
76 # check for internal overflow validation on length of precision
58811
1be7114473eb Merged revisions 78082,78086 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 53187
diff changeset
77 # these tests should no longer cause overflow in Python
1be7114473eb Merged revisions 78082,78086 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 53187
diff changeset
78 # 2.7/3.1 and later.
46115
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
79 testformat("%#.*g", (110, -1.e+100/3.))
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
80 testformat("%#.*G", (110, -1.e+100/3.))
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
81 testformat("%#.*f", (110, -1.e+100/3.))
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
82 testformat("%#.*F", (110, -1.e+100/3.))
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
83 # Formatting of integers. Overflow is not ok
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
84 testformat("%x", 10, "a")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
85 testformat("%x", 100000000000, "174876e800")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
86 testformat("%o", 10, "12")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
87 testformat("%o", 100000000000, "1351035564000")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
88 testformat("%d", 10, "10")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
89 testformat("%d", 100000000000, "100000000000")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
90 big = 123456789012345678901234567890
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
91 testformat("%d", big, "123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
92 testformat("%d", -big, "-123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
93 testformat("%5d", -big, "-123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
94 testformat("%31d", -big, "-123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
95 testformat("%32d", -big, " -123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
96 testformat("%-32d", -big, "-123456789012345678901234567890 ")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
97 testformat("%032d", -big, "-0123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
98 testformat("%-032d", -big, "-123456789012345678901234567890 ")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
99 testformat("%034d", -big, "-000123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
100 testformat("%034d", big, "0000123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
101 testformat("%0+34d", big, "+000123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
102 testformat("%+34d", big, " +123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
103 testformat("%34d", big, " 123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
104 testformat("%.2d", big, "123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
105 testformat("%.30d", big, "123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
106 testformat("%.31d", big, "0123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
107 testformat("%32.31d", big, " 0123456789012345678901234567890")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
108 testformat("%d", float(big), "123456________________________", 6)
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
109 big = 0x1234567890abcdef12345 # 21 hex digits
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
110 testformat("%x", big, "1234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
111 testformat("%x", -big, "-1234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
112 testformat("%5x", -big, "-1234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
113 testformat("%22x", -big, "-1234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
114 testformat("%23x", -big, " -1234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
115 testformat("%-23x", -big, "-1234567890abcdef12345 ")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
116 testformat("%023x", -big, "-01234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
117 testformat("%-023x", -big, "-1234567890abcdef12345 ")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
118 testformat("%025x", -big, "-0001234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
119 testformat("%025x", big, "00001234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
120 testformat("%0+25x", big, "+0001234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
121 testformat("%+25x", big, " +1234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
122 testformat("%25x", big, " 1234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
123 testformat("%.2x", big, "1234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
124 testformat("%.21x", big, "1234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
125 testformat("%.22x", big, "01234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
126 testformat("%23.22x", big, " 01234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
127 testformat("%-23.22x", big, "01234567890abcdef12345 ")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
128 testformat("%X", big, "1234567890ABCDEF12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
129 testformat("%#X", big, "0X1234567890ABCDEF12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
130 testformat("%#x", big, "0x1234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
131 testformat("%#x", -big, "-0x1234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
132 testformat("%#.23x", -big, "-0x001234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
133 testformat("%#+.23x", big, "+0x001234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
134 testformat("%# .23x", big, " 0x001234567890abcdef12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
135 testformat("%#+.23X", big, "+0X001234567890ABCDEF12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
136 testformat("%#-+.23X", big, "+0X001234567890ABCDEF12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
137 testformat("%#-+26.23X", big, "+0X001234567890ABCDEF12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
138 testformat("%#-+27.23X", big, "+0X001234567890ABCDEF12345 ")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
139 testformat("%#+27.23X", big, " +0X001234567890ABCDEF12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
140 # next one gets two leading zeroes from precision, and another from the
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
141 # 0 flag and the width
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
142 testformat("%#+027.23X", big, "+0X0001234567890ABCDEF12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
143 # same, except no 0 flag
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
144 testformat("%#+27.23X", big, " +0X001234567890ABCDEF12345")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
145 testformat("%x", float(big), "123456_______________", 6)
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
146 big = 0o12345670123456701234567012345670 # 32 octal digits
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
147 testformat("%o", big, "12345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
148 testformat("%o", -big, "-12345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
149 testformat("%5o", -big, "-12345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
150 testformat("%33o", -big, "-12345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
151 testformat("%34o", -big, " -12345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
152 testformat("%-34o", -big, "-12345670123456701234567012345670 ")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
153 testformat("%034o", -big, "-012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
154 testformat("%-034o", -big, "-12345670123456701234567012345670 ")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
155 testformat("%036o", -big, "-00012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
156 testformat("%036o", big, "000012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
157 testformat("%0+36o", big, "+00012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
158 testformat("%+36o", big, " +12345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
159 testformat("%36o", big, " 12345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
160 testformat("%.2o", big, "12345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
161 testformat("%.32o", big, "12345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
162 testformat("%.33o", big, "012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
163 testformat("%34.33o", big, " 012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
164 testformat("%-34.33o", big, "012345670123456701234567012345670 ")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
165 testformat("%o", big, "12345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
166 testformat("%#o", big, "0o12345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
167 testformat("%#o", -big, "-0o12345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
168 testformat("%#.34o", -big, "-0o0012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
169 testformat("%#+.34o", big, "+0o0012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
170 testformat("%# .34o", big, " 0o0012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
171 testformat("%#+.34o", big, "+0o0012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
172 testformat("%#-+.34o", big, "+0o0012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
173 testformat("%#-+37.34o", big, "+0o0012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
174 testformat("%#+37.34o", big, "+0o0012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
175 # next one gets one leading zero from precision
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
176 testformat("%.33o", big, "012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
177 # base marker shouldn't change that, since "0" is redundant
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
178 testformat("%#.33o", big, "0o012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
179 # but reduce precision, and base marker should add a zero
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
180 testformat("%#.32o", big, "0o12345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
181 # one leading zero from precision, and another from "0" flag & width
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
182 testformat("%034.33o", big, "0012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
183 # base marker shouldn't change that
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
184 testformat("%0#34.33o", big, "0o012345670123456701234567012345670")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
185 testformat("%o", float(big), "123456__________________________", 6)
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
186 # Some small ints, in both Python int and flavors).
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
187 testformat("%d", 42, "42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
188 testformat("%d", -42, "-42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
189 testformat("%d", 42, "42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
190 testformat("%d", -42, "-42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
191 testformat("%d", 42.0, "42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
192 testformat("%#x", 1, "0x1")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
193 testformat("%#x", 1, "0x1")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
194 testformat("%#X", 1, "0X1")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
195 testformat("%#X", 1, "0X1")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
196 testformat("%#x", 1.0, "0x1")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
197 testformat("%#o", 1, "0o1")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
198 testformat("%#o", 1, "0o1")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
199 testformat("%#o", 0, "0o0")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
200 testformat("%#o", 0, "0o0")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
201 testformat("%o", 0, "0")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
202 testformat("%o", 0, "0")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
203 testformat("%d", 0, "0")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
204 testformat("%d", 0, "0")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
205 testformat("%#x", 0, "0x0")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
206 testformat("%#x", 0, "0x0")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
207 testformat("%#X", 0, "0X0")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
208 testformat("%#X", 0, "0X0")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
209 testformat("%x", 0x42, "42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
210 testformat("%x", -0x42, "-42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
211 testformat("%x", 0x42, "42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
212 testformat("%x", -0x42, "-42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
213 testformat("%x", float(0x42), "42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
214 testformat("%o", 0o42, "42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
215 testformat("%o", -0o42, "-42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
216 testformat("%o", 0o42, "42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
217 testformat("%o", -0o42, "-42")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
218 testformat("%o", float(0o42), "42")
49142
51ff934562c2 The Unicode database was updated to 5.1, and some characters have become printable.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 48523
diff changeset
219 testformat("%r", "\u0378", "'\\u0378'") # non printable
51ff934562c2 The Unicode database was updated to 5.1, and some characters have become printable.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 48523
diff changeset
220 testformat("%a", "\u0378", "'\\u0378'") # non printable
48428
ea7cc18c9ac8 Correct a test after r64701.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 47611
diff changeset
221 testformat("%r", "\u0374", "'\u0374'") # printable
ea7cc18c9ac8 Correct a test after r64701.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 47611
diff changeset
222 testformat("%a", "\u0374", "'\\u0374'") # printable
53187
b653eab13b73 The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents: 49142
diff changeset
223
b653eab13b73 The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents: 49142
diff changeset
224 # alternate float formatting
b653eab13b73 The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents: 49142
diff changeset
225 testformat('%g', 1.1, '1.1')
b653eab13b73 The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents: 49142
diff changeset
226 testformat('%#g', 1.1, '1.10000')
b653eab13b73 The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents: 49142
diff changeset
227
46115
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
228 # Test exception for unknown format characters
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
229 if verbose:
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
230 print('Testing exceptions')
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
231 def test_exc(formatstr, args, exception, excmsg):
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
232 try:
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
233 testformat(formatstr, args)
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
234 except exception as exc:
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
235 if str(exc) == excmsg:
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
236 if verbose:
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
237 print("yes")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
238 else:
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
239 if verbose: print('no')
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
240 print('Unexpected ', exception, ':', repr(str(exc)))
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
241 except:
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
242 if verbose: print('no')
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
243 print('Unexpected exception')
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
244 raise
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
245 else:
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
246 raise TestFailed('did not get expected exception: %s' % excmsg)
47611
da47e7e135ae #2630: Implement PEP 3138.
Georg Brandl <georg@python.org>
parents: 47463
diff changeset
247 test_exc('abc %b', 1, ValueError,
da47e7e135ae #2630: Implement PEP 3138.
Georg Brandl <georg@python.org>
parents: 47463
diff changeset
248 "unsupported format character 'b' (0x62) at index 5")
46115
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
249 #test_exc(unicode('abc %\u3000','raw-unicode-escape'), 1, ValueError,
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
250 # "unsupported format character '?' (0x3000) at index 5")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
251 test_exc('%d', '1', TypeError, "%d format: a number is required, not str")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
252 test_exc('%g', '1', TypeError, "a float is required")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
253 test_exc('no format', '1', TypeError,
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
254 "not all arguments converted during string formatting")
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
255 test_exc('no format', '1', TypeError,
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
256 "not all arguments converted during string formatting")
15455
d0146d128897 Fox for SF bug #123859: %[duxXo] long formats inconsistent.
Tim Peters <tim.peters@gmail.com>
parents: 14713
diff changeset
257
46115
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
258 if maxsize == 2**31-1:
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
259 # crashes 2.2.1 and earlier:
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
260 try:
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
261 "%*d"%(maxsize, -127)
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
262 except MemoryError:
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
263 pass
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
264 else:
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
265 raise TestFailed('"%*d"%(maxsize, -127) should fail')
15580
668166a50c70 Add test case for error message raised by bad % format character
Andrew M. Kuchling <amk@amk.ca>
parents: 15455
diff changeset
266
74557
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
267 def test_non_ascii(self):
77462
73ff365bbb1d Fix "%f" format of str%args if the result is not an ASCII or latin1 string
Victor Stinner <victor.stinner@gmail.com>
parents: 75307
diff changeset
268 testformat("\u20ac=%f", (1.0,), "\u20ac=1.000000")
73ff365bbb1d Fix "%f" format of str%args if the result is not an ASCII or latin1 string
Victor Stinner <victor.stinner@gmail.com>
parents: 75307
diff changeset
269
74557
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
270 self.assertEqual(format("abc", "\u2007<5"), "abc\u2007\u2007")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
271 self.assertEqual(format(123, "\u2007<5"), "123\u2007\u2007")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
272 self.assertEqual(format(12.3, "\u2007<6"), "12.3\u2007\u2007")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
273 self.assertEqual(format(0j, "\u2007<4"), "0j\u2007\u2007")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
274 self.assertEqual(format(1+2j, "\u2007<8"), "(1+2j)\u2007\u2007")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
275
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
276 self.assertEqual(format("abc", "\u2007>5"), "\u2007\u2007abc")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
277 self.assertEqual(format(123, "\u2007>5"), "\u2007\u2007123")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
278 self.assertEqual(format(12.3, "\u2007>6"), "\u2007\u200712.3")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
279 self.assertEqual(format(1+2j, "\u2007>8"), "\u2007\u2007(1+2j)")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
280 self.assertEqual(format(0j, "\u2007>4"), "\u2007\u20070j")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
281
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
282 self.assertEqual(format("abc", "\u2007^5"), "\u2007abc\u2007")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
283 self.assertEqual(format(123, "\u2007^5"), "\u2007123\u2007")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
284 self.assertEqual(format(12.3, "\u2007^6"), "\u200712.3\u2007")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
285 self.assertEqual(format(1+2j, "\u2007^8"), "\u2007(1+2j)\u2007")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
286 self.assertEqual(format(0j, "\u2007^4"), "\u20070j\u2007")
231c6042c40c Issue #13706: Support non-ASCII fill characters
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59069
diff changeset
287
75231
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
288 def test_locale(self):
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
289 try:
75307
1ea466240792 Issue #14113: Fix a test_strptime failure caused by changes to LC_ALL.
Stefan Krah <skrah@bytereef.org>
parents: 75234
diff changeset
290 oldloc = locale.setlocale(locale.LC_ALL)
1ea466240792 Issue #14113: Fix a test_strptime failure caused by changes to LC_ALL.
Stefan Krah <skrah@bytereef.org>
parents: 75234
diff changeset
291 locale.setlocale(locale.LC_ALL, '')
75231
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
292 except locale.Error as err:
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
293 self.skipTest("Cannot set locale: {}".format(err))
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
294 try:
75234
a29d20fa85b4 Issue #13706: Fix format(float, "n") for locale with non-ASCII decimal point (e.g. ps_aF)
Victor Stinner <victor.stinner@haypocalc.com>
parents: 75231
diff changeset
295 localeconv = locale.localeconv()
a29d20fa85b4 Issue #13706: Fix format(float, "n") for locale with non-ASCII decimal point (e.g. ps_aF)
Victor Stinner <victor.stinner@haypocalc.com>
parents: 75231
diff changeset
296 sep = localeconv['thousands_sep']
a29d20fa85b4 Issue #13706: Fix format(float, "n") for locale with non-ASCII decimal point (e.g. ps_aF)
Victor Stinner <victor.stinner@haypocalc.com>
parents: 75231
diff changeset
297 point = localeconv['decimal_point']
a29d20fa85b4 Issue #13706: Fix format(float, "n") for locale with non-ASCII decimal point (e.g. ps_aF)
Victor Stinner <victor.stinner@haypocalc.com>
parents: 75231
diff changeset
298
75231
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
299 text = format(123456789, "n")
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
300 self.assertIn(sep, text)
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
301 self.assertEqual(text.replace(sep, ''), '123456789')
75234
a29d20fa85b4 Issue #13706: Fix format(float, "n") for locale with non-ASCII decimal point (e.g. ps_aF)
Victor Stinner <victor.stinner@haypocalc.com>
parents: 75231
diff changeset
302
a29d20fa85b4 Issue #13706: Fix format(float, "n") for locale with non-ASCII decimal point (e.g. ps_aF)
Victor Stinner <victor.stinner@haypocalc.com>
parents: 75231
diff changeset
303 text = format(1234.5, "n")
a29d20fa85b4 Issue #13706: Fix format(float, "n") for locale with non-ASCII decimal point (e.g. ps_aF)
Victor Stinner <victor.stinner@haypocalc.com>
parents: 75231
diff changeset
304 self.assertIn(sep, text)
a29d20fa85b4 Issue #13706: Fix format(float, "n") for locale with non-ASCII decimal point (e.g. ps_aF)
Victor Stinner <victor.stinner@haypocalc.com>
parents: 75231
diff changeset
305 self.assertIn(point, text)
a29d20fa85b4 Issue #13706: Fix format(float, "n") for locale with non-ASCII decimal point (e.g. ps_aF)
Victor Stinner <victor.stinner@haypocalc.com>
parents: 75231
diff changeset
306 self.assertEqual(text.replace(sep, ''), '1234' + point + '5')
75231
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
307 finally:
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
308 locale.setlocale(locale.LC_ALL, oldloc)
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
309
79390
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
310 @support.cpython_only
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
311 def test_optimisations(self):
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
312 text = "abcde" # 5 characters
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
313
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
314 self.assertIs("%s" % text, text)
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
315 self.assertIs("%.5s" % text, text)
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
316 self.assertIs("%.10s" % text, text)
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
317 self.assertIs("%1s" % text, text)
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
318 self.assertIs("%5s" % text, text)
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
319
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
320 self.assertIs("{0}".format(text), text)
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
321 self.assertIs("{0:s}".format(text), text)
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
322 self.assertIs("{0:.5s}".format(text), text)
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
323 self.assertIs("{0:.10s}".format(text), text)
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
324 self.assertIs("{0:1s}".format(text), text)
559a430e563c Issue #15609: Optimize str%args for integer argument
Victor Stinner <victor.stinner@gmail.com>
parents: 77462
diff changeset
325 self.assertIs("{0:5s}".format(text), text)
75231
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
326
83066
b5d5f422299f Add _PyUnicodeWriter_WriteSubstring() function
Victor Stinner <victor.stinner@gmail.com>
parents: 82335
diff changeset
327 self.assertIs(text % (), text)
b5d5f422299f Add _PyUnicodeWriter_WriteSubstring() function
Victor Stinner <victor.stinner@gmail.com>
parents: 82335
diff changeset
328 self.assertIs(text.format(), text)
75231
f89e2f4cda88 Issue #13706: Fix format(int, "n") for locale with non-ASCII thousands separator
Victor Stinner <victor.stinner@haypocalc.com>
parents: 74557
diff changeset
329
86298
e7eed20f2da7 Issue #18659: fix test_format test that wasn't being executed. Thanks Vajrasky Kok for the patch.
Mark Dickinson <dickinsm@gmail.com>
parents: 85040
diff changeset
330 @support.cpython_only
84266
ef5175d08e7e Issue #18137: Detect integer overflow on precision in float.__format__() and
Victor Stinner <victor.stinner@gmail.com>
parents: 82334
diff changeset
331 def test_precision(self):
86298
e7eed20f2da7 Issue #18659: fix test_format test that wasn't being executed. Thanks Vajrasky Kok for the patch.
Mark Dickinson <dickinsm@gmail.com>
parents: 85040
diff changeset
332 from _testcapi import INT_MAX
84266
ef5175d08e7e Issue #18137: Detect integer overflow on precision in float.__format__() and
Victor Stinner <victor.stinner@gmail.com>
parents: 82334
diff changeset
333
ef5175d08e7e Issue #18137: Detect integer overflow on precision in float.__format__() and
Victor Stinner <victor.stinner@gmail.com>
parents: 82334
diff changeset
334 f = 1.2
ef5175d08e7e Issue #18137: Detect integer overflow on precision in float.__format__() and
Victor Stinner <victor.stinner@gmail.com>
parents: 82334
diff changeset
335 self.assertEqual(format(f, ".0f"), "1")
ef5175d08e7e Issue #18137: Detect integer overflow on precision in float.__format__() and
Victor Stinner <victor.stinner@gmail.com>
parents: 82334
diff changeset
336 self.assertEqual(format(f, ".3f"), "1.200")
ef5175d08e7e Issue #18137: Detect integer overflow on precision in float.__format__() and
Victor Stinner <victor.stinner@gmail.com>
parents: 82334
diff changeset
337 with self.assertRaises(ValueError) as cm:
ef5175d08e7e Issue #18137: Detect integer overflow on precision in float.__format__() and
Victor Stinner <victor.stinner@gmail.com>
parents: 82334
diff changeset
338 format(f, ".%sf" % (INT_MAX + 1))
ef5175d08e7e Issue #18137: Detect integer overflow on precision in float.__format__() and
Victor Stinner <victor.stinner@gmail.com>
parents: 82334
diff changeset
339
ef5175d08e7e Issue #18137: Detect integer overflow on precision in float.__format__() and
Victor Stinner <victor.stinner@gmail.com>
parents: 82334
diff changeset
340 c = complex(f)
86298
e7eed20f2da7 Issue #18659: fix test_format test that wasn't being executed. Thanks Vajrasky Kok for the patch.
Mark Dickinson <dickinsm@gmail.com>
parents: 85040
diff changeset
341 self.assertEqual(format(c, ".0f"), "1+0j")
e7eed20f2da7 Issue #18659: fix test_format test that wasn't being executed. Thanks Vajrasky Kok for the patch.
Mark Dickinson <dickinsm@gmail.com>
parents: 85040
diff changeset
342 self.assertEqual(format(c, ".3f"), "1.200+0.000j")
84266
ef5175d08e7e Issue #18137: Detect integer overflow on precision in float.__format__() and
Victor Stinner <victor.stinner@gmail.com>
parents: 82334
diff changeset
343 with self.assertRaises(ValueError) as cm:
86298
e7eed20f2da7 Issue #18659: fix test_format test that wasn't being executed. Thanks Vajrasky Kok for the patch.
Mark Dickinson <dickinsm@gmail.com>
parents: 85040
diff changeset
344 format(c, ".%sf" % (INT_MAX + 1))
84266
ef5175d08e7e Issue #18137: Detect integer overflow on precision in float.__format__() and
Victor Stinner <victor.stinner@gmail.com>
parents: 82334
diff changeset
345
24415
f5cfa0ee02cf Fix the problem of not raising a TypeError exception when doing:
Neal Norwitz <nnorwitz@gmail.com>
parents: 24364
diff changeset
346
46115
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
347 if __name__ == "__main__":
1b6c0ff134fa Merged revisions 61913,61915-61916,61918-61919,61922-61926,61928-61929,61931,61935,61938,61943 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45514
diff changeset
348 unittest.main()