move test pipe class to common location
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 8 Jul 2019 11:07:56 +0000 (12:07 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 8 Jul 2019 11:07:56 +0000 (12:07 +0100)
src/ieee754/fpadd/test/test_fpadd_pipe_32.py
src/ieee754/fpcommon/test/case_gen.py

index 7bcec6128e25e8fe7b59c977cbdbceab94e8acbc..c84b8c39d124156feaafd8930dc28a4c2166a2b4 100644 (file)
@@ -2,11 +2,7 @@
 """
 
 from ieee754.fpadd.pipeline import (FPADDMuxInOut,)
-from ieee754.fpcommon.test.fpmux import runfp, repeat, pipe_cornercases_repeat
-from ieee754.fpcommon.test.case_gen import get_corner_cases, corner_cases
-from ieee754.fpcommon.test.case_gen import (get_rand1, get_nan_noncan,
-                                            get_n127, get_nearly_zero,
-                                            get_nearly_inf, get_corner_rand)
+from ieee754.fpcommon.test.case_gen import run_pipe_fp
 from ieee754.fpcommon.test import unit_test_single
 from ieee754.fpadd.test.add_data32 import regressions
 
@@ -14,51 +10,10 @@ from sfpy import Float32
 from operator import add
 
 
-class PipeFPCase:
-    def __init__(self, dut, name, mod, fmod, width, cc, fpfn, count):
-        self.dut = dut
-        self.name = name
-        self.mod = mod
-        self.fmod = fmod
-        self.width = width
-        self.cc = cc
-        self.fpfn = fpfn
-        self.count = count
-
-    def run(self, name, fn):
-        name = "%s_%s" % (self.name, name)
-        pipe_cornercases_repeat(self.dut, name, self.mod, self.fmod,
-                                self.width, fn, self.cc, self.fpfn,
-                                self.count)
-
-    def run_cornercases(self):
-        vals = repeat(self.dut.num_rows, get_corner_cases(self.mod))
-        tname = "test_fp%s_pipe_fp%d_cornercases" % (self.name, self.width)
-        runfp(self.dut, self.width, tname, self.fmod, self.fpfn, vals=vals)
-
-    def run_regressions(self, regressions_fn):
-        vals = repeat(self.dut.num_rows, regressions_fn())
-        tname = "test_fp%s_pipe_fp%d_regressions" % (self.name, self.width)
-        runfp(self.dut, self.width, tname, self.fmod, self.fpfn, vals=vals)
-
-    def run_random(self):
-        tname = "test_fp%s_pipe_fp%d_rand" % (self.name, self.width)
-        runfp(self.dut, self.width, tname, self.fmod, self.fpfn)
-
-
 def test_pipe_fp32():
     dut = FPADDMuxInOut(32, 4)
-    pc = PipeFPCase(dut, "add", unit_test_single, Float32,
-                   32, corner_cases, add, 10)
-    pc.run("rand1", get_rand1)
-    pc.run("n127", get_n127)
-    pc.run("noncan", get_nan_noncan)
-    pc.run("nearlyzero", get_nearly_zero)
-    pc.run("nearlyinf", get_nearly_inf)
-    pc.run("corner_rand", get_corner_rand)
-    pc.run_cornercases()
-    pc.run_regressions(regressions)
-    pc.run_random()
+    run_pipe_fp(dut, 32, "add", unit_test_single, Float32,
+                   regressions, add, 10)
 
 
 if __name__ == '__main__':
index 2aad438777931c798258a4402bf70ca4c45810f5..441b093e45c5f58056a49dae5d1587ac81c0dbd5 100644 (file)
@@ -1,8 +1,9 @@
+from ieee754.fpcommon.test.fpmux import runfp, repeat, pipe_cornercases_repeat
+
 from random import randint
 from random import seed
 
 import sys
-from sfpy import Float32
 
 def corner_cases(mod):
     return [mod.zero(1), mod.zero(0),
@@ -69,3 +70,47 @@ def get_corner_rand(mod, fixed_num, maxcount, width):
     stimulus_b = [randint(0, 1<<width) for i in range(maxcount)]
     return zip(stimulus_a, stimulus_b)
 
+
+class PipeFPCase:
+    def __init__(self, dut, name, mod, fmod, width, fpfn, count):
+        self.dut = dut
+        self.name = name
+        self.mod = mod
+        self.fmod = fmod
+        self.width = width
+        self.fpfn = fpfn
+        self.count = count
+
+    def run(self, name, fn):
+        name = "%s_%s" % (self.name, name)
+        pipe_cornercases_repeat(self.dut, name, self.mod, self.fmod,
+                                self.width, fn, corner_cases, self.fpfn,
+                                self.count)
+
+    def run_cornercases(self):
+        vals = repeat(self.dut.num_rows, get_corner_cases(self.mod))
+        tname = "test_fp%s_pipe_fp%d_cornercases" % (self.name, self.width)
+        runfp(self.dut, self.width, tname, self.fmod, self.fpfn, vals=vals)
+
+    def run_regressions(self, regressions_fn):
+        vals = repeat(self.dut.num_rows, regressions_fn())
+        tname = "test_fp%s_pipe_fp%d_regressions" % (self.name, self.width)
+        runfp(self.dut, self.width, tname, self.fmod, self.fpfn, vals=vals)
+
+    def run_random(self):
+        tname = "test_fp%s_pipe_fp%d_rand" % (self.name, self.width)
+        runfp(self.dut, self.width, tname, self.fmod, self.fpfn)
+
+
+def run_pipe_fp(dut, width, name, mod, fmod, regressions, fpfn, count):
+    pc = PipeFPCase(dut, name, mod, fmod, width, fpfn, count)
+    pc.run("rand1", get_rand1)
+    pc.run("n127", get_n127)
+    pc.run("noncan", get_nan_noncan)
+    pc.run("nearlyzero", get_nearly_zero)
+    pc.run("nearlyinf", get_nearly_inf)
+    pc.run("corner_rand", get_corner_rand)
+    pc.run_cornercases()
+    pc.run_regressions(regressions)
+    pc.run_random()
+