111 lines
3.3 KiB
Python
111 lines
3.3 KiB
Python
#!/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()
|