summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_doctest.py
diff options
context:
space:
mode:
authorEdward Loper <edloper@gradient.cis.upenn.edu>2004-09-28 04:29:57 (GMT)
committerEdward Loper <edloper@gradient.cis.upenn.edu>2004-09-28 04:29:57 (GMT)
commitaec3c9b54fe2cbd8f4b04b6034341d333bc3936b (patch)
treef5f85259f6804bafb6c6342c068a58e724e4cb62 /Lib/test/test_doctest.py
parentbfef8695103b947f688b8c4a7ff8fc19477fc528 (diff)
downloadcpython-aec3c9b54fe2cbd8f4b04b6034341d333bc3936b.zip
cpython-aec3c9b54fe2cbd8f4b04b6034341d333bc3936b.tar.gz
cpython-aec3c9b54fe2cbd8f4b04b6034341d333bc3936b.tar.bz2
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).
Diffstat (limited to 'Lib/test/test_doctest.py')
-rw-r--r--Lib/test/test_doctest.py101
1 files changed, 101 insertions, 0 deletions
diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py
index d17ca1a..eb0b10c 100644
--- a/Lib/test/test_doctest.py
+++ b/Lib/test/test_doctest.py
@@ -1032,6 +1032,107 @@ treated as equal:
[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: