[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