[Python-checkins] python/dist/src/Lib/test test_doctest.py, 1.49,
1.50
edloper at users.sourceforge.net
edloper at users.sourceforge.net
Tue Sep 28 06:30:14 CEST 2004
Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32322/dist/src/Lib/test
Modified Files:
test_doctest.py
Log Message:
Added a new NORMALIZE_NUMBERS option, which causes number literals in
the expected output to match corresponding number literals in the
actual output if their values are equal (to ten digits of precision).
Index: test_doctest.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_doctest.py,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -d -r1.49 -r1.50
--- test_doctest.py 21 Sep 2004 03:20:34 -0000 1.49
+++ test_doctest.py 28 Sep 2004 04:29:57 -0000 1.50
@@ -1032,6 +1032,107 @@
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
+The NORMALIZE_NUMBERS flag causes numbers that are equal (to
+approximately 10 decimal places) but formatted differently to match.
+
+ >>> def f(x): '''
+ ... Numbers will match if they are exactly equal:
+ ...
+ ... >>> print 1.1, 'intervening text', 1L # should match
+ ... 1.1 intervening text 1L
+ ... >>> print 1.0j, 22, 22.0, 1, 1e1 # should match
+ ... 1j 22.0 22 1 10.0
+ ...
+ ... Numbers will match if they are equal to 14 digits of
+ ... precision:
+ ...
+ ... >>> 2.00000000001 # should match
+ ... 1.99999999999
+ ... >>> 2.000000001 # should not match
+ ... 1.999999999
+ ... >>> 2.00000000001e10 # should match
+ ... 1.99999999999e10
+ ... >>> 2.000000001e10 # should not match
+ ... 1.999999999e10
+ ... '''
+
+ >>> # Without the flag:
+ >>> test = doctest.DocTestFinder().find(f)[0]
+ >>> doctest.DocTestRunner(verbose=False).run(test)
+ ... # doctest: +ELLIPSIS
+ **********************************************************************
+ File ..., line 4, in f
+ Failed example:
+ print 1.1, 'intervening text', 1L # should match
+ Expected:
+ 1.1 intervening text 1L
+ Got:
+ 1.1 intervening text 1
+ **********************************************************************
+ File ..., line 6, in f
+ Failed example:
+ print 1.0j, 22, 22.0, 1, 1e1 # should match
+ Expected:
+ 1j 22.0 22 1 10.0
+ Got:
+ 1j 22 22.0 1 10.0
+ **********************************************************************
+ File ..., line 12, in f
+ Failed example:
+ 2.00000000001 # should match
+ Expected:
+ 1.99999999999
+ Got:
+ 2.00000000001
+ **********************************************************************
+ File ..., line 14, in f
+ Failed example:
+ 2.000000001 # should not match
+ Expected:
+ 1.999999999
+ Got:
+ 2.0000000010000001
+ **********************************************************************
+ File ..., line 16, in f
+ Failed example:
+ 2.00000000001e10 # should match
+ Expected:
+ 1.99999999999e10
+ Got:
+ 20000000000.099998
+ **********************************************************************
+ File ..., line 18, in f
+ Failed example:
+ 2.000000001e10 # should not match
+ Expected:
+ 1.999999999e10
+ Got:
+ 20000000010.0
+ (6, 6)
+
+ >>> # With the flag:
+ >>> test = doctest.DocTestFinder().find(f)[0]
+ >>> flags = doctest.NORMALIZE_NUMBERS
+ >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
+ ... # doctest: +ELLIPSIS
+ **********************************************************************
+ File ..., line 14, in f
+ Failed example:
+ 2.000000001 # should not match
+ Expected:
+ 1.999999999
+ Got:
+ 2.0000000010000001
+ **********************************************************************
+ File ..., line 18, in f
+ Failed example:
+ 2.000000001e10 # should not match
+ Expected:
+ 1.999999999e10
+ Got:
+ 20000000010.0
+ (2, 6)
+
The ELLIPSIS flag causes ellipsis marker ("...") in the expected
output to match any substring in the actual output:
More information about the Python-checkins
mailing list