--- ../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))