test_power.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import os
  2. import sys
  3. import unittest
  4. from pathlib import Path
  5. os.environ.setdefault('QT_QPA_PLATFORM', 'offscreen')
  6. sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
  7. from PyQt6.QtWidgets import QApplication
  8. from app import Monitor
  9. from generated import vkfly
  10. app = QApplication.instance() or QApplication([])
  11. class PowerDisplayTest(unittest.TestCase):
  12. def setUp(self):
  13. self.monitor = Monitor()
  14. self.writer = vkfly.MAVLink(None, srcSystem=1, srcComponent=1)
  15. def tearDown(self):
  16. self.monitor.close()
  17. def deliver(self, message):
  18. reader = vkfly.MAVLink(None)
  19. decoded = None
  20. for byte in message.pack(self.writer):
  21. result = reader.parse_char(bytes([byte]))
  22. if result is not None:
  23. decoded = result
  24. self.assertIsNotNone(decoded)
  25. self.monitor.receive(decoded)
  26. return self.monitor.labels['power'].text()
  27. def test_sys_status_uses_centivolts(self):
  28. msg = self.writer.sys_status_encode(0, 0, 0, 0, 2400, 0, 75, 0, 0, 0, 0, 0, 0)
  29. self.assertEqual(self.deliver(msg), '24.0 V · 剩余 75%')
  30. def test_sys_status_unknown_voltage_and_remaining(self):
  31. msg = self.writer.sys_status_encode(0, 0, 0, 0, 65535, 0, -1, 0, 0, 0, 0, 0, 0)
  32. self.assertEqual(self.deliver(msg), '未知 · 剩余 未知')
  33. def test_bms_uses_millivolts(self):
  34. msg = self.writer.vk_bms_status_encode(0, 24000, 0, 0, 80, 1, 0, 0, [0] * 30, 0, 0)
  35. self.assertEqual(self.deliver(msg), '24.0 V · 剩余 80% · 电池 1')
  36. if __name__ == '__main__':
  37. unittest.main()