Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > f3bf124bbdbce9745f5e9060c84e1e2d > files > 2

pyode-1.2.0-6.fc18.src.rpm

--- ../PyODE-snapshot-2010-03-22.orig/tests/test_xode.py	2013-04-25 22:19:59.586137088 +1000
+++ tests/test_xode.py	2013-04-26 13:09:52.935507096 +1000
@@ -290,6 +290,28 @@
 class Class2:
     pass
 
+def assertFloatListsAlmostEqual(self, item1, item2, msg=None):
+    """
+    Test lists or tuples of floats with assertAlmostEqual
+    """
+
+    # be sure we're comparing apples to apples
+    if type(item1) is not type(item2):
+        raise self.failureException(
+            "detected differing types")
+
+    # test floats
+    if isinstance(item1,float):
+        self.assertAlmostEqual(item1, item2, msg=msg, places=5)
+    elif isinstance(item1,list) or isinstance(item1,tuple):
+        # recurse over list
+        for i in range(0,len(item1)):
+            self.assertFloatListsAlmostEqual(item1[i], item2[i], msg=msg)
+    else:
+        # default, probably unnecessary
+        self.assertEqual(item1, item2, msg=msg)
+
+
 class TestTreeNode(unittest.TestCase):
 
     def setUp(self):
@@ -504,6 +526,8 @@
         self.joint9 = self.root.namedChild('joint9').getODEObject()
         self.joint10 = self.root.namedChild('joint10').getODEObject()
 
+    assertFloatListsAlmostEqual = assertFloatListsAlmostEqual
+
     def testBallInstance(self):
         self.assert_(isinstance(self.joint1, ode.BallJoint))
 
@@ -531,13 +555,13 @@
         self.assert_(isinstance(self.joint5, ode.HingeJoint))
 
     def testHingeAxis(self):
-        self.assertEqual(self.joint5.getAxis(), (1.0, 0.0, 0.0))
+        self.assertFloatListsAlmostEqual(self.joint5.getAxis(), (1.0, 0.0, 0.0))
 
     def testSliderInstance(self):
         self.assert_(isinstance(self.joint6, ode.SliderJoint))
 
     def testSliderAxis(self):
-        self.assertEqual(self.joint6.getAxis(), (0.0, 1.0, 0.0))
+        self.assertFloatListsAlmostEqual(self.joint6.getAxis(), (0.0, 1.0, 0.0))
 
     def testUniversalInstance(self):
         self.assert_(isinstance(self.joint7, ode.UniversalJoint))
@@ -585,13 +609,13 @@
     def testAMotorAxes1(self):
         ref = (0.0, 1.0, 0.0)
         axis1 = self.joint9.getAxis(0)
-        self.assertEqual(ref, axis1)
+        self.assertFloatListsAlmostEqual(ref, axis1)
 
     def testAMotorAxes3(self):
         ref = [(1.0, 0.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0)]
         axes = [self.joint10.getAxis(0), self.joint10.getAxis(1),
                 self.joint10.getAxis(2)]
-        self.assertEqual(ref, axes)
+        self.assertFloatListsAlmostEqual(ref, axes)
 
     def testAxisParamLoStop(self):
         self.assertEqualf(self.joint6.getParam(ode.paramLoStop), 1.0)
@@ -643,6 +667,8 @@
         self.body1 = self.root.namedChild('body1').getODEObject()
         self.space1 = self.root.namedChild('space1').getODEObject()
 
+    assertFloatListsAlmostEqual = assertFloatListsAlmostEqual
+
     def testSpaceAncestor(self):
         self.assertEqual(self.geom1.getSpace(), self.space1)
 
@@ -671,7 +697,8 @@
         self.assert_(isinstance(self.geom4, ode.GeomPlane))
 
     def testPlaneParams(self):
-        self.assertEqual(self.geom4.getParams(), ((0.0, 1.0, 0.0), 17.0))
+        self.assertFloatListsAlmostEqual(self.geom4.getParams(),((0.0, 1.0,
+                                                                  0.0), 17.0))
 
     def testRayInstance(self):
         self.assert_(isinstance(self.geom3, ode.GeomRay))