]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
* os.py: _exit doesn't exist in all variations of posix
authorGuido van Rossum <guido@python.org>
Tue, 26 Jan 1993 13:04:43 +0000 (13:04 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 26 Jan 1993 13:04:43 +0000 (13:04 +0000)
* Added fcmp() to test_support.py and use it in test*.py

Lib/os.py
Lib/test/test_b1.py
Lib/test/test_b2.py
Lib/test/test_support.py

index 556268fe4e89a7f14be1494f5fc594f8e35150ff..dc1ef5a89803d98676c1237d7e9f93e103c5905c 100644 (file)
--- a/Lib/os.py
+++ b/Lib/os.py
 
 try:
        from posix import *
-       from posix import _exit
+       try:
+               from posix import _exit
+       except ImportError:
+               pass
        name = 'posix'
        curdir = '.'
        pardir = '..'
index b780c729edd1b3ab99188023f283f47a9f6100c0..e5611e566c3c19731c06c4f61a50f8658cb080d6 100644 (file)
@@ -42,9 +42,9 @@ if cmp(1, -1) <> 1: raise TestFailed, 'cmp(1, -1)'
 if cmp(1, 1) <> 0: raise TestFailed, 'cmp(1, 1)'
 
 print 'coerce'
-if coerce(1, 1.1) <> (1.0, 1.1): raise TestFailed, 'coerce(1, 1.1)'
+if fcmp(coerce(1, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1, 1.1)'
 if coerce(1, 1L) <> (1L, 1L): raise TestFailed, 'coerce(1, 1L)'
-if coerce(1L, 1.1) <> (1.0, 1.1): raise TestFailed, 'coerce(1L, 1.1)'
+if fcmp(coerce(1L, 1.1), (1.0, 1.1)): raise TestFailed, 'coerce(1L, 1.1)'
 
 print 'dir'
 x = 1
@@ -68,10 +68,14 @@ if divmod(-12, 7L) <> (-2, 2L): raise TestFailed, 'divmod(-12, 7L)'
 if divmod(12L, -7) <> (-2L, -2): raise TestFailed, 'divmod(12L, -7)'
 if divmod(-12L, -7) <> (1L, -5): raise TestFailed, 'divmod(-12L, -7)'
 #
-if divmod(3.25, 1.0) <> (3.0, 0.25): raise TestFailed, 'divmod(3.25, 1.0)'
-if divmod(-3.25, 1.0) <> (-4.0, 0.75): raise TestFailed, 'divmod(-3.25, 1.0)'
-if divmod(3.25, -1.0) <> (-4.0, -0.75): raise TestFailed, 'divmod(3.25, -1.0)'
-if divmod(-3.25, -1.0) <> (3.0, -0.25): raise TestFailed, 'divmod(-3.25, -1.0)'
+if fcmp(divmod(3.25, 1.0), (3.0, 0.25)):
+       raise TestFailed, 'divmod(3.25, 1.0)'
+if fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)):
+       raise TestFailed, 'divmod(-3.25, 1.0)'
+if fcmp(divmod(3.25, -1.0), (-4.0, -0.75)):
+       raise TestFailed, 'divmod(3.25, -1.0)'
+if fcmp(divmod(-3.25, -1.0), (3.0, -0.25)):
+       raise TestFailed, 'divmod(-3.25, -1.0)'
 
 print 'eval'
 if eval('1+1') <> 2: raise TestFailed, 'eval(\'1+1\')'
index 568ed9724a66ba8c959448e9df4a08235251acc8..f376f468cd457e24169f599ea1a0fc1a449ee1b0 100644 (file)
@@ -71,21 +71,21 @@ if pow(-2L,1) <> -2: raise TestFailed, 'pow(-2L,1)'
 if pow(-2L,2) <> 4: raise TestFailed, 'pow(-2L,2)'
 if pow(-2L,3) <> -8: raise TestFailed, 'pow(-2L,3)'
 #
-if pow(0.,0) <> 1.: raise TestFailed, 'pow(0.,0)'
-if pow(0.,1) <> 0.: raise TestFailed, 'pow(0.,1)'
-if pow(1.,0) <> 1.: raise TestFailed, 'pow(1.,0)'
-if pow(1.,1) <> 1.: raise TestFailed, 'pow(1.,1)'
+if fcmp(pow(0.,0), 1.): raise TestFailed, 'pow(0.,0)'
+if fcmp(pow(0.,1), 0.): raise TestFailed, 'pow(0.,1)'
+if fcmp(pow(1.,0), 1.): raise TestFailed, 'pow(1.,0)'
+if fcmp(pow(1.,1), 1.): raise TestFailed, 'pow(1.,1)'
 #
-if pow(2.,0) <> 1.: raise TestFailed, 'pow(2.,0)'
-if pow(2.,10) <> 1024.: raise TestFailed, 'pow(2.,10)'
-if pow(2.,20) <> 1024.*1024.: raise TestFailed, 'pow(2.,20)'
-if pow(2.,30) <> 1024.*1024.*1024.: raise TestFailed, 'pow(2.,30)'
+if fcmp(pow(2.,0), 1.): raise TestFailed, 'pow(2.,0)'
+if fcmp(pow(2.,10), 1024.): raise TestFailed, 'pow(2.,10)'
+if fcmp(pow(2.,20), 1024.*1024.): raise TestFailed, 'pow(2.,20)'
+if fcmp(pow(2.,30), 1024.*1024.*1024.): raise TestFailed, 'pow(2.,30)'
 #
 # XXX These don't work -- negative float to the float power...
-#if pow(-2.,0) <> 1.: raise TestFailed, 'pow(-2.,0)'
-#if pow(-2.,1) <> -2.: raise TestFailed, 'pow(-2.,1)'
-#if pow(-2.,2) <> 4.: raise TestFailed, 'pow(-2.,2)'
-#if pow(-2.,3) <> -8.: raise TestFailed, 'pow(-2.,3)'
+#if fcmp(pow(-2.,0), 1.): raise TestFailed, 'pow(-2.,0)'
+#if fcmp(pow(-2.,1), -2.): raise TestFailed, 'pow(-2.,1)'
+#if fcmp(pow(-2.,2), 4.): raise TestFailed, 'pow(-2.,2)'
+#if fcmp(pow(-2.,3), -8.): raise TestFailed, 'pow(-2.,3)'
 
 print 'range'
 if range(3) <> [0, 1, 2]: raise TestFailed, 'range(3)'
index c6d0611148581cafa37d4d8ed2b5043ee0d13a4c..7a766642b62ba049e76e74ef409644ce6e2c2a96 100644 (file)
@@ -18,5 +18,24 @@ def forget(modname):
                except os.error:
                        pass
 
+FUZZ = 1e-6
+
+def fcmp(x, y): # fuzzy comparison function
+       if type(x) == type(0.0) or type(y) == type(0.0):
+               try:
+                       x, y = coerce(x, y)
+                       fuzz = (abs(x) + abs(y)) * FUZZ
+                       if abs(x-y) <= fuzz:
+                               return 0
+               except:
+                       pass
+       elif type(x) == type(y) and type(x) in (type(()), type([])):
+               for i in range(min(len(x), len(y))):
+                       outcome = fcmp(x[i], y[i])
+                       if outcome <> 0:
+                               return outcome
+               return cmp(len(x), len(y))
+       return cmp(x, y)
+
 TESTFN = '@test' # Filename used for testing
 from os import unlink