[Python-checkins] python/dist/src/Lib/test test_string.py,1.20,1.21 test_unicode.py,1.73,1.74

lemburg@users.sourceforge.net lemburg@users.sourceforge.net
Sun, 29 Dec 2002 11:44:08 -0800


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv14562/Lib/test

Modified Files:
	test_string.py test_unicode.py 
Log Message:
Patch for bug #659709: bogus computation of float length

Python 2.2.x backport candidate. (This bug has been around since
Python 1.6.)



Index: test_string.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_string.py,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** test_string.py	9 Aug 2002 01:37:06 -0000	1.20
--- test_string.py	29 Dec 2002 19:44:06 -0000	1.21
***************
*** 58,59 ****
--- 58,85 ----
  string.lowercase
  string.uppercase
+ 
+ # Float formatting
+ for prec in range(100):
+     formatstring = u'%%.%if' % prec
+     value = 0.01
+     for x in range(60):
+         value = value * 3.141592655 / 3.0 * 10.0
+         #print 'Overflow check for x=%i and prec=%i:' % \
+         #      (x, prec),
+         try:
+             result = formatstring % value
+         except OverflowError:
+             # The formatfloat() code in stringobject.c and
+             # unicodeobject.c uses a 120 byte buffer and switches from
+             # 'f' formatting to 'g' at precision 50, so we expect
+             # OverflowErrors for the ranges x < 50 and prec >= 67.
+             if x >= 50 or \
+                prec < 67:
+                 print '*** unexpected OverflowError for x=%i and prec=%i' % (x, prec)
+             else:
+                 #print 'OverflowError'
+                 pass
+         else:
+             #print result
+             pass
+     

Index: test_unicode.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_unicode.py,v
retrieving revision 1.73
retrieving revision 1.74
diff -C2 -d -r1.73 -r1.74
*** test_unicode.py	18 Nov 2002 16:11:34 -0000	1.73
--- test_unicode.py	29 Dec 2002 19:44:06 -0000	1.74
***************
*** 477,480 ****
--- 477,505 ----
          print '*** formatting u"%%c" %% %i should give a ValueError' % ordinal
  
+ # float formatting
+ for prec in range(100):
+     formatstring = u'%%.%if' % prec
+     value = 0.01
+     for x in range(60):
+         value = value * 3.141592655 / 3.0 * 10.0
+         #print 'Overflow check for x=%i and prec=%i:' % \
+         #      (x, prec),
+         try:
+             result = formatstring % value
+         except OverflowError:
+             # The formatfloat() code in stringobject.c and
+             # unicodeobject.c uses a 120 byte buffer and switches from
+             # 'f' formatting to 'g' at precision 50, so we expect
+             # OverflowErrors for the ranges x < 50 and prec >= 67.
+             if x >= 50 or \
+                prec < 67:
+                 print '*** unexpected OverflowError for x=%i and prec=%i' % (x, prec)
+             else:
+                 #print 'OverflowError'
+                 pass
+         else:
+             #print result
+             pass
+     
  # formatting jobs delegated from the string implementation:
  verify('...%(foo)s...' % {'foo':u"abc"} == u'...abc...')