Author: Brian Kearns <bdkea...@gmail.com>
Branch: 
Changeset: r61249:9ca97c0a7ccd
Date: 2013-02-15 04:05 -0500
http://bitbucket.org/pypy/pypy/changeset/9ca97c0a7ccd/

Log:    move these ieee-specific tests to test_ieee.py

diff --git a/rpython/rlib/rstruct/test/test_ieee.py 
b/rpython/rlib/rstruct/test/test_ieee.py
--- a/rpython/rlib/rstruct/test/test_ieee.py
+++ b/rpython/rlib/rstruct/test/test_ieee.py
@@ -1,9 +1,11 @@
-import py, sys
+import py
+import sys
 import random
 import struct
 
-from rpython.rlib.rfloat import isnan
-from rpython.rlib.rstruct.ieee import float_pack, float_unpack, float_pack80, 
float_unpack80
+from rpython.rlib.rstruct import ieee
+from rpython.rlib.rfloat import isnan, NAN, INFINITY
+from rpython.translator.c.test.test_genc import compile
 
 class TestFloatPacking:
     def setup_class(cls):
@@ -12,17 +14,17 @@
 
     def check_float(self, x):
         # check roundtrip
-        Q = float_pack(x, 8)
-        y = float_unpack(Q, 8)
+        Q = ieee.float_pack(x, 8)
+        y = ieee.float_unpack(Q, 8)
         assert repr(x) == repr(y)
 
-        Q = float_pack80(x)
-        y = float_unpack80(Q)
+        Q = ieee.float_pack80(x)
+        y = ieee.float_unpack80(Q)
         assert repr(x) == repr(y),'%r != %r, Q=%r'%(x, y, Q)
 
         # check that packing agrees with the struct module
         struct_pack8 = struct.unpack('<Q', struct.pack('<d', x))[0]
-        float_pack8 = float_pack(x, 8)
+        float_pack8 = ieee.float_pack(x, 8)
         assert struct_pack8 == float_pack8
 
         # check that packing agrees with the struct module
@@ -31,7 +33,7 @@
         except OverflowError:
             struct_pack4 = "overflow"
         try:
-            float_pack4 = float_pack(x, 4)
+            float_pack4 = ieee.float_pack(x, 4)
         except OverflowError:
             float_pack4 = "overflow"
         assert struct_pack4 == float_pack4
@@ -40,15 +42,15 @@
             return
 
         # if we didn't overflow, try round-tripping the binary32 value
-        roundtrip = float_pack(float_unpack(float_pack4, 4), 4)
+        roundtrip = ieee.float_pack(ieee.float_unpack(float_pack4, 4), 4)
         assert float_pack4 == roundtrip
 
         try:
-            float_pack2 = float_pack(x, 2)
+            float_pack2 = ieee.float_pack(x, 2)
         except OverflowError:
             return
 
-        roundtrip = float_pack(float_unpack(float_pack2, 2), 2)
+        roundtrip = ieee.float_pack(ieee.float_unpack(float_pack2, 2), 2)
         assert (float_pack2,x) == (roundtrip,x)
 
     def test_infinities(self):
@@ -61,23 +63,23 @@
 
     def test_check_size(self):
         # these were refactored into separate pack80/unpack80 functions
-        py.test.raises(ValueError, float_pack, 1.0, 12)
-        py.test.raises(ValueError, float_pack, 1.0, 16)
-        py.test.raises(ValueError, float_unpack, 1, 12)
-        py.test.raises(ValueError, float_unpack, 1, 16)
+        py.test.raises(ValueError, ieee.float_pack, 1.0, 12)
+        py.test.raises(ValueError, ieee.float_pack, 1.0, 16)
+        py.test.raises(ValueError, ieee.float_unpack, 1, 12)
+        py.test.raises(ValueError, ieee.float_unpack, 1, 16)
 
     def test_nans(self):
-        Q = float_pack80(float('nan'))
-        y = float_unpack80(Q)
+        Q = ieee.float_pack80(float('nan'))
+        y = ieee.float_unpack80(Q)
         assert repr(y) == 'nan'
-        Q = float_pack(float('nan'), 8)
-        y = float_unpack(Q, 8)
+        Q = ieee.float_pack(float('nan'), 8)
+        y = ieee.float_unpack(Q, 8)
         assert repr(y) == 'nan'
-        L = float_pack(float('nan'), 4)
-        z = float_unpack(L, 4)
+        L = ieee.float_pack(float('nan'), 4)
+        z = ieee.float_unpack(L, 4)
         assert repr(z) == 'nan'
