From: Bertrand <bco...@us...> - 2017-03-11 12:06:37
|
Update of /cvsroot/jsbsim/JSBSim/tests In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv29910/tests Modified Files: jsbsim.pxd jsbsim.pyx TestLGearSteer.py Log Message: Check that FGLGear::GetSteerNorm does not generate a division by zero for non steerable gears. Index: jsbsim.pxd =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/tests/jsbsim.pxd,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** jsbsim.pxd 25 Feb 2017 14:23:20 -0000 1.4 --- jsbsim.pxd 11 Mar 2017 12:06:34 -0000 1.5 *************** *** 66,69 **** --- 66,79 ---- bool HasNode(string path) + cdef extern from "models/FGGroundReactions.h" namespace "JSBSim": + cdef cppclass c_FGGroundReactions "JSBSim::FGGroundReactions": + c_FGGroundReactions(c_FGFDMExec* fdm) + c_FGLGear* GetGearUnit(int gear) + int GetNumGearUnits() + + cdef extern from "models/FGLGear.h" namespace "JSBSim": + cdef cppclass c_FGLGear "JSBSim::FGLGear": + double GetSteerNorm() + cdef extern from "FGFDMExec.h" namespace "JSBSim": cdef cppclass c_FGFDMExec "JSBSim::FGFDMExec": *************** *** 126,127 **** --- 136,138 ---- c_FGPropagate* GetPropagate() c_FGPropertyManager* GetPropertyManager() + c_FGGroundReactions* GetGroundReactions() Index: jsbsim.pyx =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/tests/jsbsim.pyx,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -r1.13 -r1.14 *** jsbsim.pyx 25 Feb 2017 14:23:20 -0000 1.13 --- jsbsim.pyx 11 Mar 2017 12:06:34 -0000 1.14 *************** *** 88,91 **** --- 88,116 ---- return self.thisptr.HasNode(path) + cdef class FGGroundReactions: + + cdef c_FGGroundReactions *thisptr + + def __init__(self): + self.thisptr = NULL + + def get_gear_unit(self, gear): + lgear = FGLGear() + lgear.thisptr = self.thisptr.GetGearUnit(gear) + return lgear + + def get_num_gear_units(self): + return self.thisptr.GetNumGearUnits() + + cdef class FGLGear: + + cdef c_FGLGear *thisptr + + def __init__(self): + self.thisptr = NULL + + def get_steer_norm(self): + return self.thisptr.GetSteerNorm() + # this is the python wrapper class cdef class FGFDMExec: *************** *** 564,565 **** --- 589,595 ---- pm.thisptr = self.thisptr.GetPropertyManager() return pm + + def get_ground_reactions(self): + grndreact = FGGroundReactions() + grndreact.thisptr = self.thisptr.GetGroundReactions() + return grndreact Index: TestLGearSteer.py =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/tests/TestLGearSteer.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** TestLGearSteer.py 16 May 2016 17:29:46 -0000 1.1 --- TestLGearSteer.py 11 Mar 2017 12:06:34 -0000 1.2 *************** *** 20,23 **** --- 20,24 ---- import os + import fpectl import xml.etree.ElementTree as et from JSBSim_utils import JSBSimTestCase, CreateFDM, RunTest, CopyAircraftDef *************** *** 33,36 **** --- 34,48 ---- self.assertAlmostEqual(fdm['fcs/steer-cmd-norm'], 0.0) self.assertAlmostEqual(fdm['fcs/steer-pos-deg'], 0.0) + + # Should be part of a unit test in C++ ? + fpectl.turnon_sigfpe() + + grndreact = fdm.get_ground_reactions() + for i in xrange(grndreact.get_num_gear_units()): + gear = grndreact.get_gear_unit(i) + self.assertEqual(gear.get_steer_norm(), 0.0) + + fpectl.turnoff_sigfpe() + fdm['fcs/steer-pos-deg'] = 5.0 self.assertAlmostEqual(fdm['fcs/steer-pos-deg'], 5.0) |