diff options
-rw-r--r-- | Lib/os.py | 5 | ||||
-rw-r--r-- | Lib/test/test_b1.py | 16 | ||||
-rw-r--r-- | Lib/test/test_b2.py | 24 | ||||
-rw-r--r-- | Lib/test/test_support.py | 19 |
4 files changed, 45 insertions, 19 deletions
@@ -18,7 +18,10 @@ try: from posix import * - from posix import _exit + try: + from posix import _exit + except ImportError: + pass name = 'posix' curdir = '.' pardir = '..' diff --git a/Lib/test/test_b1.py b/Lib/test/test_b1.py index b780c72..e5611e5 100644 --- a/Lib/test/test_b1.py +++ b/Lib/test/test_b1.py @@ -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\')' diff --git a/Lib/test/test_b2.py b/Lib/test/test_b2.py index 568ed97..f376f46 100644 --- a/Lib/test/test_b2.py +++ b/Lib/test/test_b2.py @@ -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)' diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index c6d0611..7a76664 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -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 |