12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- from itertools import groupby
- import unittest
- import sys
- sys.path.append("..")
- from src.protocol import LumiaxClient
- class TestParser(unittest.TestCase):
- def setUp(self):
- self.parser = LumiaxClient()
- def test_includes_names(self):
- names = [
- "equipment_id",
- "run_days",
- "solar_panel_is_charging",
- "solar_panel_is_night",
- "solar_panel_charge_state",
- "load_is_enabled",
- "load_state",
- "battery_empty_times",
- "battery_full_times",
- "battery_percentage",
- "battery_voltage",
- "battery_current",
- "battery_power",
- "load_voltage",
- "load_current",
- "load_power",
- "solar_panel_voltage",
- "solar_panel_current",
- "solar_panel_power",
- "solar_panel_daily_energy",
- "solar_panel_total_energy",
- "load_daily_energy",
- "load_total_energy",
- ]
- for name in names:
- self.assertIn(name, [v.name for v in self.parser.variables], f"variable {name} doesn't exist anymore")
- def test_excludes_names(self):
- bad_names = [
- "battery_full_level",
- "battery_state_1",
- "battery_state_2",
- "solar_panel_state",
- "temperature_1",
- "temperature_2",
- ]
- for name in bad_names:
- self.assertNotIn(name, [v.name for v in self.parser.variables], f"variable {name} still exists")
- def test_multiplier_func_exclusion(self):
- for variable in self.parser.variables:
- if variable.multiplier:
- self.assertIsNone(variable.func)
- def test_func_32_bit_exclusion(self):
- for variable in self.parser.variables:
- if variable.is_32_bit:
- self.assertIsNone(variable.func)
- def test_common_lengths(self):
- for key, group in groupby(self.parser.variables, lambda x: x.address):
- is_32_bit = next(group).is_32_bit
- for variable in group:
- self.assertEqual(variable.is_32_bit, is_32_bit)
- if __name__ == "__main__":
- unittest.main()
|