#!/usr/bin/env python """ Unit tests for the fgFDM library """ from __future__ import print_function import unittest from pymavlink.fgFDM import fgFDMError, fgFDMVariable, fgFDMVariableList, fgFDM class fgFDMErrorTest(unittest.TestCase): """ Class to test fgFDMError """ def __init__(self, *args, **kwargs): """Constructor, set up some data that is reused in many tests""" super(fgFDMErrorTest, self).__init__(*args, **kwargs) def test_constructor(self): ex = fgFDMError("Test Exception {0}".format(1)) assert ex.message == "fgFDMError: Test Exception 1" class fgFDMVariableTest(unittest.TestCase): """ Class to test fgFDMVariable """ def __init__(self, *args, **kwargs): """Constructor, set up some data that is reused in many tests""" super(fgFDMVariableTest, self).__init__(*args, **kwargs) def test_constructor(self): """Test the constructor""" varry = fgFDMVariable(0, 3, 'radians') assert varry.index == 0 assert varry.arraylength == 3 assert varry.units == 'radians' class fgFDMVariableListTest(unittest.TestCase): """ Class to test fgFDMVariableList """ def __init__(self, *args, **kwargs): """Constructor, set up some data that is reused in many tests""" super(fgFDMVariableListTest, self).__init__(*args, **kwargs) def test_constructor(self): """Test the constructor and adding variables""" mapping = fgFDMVariableList() mapping.add('longitude', units='radians') mapping.add('stall_warning') mapping.add('rpm', 4) assert mapping._nextidx == 6 assert mapping.vars['longitude'].index == 0 assert mapping.vars['longitude'].units == 'radians' assert mapping.vars['rpm'].index == 2 assert mapping.vars['rpm'].units is None class fgFDMTest(unittest.TestCase): """ Class to test fgFDM """ def __init__(self, *args, **kwargs): """Constructor, set up some data that is reused in many tests""" super(fgFDMTest, self).__init__(*args, **kwargs) def test_constructor(self): """Test the constructor""" fdm = fgFDM() assert fdm.FG_NET_FDM_VERSION == 24 def test_getset(self): """Test the getting and setting and unit conversion of variables""" fdm = fgFDM() fdm.set('latitude', 67.4, units='degrees') fdm.set('longitude', 120.6, units='degrees') fdm.set('num_engines', 1) fdm.set('vcas', 44, units='mps') assert fdm.get('latitude', units='degrees') == 67.4 assert round(fdm.get('vcas', units='knots'), 2) == 85.53 def test_packparse(self): """Test the packing and parsing of an fgFDM packet""" fdm = fgFDM() fdm.set('latitude', 67.4, units='degrees') fdm.set('longitude', 120.6, units='degrees') fdm.set('num_engines', 1) fdm.set('vcas', 44, units='mps') packedBytes = fdm.pack() parsedObj = fgFDM() parsedObj.parse(packedBytes) assert parsedObj.get('latitude', units='degrees') == 67.4 assert round(parsedObj.get('vcas', units='knots'), 2) == 85.53 if __name__ == '__main__': unittest.main()