-        L = float_pack(float('nan'), 2)
-        z = float_unpack(L, 2)
+        L = ieee.float_pack(float('nan'), 2)
+        z = ieee.float_unpack(L, 2)
         assert repr(z) == 'nan'
 
     def test_simple(self):
@@ -141,9 +143,9 @@
         cases = [[0, 0], [10, 18688], [-10, 51456], [10e3, 28898], 
                  [float('inf'), 31744], [-float('inf'), 64512]]
         for c,h in cases:
-            hbit = float_pack(c, 2)
+            hbit = ieee.float_pack(c, 2)
             assert hbit == h
-            assert c == float_unpack(h, 2)
+            assert c == ieee.float_unpack(h, 2)
 
     def test_halffloat_inexact(self):
         #testcases generated from numpy.float16(x).view('uint16')
@@ -151,9 +153,9 @@
                  [0.027588, 10000, 0.027587890625],
                  [22001, 30047, 22000]]
         for c,h,f in cases:
-            hbit = float_pack(c, 2)
+            hbit = ieee.float_pack(c, 2)
             assert hbit == h
-            assert f == float_unpack(h, 2)
+            assert f == ieee.float_unpack(h, 2)
 
     def test_halffloat_overunderflow(self):
         import math
@@ -161,8 +163,40 @@
                  [1e-08, 0], [-1e-8, -0.]]
         for f1, f2 in cases:
             try:
-                f_out = float_unpack(float_pack(f1, 2), 2)
+                f_out = ieee.float_unpack(ieee.float_pack(f1, 2), 2)
             except OverflowError:
                 f_out = math.copysign(float('inf'), f1)
             assert f_out == f2
             assert math.copysign(1., f_out) == math.copysign(1., f2)
+
+class TestCompiled:
+    def test_pack_float(self):
+        def pack(x):
+            result = []
+            ieee.pack_float(result, x, 8, False)
+            l = []
+            for x in result:
+                for c in x:
+                    l.append(str(ord(c)))
+            return ','.join(l)
+        c_pack = compile(pack, [float])
+        def unpack(s):
+            l = s.split(',')
+            s = ''.join([chr(int(x)) for x in l])
+            return ieee.unpack_float(s, False)
+        c_unpack = compile(unpack, [str])
+
+        def check_roundtrip(x):
+            s = c_pack(x)
+            assert s == pack(x)
+            if not isnan(x):
+                assert unpack(s) == x
+                assert c_unpack(s) == x
+            else:
+                assert isnan(unpack(s))
+                assert isnan(c_unpack(s))
+
+        check_roundtrip(123.456)
+        check_roundtrip(-123.456)
+        check_roundtrip(INFINITY)
+        check_roundtrip(NAN)
diff --git a/rpython/rlib/rstruct/test/test_rstruct.py 
b/rpython/rlib/rstruct/test/test_rstruct.py
--- a/rpython/rlib/rstruct/test/test_rstruct.py
+++ b/rpython/rlib/rstruct/test/test_rstruct.py
@@ -1,9 +1,6 @@
 from rpython.rtyper.test.tool import BaseRtypingTest, LLRtypeMixin, 
OORtypeMixin
 from rpython.rlib.rstruct.runpack import runpack
-from rpython.rlib.rstruct import ieee
 from rpython.rlib.rarithmetic import LONG_BIT
-from rpython.rlib.rfloat import INFINITY, NAN, isnan
-from rpython.translator.c.test.test_genc import compile
 import struct
 
 class BaseTestRStruct(BaseRtypingTest):
@@ -34,35 +31,3 @@
 
 class TestOOType(BaseTestRStruct, OORtypeMixin):
     pass
-
-class TestCompiled:
-    def test_pack_float(self):
-        def pack(x):
-            result = []
-            ieee.pack_float(result, x, 8, False)
-            l = []
-            for x in result:
-                for c in x:
-                    l.append(str(ord(c)))
-            return ','.join(l)
-        c_pack = compile(pack, [float])
-        def unpack(s):
-            l = s.split(',')
-            s = ''.join([chr(int(x)) for x in l])
-            return ieee.unpack_float(s, False)
-        c_unpack = compile(unpack, [str])
-
-        def check_roundtrip(x):
-            s = c_pack(x)
-            assert s == pack(x)
-            if not isnan(x):
-                assert unpack(s) == x
-                assert c_unpack(s) == x
-            else:
-                assert isnan(unpack(s))
-                assert isnan(c_unpack(s))
-
-        check_roundtrip(123.456)
-        check_roundtrip(-123.456)
-        check_roundtrip(INFINITY)
-        check_roundtrip(NAN)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to