from ieee754.fclass.pipeline import (FPClassMuxInOut,)
 from ieee754.fpcommon.test.fpmux import runfp
+from ieee754.fpcommon.test.case_gen import run_pipe_fp
+from ieee754.fpcommon.test import unit_test_half
 from ieee754.fpcommon.fpbase import FPFormat
 
+import unittest
+
 import sfpy
 from sfpy import Float64, Float32, Float16
 
+
 def fclass(wid, x):
     """ analyses the FP number and returns a RISC-V "FCLASS" unary bitfield
 
     return fclass(64, x)
 
 
-def test_class_pipe_f16():
-    dut = FPClassMuxInOut(16, 16, 4, op_wid=1)
-    runfp(dut, 16, "test_fclass_pipe_f16", Float16, fclass_16,
-                True, n_vals=100)
+class TestFClassPipe(unittest.TestCase):
+    def test_class_pipe_f16(self):
+        dut = FPClassMuxInOut(16, 16, 4, op_wid=1)
+        runfp(dut, 16, "test_fclass_pipe_f16", Float16, fclass_16,
+                    True, n_vals=100)
+
+    def test_class_pipe_f32(self):
+        dut = FPClassMuxInOut(32, 32, 4, op_wid=1)
+        runfp(dut, 32, "test_fclass_pipe_f32", Float32, fclass_32,
+                    True, n_vals=100)
+
+    def test_class_pipe_f64(self):
+        dut = FPClassMuxInOut(64, 64, 4, op_wid=1)
+        runfp(dut, 64, "test_fclass_pipe_f64", Float64, fclass_64,
+                    True, n_vals=100)
 
 
-def test_class_pipe_f32():
-    dut = FPClassMuxInOut(32, 32, 4, op_wid=1)
-    runfp(dut, 32, "test_fclass_pipe_f32", Float32, fclass_32,
-                True, n_vals=100)
+class TestFClassPipeCoverage(unittest.TestCase):
+    def test_pipe_class_f16(self):
+        dut = FPClassMuxInOut(16, 16, 4, op_wid=1)
+        run_pipe_fp(dut, 16, "fclass16", unit_test_half, Float16, None,
+                    fclass_16, 100, single_op=True)
 
+    def test_pipe_class_f32(self):
+        dut = FPClassMuxInOut(32, 32, 4, op_wid=1)
+        run_pipe_fp(dut, 32, "fclass32", unit_test_half, Float32, None,
+                    fclass_32, 100, single_op=True)
 
-def test_class_pipe_f64():
-    dut = FPClassMuxInOut(64, 64, 4, op_wid=1)
-    runfp(dut, 64, "test_fclass_pipe_f64", Float64, fclass_64,
-                True, n_vals=100)
+    def test_pipe_class_f64(self):
+        dut = FPClassMuxInOut(64, 64, 4, op_wid=1)
+        run_pipe_fp(dut, 64, "fclass64", unit_test_half, Float64, None,
+                    fclass_64, 100, single_op=True)
 
 
 if __name__ == '__main__':
-    for i in range(200):
-        test_class_pipe_f16()
-        test_class_pipe_f32()
-        test_class_pipe_f64()
+    unittest.main()