annotate Lib/test/test_float.py @ 51749:1408feec0084 3.0

Merged revisions 69798 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ................ r69798 | benjamin.peterson | 2009-02-19 22:02:38 -0600 (Thu, 19 Feb 2009) | 13 lines Merged revisions 69769,69776 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r69769 | georg.brandl | 2009-02-19 02:30:06 -0600 (Thu, 19 Feb 2009) | 1 line #5310, #3558: fix operator precedence table. ........ r69776 | georg.brandl | 2009-02-19 10:34:51 -0600 (Thu, 19 Feb 2009) | 2 lines #5317: update IronPython URL. ........ ................
author Benjamin Peterson <benjamin@python.org>
date Fri, 20 Feb 2009 04:05:32 +0000
parents 98628dc730da
children df2638b9bee2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
1
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
2 import unittest, struct
44260
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
3 import os
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46664
diff changeset
4 from test import support
46477
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
5 import math
48497
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
6 from math import isinf, isnan, copysign, ldexp
46477
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
7 import operator
49055
ca1a8ac47d04 I modified the tests a bit to account for unicode string
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 48817
diff changeset
8 import random, fractions
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
9
46477
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
10 INF = float("inf")
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
11 NAN = float("nan")
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
12
46664
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
13 class GeneralFloatCases(unittest.TestCase):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
14
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
15 def test_float(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
16 self.assertEqual(float(3.14), 3.14)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
17 self.assertEqual(float(314), 314.0)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
18 self.assertEqual(float(" 3.14 "), 3.14)
49055
ca1a8ac47d04 I modified the tests a bit to account for unicode string
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 48817
diff changeset
19 self.assertEqual(float(b" 3.14 "), 3.14)
46664
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
20 self.assertRaises(ValueError, float, " 0x3.1 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
21 self.assertRaises(ValueError, float, " -0x3.p-1 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
22 self.assertRaises(ValueError, float, " +0x3.p-1 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
23 self.assertRaises(ValueError, float, "++3.14")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
24 self.assertRaises(ValueError, float, "+-3.14")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
25 self.assertRaises(ValueError, float, "-+3.14")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
26 self.assertRaises(ValueError, float, "--3.14")
49055
ca1a8ac47d04 I modified the tests a bit to account for unicode string
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 48817
diff changeset
27 self.assertEqual(float(b" \u0663.\u0661\u0664 ".decode('raw-unicode-escape')), 3.14)
46664
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
28
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46664
diff changeset
29 @support.run_with_locale('LC_NUMERIC', 'fr_FR', 'de_DE')
46664
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
30 def test_float_with_comma(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
31 # set locale to something that doesn't use '.' for the decimal point
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
32 # float must not accept the locale specific decimal point but
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
33 # it still has to accept the normal python syntac
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
34 import locale
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
35 if not locale.localeconv()['decimal_point'] == ',':
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
36 return
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
37
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
38 self.assertEqual(float(" 3.14 "), 3.14)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
39 self.assertEqual(float("+3.14 "), 3.14)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
40 self.assertEqual(float("-3.14 "), -3.14)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
41 self.assertEqual(float(".14 "), .14)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
42 self.assertEqual(float("3. "), 3.0)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
43 self.assertEqual(float("3.e3 "), 3000.0)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
44 self.assertEqual(float("3.2e3 "), 3200.0)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
45 self.assertEqual(float("2.5e-1 "), 0.25)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
46 self.assertEqual(float("5e-1"), 0.5)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
47 self.assertRaises(ValueError, float, " 3,14 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
48 self.assertRaises(ValueError, float, " +3,14 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
49 self.assertRaises(ValueError, float, " -3,14 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
50 self.assertRaises(ValueError, float, " 0x3.1 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
51 self.assertRaises(ValueError, float, " -0x3.p-1 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
52 self.assertRaises(ValueError, float, " +0x3.p-1 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
53 self.assertEqual(float(" 25.e-1 "), 2.5)
49062
13955bcd08be Merged revisions 66277 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49055
diff changeset
54 self.assertEqual(support.fcmp(float(" .25e-1 "), .025), 0)
46664
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
55
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
56 def test_floatconversion(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
57 # Make sure that calls to __float__() work properly
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
58 class Foo0:
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
59 def __float__(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
60 return 42.
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
61
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
62 class Foo1(object):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
63 def __float__(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
64 return 42.
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
65
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
66 class Foo2(float):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
67 def __float__(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
68 return 42.
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
69
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
70 class Foo3(float):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
71 def __new__(cls, value=0.):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
72 return float.__new__(cls, 2*value)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
73
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
74 def __float__(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
75 return self
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
76
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
77 class Foo4(float):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
78 def __float__(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
79 return 42
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
80
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
81 self.assertAlmostEqual(float(Foo0()), 42.)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
82 self.assertAlmostEqual(float(Foo1()), 42.)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
83 self.assertAlmostEqual(float(Foo2()), 42.)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
84 self.assertAlmostEqual(float(Foo3(21)), 42.)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
85 self.assertRaises(TypeError, float, Foo4(42))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
86
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
87 def test_floatasratio(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
88 for f, ratio in [
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
89 (0.875, (7, 8)),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
90 (-0.875, (-7, 8)),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
91 (0.0, (0, 1)),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
92 (11.5, (23, 2)),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
93 ]:
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
94 self.assertEqual(f.as_integer_ratio(), ratio)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
95
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
96 for i in range(10000):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
97 f = random.random()
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
98 f *= 10 ** random.randint(-100, 100)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
99 n, d = f.as_integer_ratio()
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
100 self.assertEqual(float(n).__truediv__(d), f)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
101
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
102 R = fractions.Fraction
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
103 self.assertEqual(R(0, 1),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
104 R(*float(0.0).as_integer_ratio()))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
105 self.assertEqual(R(5, 2),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
106 R(*float(2.5).as_integer_ratio()))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
107 self.assertEqual(R(1, 2),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
108 R(*float(0.5).as_integer_ratio()))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
109 self.assertEqual(R(4728779608739021, 2251799813685248),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
110 R(*float(2.1).as_integer_ratio()))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
111 self.assertEqual(R(-4728779608739021, 2251799813685248),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
112 R(*float(-2.1).as_integer_ratio()))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
113 self.assertEqual(R(-2100, 1),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
114 R(*float(-2100.0).as_integer_ratio()))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
115
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
116 self.assertRaises(OverflowError, float('inf').as_integer_ratio)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
117 self.assertRaises(OverflowError, float('-inf').as_integer_ratio)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
118 self.assertRaises(ValueError, float('nan').as_integer_ratio)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
119
49721
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
120 def test_float_containment(self):
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
121 floats = (INF, -INF, 0.0, 1.0, NAN)
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
122 for f in floats:
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
123 self.assert_(f in [f], "'%r' not in []" % f)
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
124 self.assert_(f in (f,), "'%r' not in ()" % f)
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
125 self.assert_(f in {f}, "'%r' not in set()" % f)
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
126 self.assert_(f in {f: None}, "'%r' not in {}" % f)
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
127 self.assertEqual([f].count(f), 1, "[].count('%r') != 1" % f)
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
128 self.assert_(f in floats, "'%r' not in container" % f)
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
129
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
130 for f in floats:
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
131 # nonidentical containers, same type, same contents
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
132 self.assert_([f] == [f], "[%r] != [%r]" % (f, f))
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
133 self.assert_((f,) == (f,), "(%r,) != (%r,)" % (f, f))
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
134 self.assert_({f} == {f}, "{%r} != {%r}" % (f, f))
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
135 self.assert_({f : None} == {f: None}, "{%r : None} != "
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
136 "{%r : None}" % (f, f))
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
137
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
138 # identical containers
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
139 l, t, s, d = [f], (f,), {f}, {f: None}
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
140 self.assert_(l == l, "[%r] not equal to itself" % f)
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
141 self.assert_(t == t, "(%r,) not equal to itself" % f)
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
142 self.assert_(s == s, "{%r} not equal to itself" % f)
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
143 self.assert_(d == d, "{%r : None} not equal to itself" % f)
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
144
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
145
98628dc730da Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents: 49062
diff changeset
146
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
147 class FormatFunctionsTestCase(unittest.TestCase):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
148
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
149 def setUp(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
150 self.save_formats = {'double':float.__getformat__('double'),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
151 'float':float.__getformat__('float')}
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
152
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
153 def tearDown(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
154 float.__setformat__('double', self.save_formats['double'])
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
155 float.__setformat__('float', self.save_formats['float'])
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
156
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
157 def test_getformat(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
158 self.assert_(float.__getformat__('double') in
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
159 ['unknown', 'IEEE, big-endian', 'IEEE, little-endian'])
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
160 self.assert_(float.__getformat__('float') in
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
161 ['unknown', 'IEEE, big-endian', 'IEEE, little-endian'])
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
162 self.assertRaises(ValueError, float.__getformat__, 'chicken')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
163 self.assertRaises(TypeError, float.__getformat__, 1)
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
164
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
165 def test_setformat(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
166 for t in 'double', 'float':
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
167 float.__setformat__(t, 'unknown')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
168 if self.save_formats[t] == 'IEEE, big-endian':
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
169 self.assertRaises(ValueError, float.__setformat__,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
170 t, 'IEEE, little-endian')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
171 elif self.save_formats[t] == 'IEEE, little-endian':
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
172 self.assertRaises(ValueError, float.__setformat__,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
173 t, 'IEEE, big-endian')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
174 else:
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
175 self.assertRaises(ValueError, float.__setformat__,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
176 t, 'IEEE, big-endian')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
177 self.assertRaises(ValueError, float.__setformat__,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
178 t, 'IEEE, little-endian')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
179 self.assertRaises(ValueError, float.__setformat__,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
180 t, 'chicken')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
181 self.assertRaises(ValueError, float.__setformat__,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
182 'chicken', 'unknown')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
183
41725
d1146d4db549 Make tset_float pass. float(<unicode>) was never very good -- it used
Guido van Rossum <guido@python.org>
parents: 35014
diff changeset
184 BE_DOUBLE_INF = b'\x7f\xf0\x00\x00\x00\x00\x00\x00'
43947
cbc8b3bd3157 Rename buffer -> bytearray.
Guido van Rossum <guido@python.org>
parents: 43777
diff changeset
185 LE_DOUBLE_INF = bytes(reversed(BE_DOUBLE_INF))
41725
d1146d4db549 Make tset_float pass. float(<unicode>) was never very good -- it used
Guido van Rossum <guido@python.org>
parents: 35014
diff changeset
186 BE_DOUBLE_NAN = b'\x7f\xf8\x00\x00\x00\x00\x00\x00'
43947
cbc8b3bd3157 Rename buffer -> bytearray.
Guido van Rossum <guido@python.org>
parents: 43777
diff changeset
187 LE_DOUBLE_NAN = bytes(reversed(BE_DOUBLE_NAN))
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
188
41725
d1146d4db549 Make tset_float pass. float(<unicode>) was never very good -- it used
Guido van Rossum <guido@python.org>
parents: 35014
diff changeset
189 BE_FLOAT_INF = b'\x7f\x80\x00\x00'
43947
cbc8b3bd3157 Rename buffer -> bytearray.
Guido van Rossum <guido@python.org>
parents: 43777
diff changeset
190 LE_FLOAT_INF = bytes(reversed(BE_FLOAT_INF))
41725
d1146d4db549 Make tset_float pass. float(<unicode>) was never very good -- it used
Guido van Rossum <guido@python.org>
parents: 35014
diff changeset
191 BE_FLOAT_NAN = b'\x7f\xc0\x00\x00'
43947
cbc8b3bd3157 Rename buffer -> bytearray.
Guido van Rossum <guido@python.org>
parents: 43777
diff changeset
192 LE_FLOAT_NAN = bytes(reversed(BE_FLOAT_NAN))
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
193
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
194 # on non-IEEE platforms, attempting to unpack a bit pattern
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
195 # representing an infinity or a NaN should raise an exception.
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
196
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
197 class UnknownFormatTestCase(unittest.TestCase):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
198 def setUp(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
199 self.save_formats = {'double':float.__getformat__('double'),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
200 'float':float.__getformat__('float')}
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
201 float.__setformat__('double', 'unknown')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
202 float.__setformat__('float', 'unknown')
35014
275843630522 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 34972
diff changeset
203
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
204 def tearDown(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
205 float.__setformat__('double', self.save_formats['double'])
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
206 float.__setformat__('float', self.save_formats['float'])
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
207
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
208 def test_double_specials_dont_unpack(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
209 for fmt, data in [('>d', BE_DOUBLE_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
210 ('>d', BE_DOUBLE_NAN),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
211 ('<d', LE_DOUBLE_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
212 ('<d', LE_DOUBLE_NAN)]:
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
213 self.assertRaises(ValueError, struct.unpack, fmt, data)
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
214
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
215 def test_float_specials_dont_unpack(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
216 for fmt, data in [('>f', BE_FLOAT_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
217 ('>f', BE_FLOAT_NAN),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
218 ('<f', LE_FLOAT_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
219 ('<f', LE_FLOAT_NAN)]:
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
220 self.assertRaises(ValueError, struct.unpack, fmt, data)
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
221
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
222
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
223 # on an IEEE platform, all we guarantee is that bit patterns
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
224 # representing infinities or NaNs do not raise an exception; all else
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
225 # is accident (today).
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
226 # let's also try to guarantee that -0.0 and 0.0 don't get confused.
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
227
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
228 class IEEEFormatTestCase(unittest.TestCase):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
229 if float.__getformat__("double").startswith("IEEE"):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
230 def test_double_specials_do_unpack(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
231 for fmt, data in [('>d', BE_DOUBLE_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
232 ('>d', BE_DOUBLE_NAN),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
233 ('<d', LE_DOUBLE_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
234 ('<d', LE_DOUBLE_NAN)]:
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
235 struct.unpack(fmt, data)
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
236
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
237 if float.__getformat__("float").startswith("IEEE"):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
238 def test_float_specials_do_unpack(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
239 for fmt, data in [('>f', BE_FLOAT_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
240 ('>f', BE_FLOAT_NAN),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
241 ('<f', LE_FLOAT_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
242 ('<f', LE_FLOAT_NAN)]:
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
243 struct.unpack(fmt, data)
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
244
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
245 if float.__getformat__("double").startswith("IEEE"):
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
246 def test_negative_zero(self):
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
247 import math
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
248 def pos_pos():
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
249 return 0.0, math.atan2(0.0, -1)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
250 def pos_neg():
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
251 return 0.0, math.atan2(-0.0, -1)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
252 def neg_pos():
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
253 return -0.0, math.atan2(0.0, -1)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
254 def neg_neg():
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
255 return -0.0, math.atan2(-0.0, -1)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
256 self.assertEquals(pos_pos(), neg_pos())
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
257 self.assertEquals(pos_neg(), neg_neg())
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
258
42817
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
259 class FormatTestCase(unittest.TestCase):
43111
7b0237cbd0ed Fixed test name.
Eric Smith <eric@trueblade.com>
parents: 42817
diff changeset
260 def test_format(self):
42817
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
261 # these should be rewritten to use both format(x, spec) and
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
262 # x.__format__(spec)
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
263
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
264 self.assertEqual(format(0.0, 'f'), '0.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
265
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
266 # the default is 'g', except for empty format spec
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
267 self.assertEqual(format(0.0, ''), '0.0')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
268 self.assertEqual(format(0.01, ''), '0.01')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
269 self.assertEqual(format(0.01, 'g'), '0.01')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
270
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
271
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
272 self.assertEqual(format(1.0, 'f'), '1.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
273
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
274 self.assertEqual(format(-1.0, 'f'), '-1.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
275
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
276 self.assertEqual(format( 1.0, ' f'), ' 1.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
277 self.assertEqual(format(-1.0, ' f'), '-1.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
278 self.assertEqual(format( 1.0, '+f'), '+1.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
279 self.assertEqual(format(-1.0, '+f'), '-1.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
280
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
281 # % formatting
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
282 self.assertEqual(format(-1.0, '%'), '-100.000000%')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
283
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
284 # conversion to string should fail
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
285 self.assertRaises(ValueError, format, 3.0, "s")
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
286
45023
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
287 # other format specifiers shouldn't work on floats,
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
288 # in particular int specifiers
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
289 for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] +
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
290 [chr(x) for x in range(ord('A'), ord('Z')+1)]):
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
291 if not format_spec in 'eEfFgGn%':
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
292 self.assertRaises(ValueError, format, 0.0, format_spec)
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
293 self.assertRaises(ValueError, format, 1.0, format_spec)
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
294 self.assertRaises(ValueError, format, -1.0, format_spec)
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
295 self.assertRaises(ValueError, format, 1e100, format_spec)
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
296 self.assertRaises(ValueError, format, -1e100, format_spec)
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
297 self.assertRaises(ValueError, format, 1e-100, format_spec)
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
298 self.assertRaises(ValueError, format, -1e-100, format_spec)
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
299
44260
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
300 class ReprTestCase(unittest.TestCase):
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
301 def test_repr(self):
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
302 floats_file = open(os.path.join(os.path.split(__file__)[0],
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
303 'floating_points.txt'))
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
304 for line in floats_file:
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
305 line = line.strip()
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
306 if not line or line.startswith('#'):
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
307 continue
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
308 v = eval(line)
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
309 self.assertEqual(v, eval(repr(v)))
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
310 floats_file.close()
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
311
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
312 # Beginning with Python 2.6 float has cross platform compatible
48499
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
313 # ways to create and represent inf and nan
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
314 class InfNanTest(unittest.TestCase):
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
315 def test_inf_from_str(self):
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
316 self.assert_(isinf(float("inf")))
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
317 self.assert_(isinf(float("+inf")))
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
318 self.assert_(isinf(float("-inf")))
48499
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
319 self.assert_(isinf(float("infinity")))
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
320 self.assert_(isinf(float("+infinity")))
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
321 self.assert_(isinf(float("-infinity")))
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
322
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
323 self.assertEqual(repr(float("inf")), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
324 self.assertEqual(repr(float("+inf")), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
325 self.assertEqual(repr(float("-inf")), "-inf")
48499
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
326 self.assertEqual(repr(float("infinity")), "inf")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
327 self.assertEqual(repr(float("+infinity")), "inf")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
328 self.assertEqual(repr(float("-infinity")), "-inf")
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
329
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
330 self.assertEqual(repr(float("INF")), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
331 self.assertEqual(repr(float("+Inf")), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
332 self.assertEqual(repr(float("-iNF")), "-inf")
48499
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
333 self.assertEqual(repr(float("Infinity")), "inf")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
334 self.assertEqual(repr(float("+iNfInItY")), "inf")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
335 self.assertEqual(repr(float("-INFINITY")), "-inf")
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
336
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
337 self.assertEqual(str(float("inf")), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
338 self.assertEqual(str(float("+inf")), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
339 self.assertEqual(str(float("-inf")), "-inf")
48499
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
340 self.assertEqual(str(float("infinity")), "inf")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
341 self.assertEqual(str(float("+infinity")), "inf")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
342 self.assertEqual(str(float("-infinity")), "-inf")
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
343
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
344 self.assertRaises(ValueError, float, "info")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
345 self.assertRaises(ValueError, float, "+info")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
346 self.assertRaises(ValueError, float, "-info")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
347 self.assertRaises(ValueError, float, "in")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
348 self.assertRaises(ValueError, float, "+in")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
349 self.assertRaises(ValueError, float, "-in")
48499
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
350 self.assertRaises(ValueError, float, "infinit")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
351 self.assertRaises(ValueError, float, "+Infin")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
352 self.assertRaises(ValueError, float, "-INFI")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
353 self.assertRaises(ValueError, float, "infinitys")
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
354
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
355 def test_inf_as_str(self):
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
356 self.assertEqual(repr(1e300 * 1e300), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
357 self.assertEqual(repr(-1e300 * 1e300), "-inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
358
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
359 self.assertEqual(str(1e300 * 1e300), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
360 self.assertEqual(str(-1e300 * 1e300), "-inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
361
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
362 def test_nan_from_str(self):
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
363 self.assert_(isnan(float("nan")))
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
364 self.assert_(isnan(float("+nan")))
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
365 self.assert_(isnan(float("-nan")))
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
366
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
367 self.assertEqual(repr(float("nan")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
368 self.assertEqual(repr(float("+nan")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
369 self.assertEqual(repr(float("-nan")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
370
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
371 self.assertEqual(repr(float("NAN")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
372 self.assertEqual(repr(float("+NAn")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
373 self.assertEqual(repr(float("-NaN")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
374
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
375 self.assertEqual(str(float("nan")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
376 self.assertEqual(str(float("+nan")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
377 self.assertEqual(str(float("-nan")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
378
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
379 self.assertRaises(ValueError, float, "nana")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
380 self.assertRaises(ValueError, float, "+nana")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
381 self.assertRaises(ValueError, float, "-nana")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
382 self.assertRaises(ValueError, float, "na")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
383 self.assertRaises(ValueError, float, "+na")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
384 self.assertRaises(ValueError, float, "-na")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
385
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
386 def test_nan_as_str(self):
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
387 self.assertEqual(repr(1e300 * 1e300 * 0), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
388 self.assertEqual(repr(-1e300 * 1e300 * 0), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
389
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
390 self.assertEqual(str(1e300 * 1e300 * 0), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
391 self.assertEqual(str(-1e300 * 1e300 * 0), "nan")
44260
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
392
46477
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
393 def notest_float_nan(self):
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
394 self.assert_(NAN.is_nan())
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
395 self.failIf(INF.is_nan())
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
396 self.failIf((0.).is_nan())
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
397
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
398 def notest_float_inf(self):
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
399 self.assert_(INF.is_inf())
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
400 self.failIf(NAN.is_inf())
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
401 self.failIf((0.).is_inf())
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
402
48497
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
403 fromHex = float.fromhex
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
404 toHex = float.hex
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
405 class HexFloatTestCase(unittest.TestCase):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
406 MAX = fromHex('0x.fffffffffffff8p+1024') # max normal
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
407 MIN = fromHex('0x1p-1022') # min normal
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
408 TINY = fromHex('0x0.0000000000001p-1022') # min subnormal
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
409 EPS = fromHex('0x0.0000000000001p0') # diff between 1.0 and next float up
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
410
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
411 def identical(self, x, y):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
412 # check that floats x and y are identical, or that both
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
413 # are NaNs
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
414 if isnan(x) or isnan(y):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
415 if isnan(x) == isnan(y):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
416 return
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
417 elif x == y and (x != 0.0 or copysign(1.0, x) == copysign(1.0, y)):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
418 return
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
419 self.fail('%r not identical to %r' % (x, y))
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
420
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
421 def test_ends(self):
48498
177302feab36 Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48497
diff changeset
422 self.identical(self.MIN, ldexp(1.0, -1022))
177302feab36 Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48497
diff changeset
423 self.identical(self.TINY, ldexp(1.0, -1074))
177302feab36 Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48497
diff changeset
424 self.identical(self.EPS, ldexp(1.0, -52))
177302feab36 Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48497
diff changeset
425 self.identical(self.MAX, 2.*(ldexp(1.0, 1023) - ldexp(1.0, 970)))
48497
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
426
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
427 def test_invalid_inputs(self):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
428 invalid_inputs = [
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
429 'infi', # misspelt infinities and nans
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
430 '-Infinit',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
431 '++inf',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
432 '-+Inf',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
433 '--nan',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
434 '+-NaN',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
435 'snan',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
436 'NaNs',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
437 'nna',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
438 '0xnan',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
439 '',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
440 ' ',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
441 'x1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
442 '0xX1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
443 '+ 0x1.0p0', # internal whitespace
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
444 '- 0x1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
445 '0 x1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
446 '0x 1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
447 '0x1 2.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
448 '+0x1 .0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
449 '0x1. 0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
450 '-0x1.0 1p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
451 '-0x1.0 p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
452 '+0x1.0p +0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
453 '0x1.0p -0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
454 '0x1.0p 0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
455 '+0x1.0p+ 0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
456 '-0x1.0p- 0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
457 '++0x1.0p-0', # double signs
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
458 '--0x1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
459 '+-0x1.0p+0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
460 '-+0x1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
461 '0x1.0p++0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
462 '+0x1.0p+-0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
463 '-0x1.0p-+0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
464 '0x1.0p--0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
465 '0x1.0.p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
466 '0x.p0', # no hex digits before or after point
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
467 '0x1,p0', # wrong decimal point character
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
468 '0x1pa',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
469 '0x1p\uff10', # fullwidth Unicode digits
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
470 '\uff10x1p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
471 '0x\uff11p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
472 '0x1.\uff10p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
473 '0x1p0 \n 0x2p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
474 '0x1p0\0 0x1p0', # embedded null byte is not end of string
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
475 ]
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
476 for x in invalid_inputs:
48817
a77022dc3f61 Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48499
diff changeset
477 try:
a77022dc3f61 Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48499
diff changeset
478 result = fromHex(x)
a77022dc3f61 Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48499
diff changeset
479 except ValueError:
a77022dc3f61 Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48499
diff changeset
480 pass
a77022dc3f61 Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48499
diff changeset
481 else:
a77022dc3f61 Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48499
diff changeset
482 self.fail('Expected float.fromhex(%r) to raise ValueError; '
a77022dc3f61 Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48499
diff changeset
483 'got %r instead' % (x, result))
48497
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
484
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
485
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
486 def test_from_hex(self):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
487 MIN = self.MIN;
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
488 MAX = self.MAX;
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
489 TINY = self.TINY;
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
490 EPS = self.EPS;
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
491
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
492 # two spellings of infinity, with optional signs; case-insensitive
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
493 self.identical(fromHex('inf'), INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
494 self.identical(fromHex('+Inf'), INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
495 self.identical(fromHex('-INF'), -INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
496 self.identical(fromHex('iNf'), INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
497 self.identical(fromHex('Infinity'), INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
498 self.identical(fromHex('+INFINITY'), INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
499 self.identical(fromHex('-infinity'), -INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
500 self.identical(fromHex('-iNFiNitY'), -INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
501
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
502 # nans with optional sign; case insensitive
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
503 self.identical(fromHex('nan'), NAN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
504 self.identical(fromHex('+NaN'), NAN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
505 self.identical(fromHex('-NaN'), NAN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
506 self.identical(fromHex('-nAN'), NAN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
507
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
508 # variations in input format
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
509 self.identical(fromHex('1'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
510 self.identical(fromHex('+1'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
511 self.identical(fromHex('1.'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
512 self.identical(fromHex('1.0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
513 self.identical(fromHex('1.0p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
514 self.identical(fromHex('01'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
515 self.identical(fromHex('01.'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
516 self.identical(fromHex('0x1'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
517 self.identical(fromHex('0x1.'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
518 self.identical(fromHex('0x1.0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
519 self.identical(fromHex('+0x1.0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
520 self.identical(fromHex('0x1p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
521 self.identical(fromHex('0X1p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
522 self.identical(fromHex('0X1P0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
523 self.identical(fromHex('0x1P0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
524 self.identical(fromHex('0x1.p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
525 self.identical(fromHex('0x1.0p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
526 self.identical(fromHex('0x.1p4'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
527 self.identical(fromHex('0x.1p04'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
528 self.identical(fromHex('0x.1p004'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
529 self.identical(fromHex('0x1p+0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
530 self.identical(fromHex('0x1P-0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
531 self.identical(fromHex('+0x1p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
532 self.identical(fromHex('0x01p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
533 self.identical(fromHex('0x1p00'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
534 self.identical(fromHex(' 0x1p0 '), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
535 self.identical(fromHex('\n 0x1p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
536 self.identical(fromHex('0x1p0 \t'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
537 self.identical(fromHex('0xap0'), 10.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
538 self.identical(fromHex('0xAp0'), 10.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
539 self.identical(fromHex('0xaP0'), 10.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
540 self.identical(fromHex('0xAP0'), 10.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
541 self.identical(fromHex('0xbep0'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
542 self.identical(fromHex('0xBep0'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
543 self.identical(fromHex('0xbEp0'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
544 self.identical(fromHex('0XBE0P-4'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
545 self.identical(fromHex('0xBEp0'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
546 self.identical(fromHex('0xB.Ep4'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
547 self.identical(fromHex('0x.BEp8'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
548 self.identical(fromHex('0x.0BEp12'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
549
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
550 # moving the point around
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
551 pi = fromHex('0x1.921fb54442d18p1')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
552 self.identical(fromHex('0x.006487ed5110b46p11'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
553 self.identical(fromHex('0x.00c90fdaa22168cp10'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
554 self.identical(fromHex('0x.01921fb54442d18p9'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
555 self.identical(fromHex('0x.03243f6a8885a3p8'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
556 self.identical(fromHex('0x.06487ed5110b46p7'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
557 self.identical(fromHex('0x.0c90fdaa22168cp6'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
558 self.identical(fromHex('0x.1921fb54442d18p5'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
559 self.identical(fromHex('0x.3243f6a8885a3p4'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
560 self.identical(fromHex('0x.6487ed5110b46p3'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
561 self.identical(fromHex('0x.c90fdaa22168cp2'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
562 self.identical(fromHex('0x1.921fb54442d18p1'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
563 self.identical(fromHex('0x3.243f6a8885a3p0'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
564 self.identical(fromHex('0x6.487ed5110b46p-1'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
565 self.identical(fromHex('0xc.90fdaa22168cp-2'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
566 self.identical(fromHex('0x19.21fb54442d18p-3'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
567 self.identical(fromHex('0x32.43f6a8885a3p-4'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
568 self.identical(fromHex('0x64.87ed5110b46p-5'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
569 self.identical(fromHex('0xc9.0fdaa22168cp-6'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
570 self.identical(fromHex('0x192.1fb54442d18p-7'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
571 self.identical(fromHex('0x324.3f6a8885a3p-8'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
572 self.identical(fromHex('0x648.7ed5110b46p-9'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
573 self.identical(fromHex('0xc90.fdaa22168cp-10'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
574 self.identical(fromHex('0x1921.fb54442d18p-11'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
575 # ...
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
576 self.identical(fromHex('0x1921fb54442d1.8p-47'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
577 self.identical(fromHex('0x3243f6a8885a3p-48'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
578 self.identical(fromHex('0x6487ed5110b46p-49'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
579 self.identical(fromHex('0xc90fdaa22168cp-50'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
580 self.identical(fromHex('0x1921fb54442d18p-51'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
581 self.identical(fromHex('0x3243f6a8885a30p-52'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
582 self.identical(fromHex('0x6487ed5110b460p-53'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
583 self.identical(fromHex('0xc90fdaa22168c0p-54'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
584 self.identical(fromHex('0x1921fb54442d180p-55'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
585
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
586
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
587 # results that should overflow...
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
588 self.assertRaises(OverflowError, fromHex, '-0x1p1024')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
589 self.assertRaises(OverflowError, fromHex, '0x1p+1025')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
590 self.assertRaises(OverflowError, fromHex, '+0X1p1030')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
591 self.assertRaises(OverflowError, fromHex, '-0x1p+1100')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
592 self.assertRaises(OverflowError, fromHex, '0X1p123456789123456789')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
593 self.assertRaises(OverflowError, fromHex, '+0X.8p+1025')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
594 self.assertRaises(OverflowError, fromHex, '+0x0.8p1025')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
595 self.assertRaises(OverflowError, fromHex, '-0x0.4p1026')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
596 self.assertRaises(OverflowError, fromHex, '0X2p+1023')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
597 self.assertRaises(OverflowError, fromHex, '0x2.p1023')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
598 self.assertRaises(OverflowError, fromHex, '-0x2.0p+1023')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
599 self.assertRaises(OverflowError, fromHex, '+0X4p+1022')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
600 self.assertRaises(OverflowError, fromHex, '0x1.ffffffffffffffp+1023')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
601 self.assertRaises(OverflowError, fromHex, '-0X1.fffffffffffff9p1023')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
602 self.assertRaises(OverflowError, fromHex, '0X1.fffffffffffff8p1023')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
603 self.assertRaises(OverflowError, fromHex, '+0x3.fffffffffffffp1022')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
604 self.assertRaises(OverflowError, fromHex, '0x3fffffffffffffp+970')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
605 self.assertRaises(OverflowError, fromHex, '0x10000000000000000p960')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
606 self.assertRaises(OverflowError, fromHex, '-0Xffffffffffffffffp960')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
607
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
608 # ...and those that round to +-max float
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
609 self.identical(fromHex('+0x1.fffffffffffffp+1023'), MAX)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
610 self.identical(fromHex('-0X1.fffffffffffff7p1023'), -MAX)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
611 self.identical(fromHex('0X1.fffffffffffff7fffffffffffffp1023'), MAX)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
612
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
613 # zeros
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
614 self.identical(fromHex('0x0p0'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
615 self.identical(fromHex('0x0p1000'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
616 self.identical(fromHex('-0x0p1023'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
617 self.identical(fromHex('0X0p1024'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
618 self.identical(fromHex('-0x0p1025'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
619 self.identical(fromHex('0X0p2000'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
620 self.identical(fromHex('0x0p123456789123456789'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
621 self.identical(fromHex('-0X0p-0'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
622 self.identical(fromHex('-0X0p-1000'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
623 self.identical(fromHex('0x0p-1023'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
624 self.identical(fromHex('-0X0p-1024'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
625 self.identical(fromHex('-0x0p-1025'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
626 self.identical(fromHex('-0x0p-1072'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
627 self.identical(fromHex('0X0p-1073'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
628 self.identical(fromHex('-0x0p-1074'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
629 self.identical(fromHex('0x0p-1075'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
630 self.identical(fromHex('0X0p-1076'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
631 self.identical(fromHex('-0X0p-2000'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
632 self.identical(fromHex('-0x0p-123456789123456789'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
633
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
634 # values that should underflow to 0
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
635 self.identical(fromHex('0X1p-1075'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
636 self.identical(fromHex('-0X1p-1075'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
637 self.identical(fromHex('-0x1p-123456789123456789'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
638 self.identical(fromHex('0x1.00000000000000001p-1075'), TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
639 self.identical(fromHex('-0x1.1p-1075'), -TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
640 self.identical(fromHex('0x1.fffffffffffffffffp-1075'), TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
641
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
642 # check round-half-even is working correctly near 0 ...
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
643 self.identical(fromHex('0x1p-1076'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
644 self.identical(fromHex('0X2p-1076'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
645 self.identical(fromHex('0X3p-1076'), TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
646 self.identical(fromHex('0x4p-1076'), TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
647 self.identical(fromHex('0X5p-1076'), TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
648 self.identical(fromHex('0X6p-1076'), 2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
649 self.identical(fromHex('0x7p-1076'), 2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
650 self.identical(fromHex('0X8p-1076'), 2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
651 self.identical(fromHex('0X9p-1076'), 2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
652 self.identical(fromHex('0xap-1076'), 2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
653 self.identical(fromHex('0Xbp-1076'), 3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
654 self.identical(fromHex('0xcp-1076'), 3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
655 self.identical(fromHex('0Xdp-1076'), 3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
656 self.identical(fromHex('0Xep-1076'), 4*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
657 self.identical(fromHex('0xfp-1076'), 4*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
658 self.identical(fromHex('0x10p-1076'), 4*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
659 self.identical(fromHex('-0x1p-1076'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
660 self.identical(fromHex('-0X2p-1076'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
661 self.identical(fromHex('-0x3p-1076'), -TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
662 self.identical(fromHex('-0X4p-1076'), -TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
663 self.identical(fromHex('-0x5p-1076'), -TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
664 self.identical(fromHex('-0x6p-1076'), -2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
665 self.identical(fromHex('-0X7p-1076'), -2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
666 self.identical(fromHex('-0X8p-1076'), -2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
667 self.identical(fromHex('-0X9p-1076'), -2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
668 self.identical(fromHex('-0Xap-1076'), -2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
669 self.identical(fromHex('-0xbp-1076'), -3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
670 self.identical(fromHex('-0xcp-1076'), -3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
671 self.identical(fromHex('-0Xdp-1076'), -3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
672 self.identical(fromHex('-0xep-1076'), -4*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
673 self.identical(fromHex('-0Xfp-1076'), -4*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
674 self.identical(fromHex('-0X10p-1076'), -4*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
675
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
676 # ... and near MIN ...
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
677 self.identical(fromHex('0x0.ffffffffffffd6p-1022'), MIN-3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
678 self.identical(fromHex('0x0.ffffffffffffd8p-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
679 self.identical(fromHex('0x0.ffffffffffffdap-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
680 self.identical(fromHex('0x0.ffffffffffffdcp-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
681 self.identical(fromHex('0x0.ffffffffffffdep-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
682 self.identical(fromHex('0x0.ffffffffffffe0p-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
683 self.identical(fromHex('0x0.ffffffffffffe2p-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
684 self.identical(fromHex('0x0.ffffffffffffe4p-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
685 self.identical(fromHex('0x0.ffffffffffffe6p-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
686 self.identical(fromHex('0x0.ffffffffffffe8p-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
687 self.identical(fromHex('0x0.ffffffffffffeap-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
688 self.identical(fromHex('0x0.ffffffffffffecp-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
689 self.identical(fromHex('0x0.ffffffffffffeep-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
690 self.identical(fromHex('0x0.fffffffffffff0p-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
691 self.identical(fromHex('0x0.fffffffffffff2p-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
692 self.identical(fromHex('0x0.fffffffffffff4p-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
693 self.identical(fromHex('0x0.fffffffffffff6p-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
694 self.identical(fromHex('0x0.fffffffffffff8p-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
695 self.identical(fromHex('0x0.fffffffffffffap-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
696 self.identical(fromHex('0x0.fffffffffffffcp-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
697 self.identical(fromHex('0x0.fffffffffffffep-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
698 self.identical(fromHex('0x1.00000000000000p-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
699 self.identical(fromHex('0x1.00000000000002p-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
700 self.identical(fromHex('0x1.00000000000004p-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
701 self.identical(fromHex('0x1.00000000000006p-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
702 self.identical(fromHex('0x1.00000000000008p-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
703 self.identical(fromHex('0x1.0000000000000ap-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
704 self.identical(fromHex('0x1.0000000000000cp-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
705 self.identical(fromHex('0x1.0000000000000ep-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
706 self.identical(fromHex('0x1.00000000000010p-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
707 self.identical(fromHex('0x1.00000000000012p-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
708 self.identical(fromHex('0x1.00000000000014p-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
709 self.identical(fromHex('0x1.00000000000016p-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
710 self.identical(fromHex('0x1.00000000000018p-1022'), MIN+2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
711
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
712 # ... and near 1.0.
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
713 self.identical(fromHex('0x0.fffffffffffff0p0'), 1.0-EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
714 self.identical(fromHex('0x0.fffffffffffff1p0'), 1.0-EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
715 self.identical(fromHex('0X0.fffffffffffff2p0'), 1.0-EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
716 self.identical(fromHex('0x0.fffffffffffff3p0'), 1.0-EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
717 self.identical(fromHex('0X0.fffffffffffff4p0'), 1.0-EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
718 self.identical(fromHex('0X0.fffffffffffff5p0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
719 self.identical(fromHex('0X0.fffffffffffff6p0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
720 self.identical(fromHex('0x0.fffffffffffff7p0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
721 self.identical(fromHex('0x0.fffffffffffff8p0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
722 self.identical(fromHex('0X0.fffffffffffff9p0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
723 self.identical(fromHex('0X0.fffffffffffffap0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
724 self.identical(fromHex('0x0.fffffffffffffbp0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
725 self.identical(fromHex('0X0.fffffffffffffcp0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
726 self.identical(fromHex('0x0.fffffffffffffdp0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
727 self.identical(fromHex('0X0.fffffffffffffep0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
728 self.identical(fromHex('0x0.ffffffffffffffp0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
729 self.identical(fromHex('0X1.00000000000000p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
730 self.identical(fromHex('0X1.00000000000001p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
731 self.identical(fromHex('0x1.00000000000002p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
732 self.identical(fromHex('0X1.00000000000003p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
733 self.identical(fromHex('0x1.00000000000004p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
734 self.identical(fromHex('0X1.00000000000005p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
735 self.identical(fromHex('0X1.00000000000006p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
736 self.identical(fromHex('0X1.00000000000007p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
737 self.identical(fromHex('0x1.00000000000007ffffffffffffffffffffp0'),
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
738 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
739 self.identical(fromHex('0x1.00000000000008p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
740 self.identical(fromHex('0x1.00000000000008000000000000000001p0'),
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
741 1+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
742 self.identical(fromHex('0X1.00000000000009p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
743 self.identical(fromHex('0x1.0000000000000ap0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
744 self.identical(fromHex('0x1.0000000000000bp0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
745 self.identical(fromHex('0X1.0000000000000cp0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
746 self.identical(fromHex('0x1.0000000000000dp0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
747 self.identical(fromHex('0x1.0000000000000ep0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
748 self.identical(fromHex('0X1.0000000000000fp0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
749 self.identical(fromHex('0x1.00000000000010p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
750 self.identical(fromHex('0X1.00000000000011p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
751 self.identical(fromHex('0x1.00000000000012p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
752 self.identical(fromHex('0X1.00000000000013p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
753 self.identical(fromHex('0X1.00000000000014p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
754 self.identical(fromHex('0x1.00000000000015p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
755 self.identical(fromHex('0x1.00000000000016p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
756 self.identical(fromHex('0X1.00000000000017p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
757 self.identical(fromHex('0x1.00000000000017ffffffffffffffffffffp0'),
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
758 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
759 self.identical(fromHex('0x1.00000000000018p0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
760 self.identical(fromHex('0X1.00000000000018000000000000000001p0'),
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
761 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
762 self.identical(fromHex('0x1.00000000000019p0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
763 self.identical(fromHex('0X1.0000000000001ap0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
764 self.identical(fromHex('0X1.0000000000001bp0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
765 self.identical(fromHex('0x1.0000000000001cp0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
766 self.identical(fromHex('0x1.0000000000001dp0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
767 self.identical(fromHex('0x1.0000000000001ep0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
768 self.identical(fromHex('0X1.0000000000001fp0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
769 self.identical(fromHex('0x1.00000000000020p0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
770
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
771 def test_roundtrip(self):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
772 def roundtrip(x):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
773 return fromHex(toHex(x))
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
774
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
775 for x in [NAN, INF, self.MAX, self.MIN, self.MIN-self.TINY, self.TINY, 0.0]:
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
776 self.identical(x, roundtrip(x))
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
777 self.identical(-x, roundtrip(-x))
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
778
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
779 # fromHex(toHex(x)) should exactly recover x, for any non-NaN float x.
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
780 import random
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
781 for i in range(10000):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
782 e = random.randrange(-1200, 1200)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
783 m = random.random()
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
784 s = random.choice([1.0, -1.0])
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
785 try:
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
786 x = s*ldexp(m, e)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
787 except OverflowError:
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
788 pass
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
789 else:
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
790 self.identical(x, fromHex(toHex(x)))
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
791
46477
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
792
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
793 def test_main():
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46664
diff changeset
794 support.run_unittest(
49055
ca1a8ac47d04 I modified the tests a bit to account for unicode string
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 48817
diff changeset
795 GeneralFloatCases,
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
796 FormatFunctionsTestCase,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
797 UnknownFormatTestCase,
42817
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
798 IEEEFormatTestCase,
44260
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
799 FormatTestCase,
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
800 ReprTestCase,
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
801 InfNanTest,
48497
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
802 HexFloatTestCase,
44268
7ae604b3533b Merged revisions 59450-59464 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44260
diff changeset
803 )
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
804
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
805 if __name__ == '__main__':
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
806 test_main()