67 lines
2.6 KiB
Python
67 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
import unittest
|
|
import cayennelpp
|
|
|
|
|
|
class DecoderTestCase(unittest.TestCase):
|
|
"""Unit tests for Cayenne LPP decoder."""
|
|
|
|
def test_two_temperature_sensors(self):
|
|
result = cayennelpp.lppdecode('A2cBEAVnAP8=')
|
|
self.assertEqual(result,
|
|
[{'channel': 3,
|
|
'type': 'Temperature Sensor',
|
|
'value': 27.2},
|
|
{'channel': 5,
|
|
'type': 'Temperature Sensor',
|
|
'value': 25.5}])
|
|
|
|
def test_temperature_and_acceleration_sensors(self):
|
|
result = cayennelpp.lppdecode('AWf/1wZxBNL7LgAA')
|
|
self.assertEqual(result,
|
|
[{'channel': 1,
|
|
'type': 'Temperature Sensor',
|
|
'value': -4.1},
|
|
{'channel': 6,
|
|
'type': 'Accelerometer',
|
|
'value': {'x': 1.234, 'y': -1.234, 'z': 0.0}}])
|
|
|
|
def test_decode_gps(self):
|
|
result = cayennelpp.lppdecode('AYgGdl/ylgoAA+g=')
|
|
self.assertEqual(result,
|
|
[{'channel': 1,
|
|
'type': 'GPS Location',
|
|
'value': {'lat': 42.3519,
|
|
'lon': -87.9094,
|
|
'alt': 10.0}}])
|
|
|
|
def test_decode_all_previous_tests_combined(self):
|
|
result = cayennelpp.lppdecode(
|
|
'AWcBEAVnAP8CZ//XA3EE0vsuAAAEiAZ2X/KWCgAD6A==')
|
|
self.assertEqual(result,
|
|
[{'channel': 1,
|
|
'type': 'Temperature Sensor',
|
|
'value': 27.2},
|
|
{'channel': 5,
|
|
'type': 'Temperature Sensor',
|
|
'value': 25.5},
|
|
{'channel': 2,
|
|
'type': 'Temperature Sensor',
|
|
'value': -4.1},
|
|
{'channel': 3,
|
|
'type': 'Accelerometer',
|
|
'value': {'x': 1.234, 'y': -1.234, 'z': 0.0}},
|
|
{'channel': 4,
|
|
'type': 'GPS Location',
|
|
'value': {'lat': 42.3519,
|
|
'lon': -87.9094,
|
|
'alt': 10.0}}])
|
|
|
|
def test_decode_unknown_lpp_data_type(self):
|
|
result = cayennelpp.lppdecode('AQQBEA==')
|
|
self.assertEqual(result, None)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|