| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import os
- import sys
- import unittest
- from pathlib import Path
- os.environ.setdefault('QT_QPA_PLATFORM', 'offscreen')
- sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
- from PyQt6.QtWidgets import QApplication
- from app import Monitor
- from generated import vkfly
- app = QApplication.instance() or QApplication([])
- class PowerDisplayTest(unittest.TestCase):
- def setUp(self):
- self.monitor = Monitor()
- self.writer = vkfly.MAVLink(None, srcSystem=1, srcComponent=1)
- def tearDown(self):
- self.monitor.close()
- def deliver(self, message):
- reader = vkfly.MAVLink(None)
- decoded = None
- for byte in message.pack(self.writer):
- result = reader.parse_char(bytes([byte]))
- if result is not None:
- decoded = result
- self.assertIsNotNone(decoded)
- self.monitor.receive(decoded)
- return self.monitor.labels['power'].text()
- def test_sys_status_uses_centivolts(self):
- msg = self.writer.sys_status_encode(0, 0, 0, 0, 2400, 0, 75, 0, 0, 0, 0, 0, 0)
- self.assertEqual(self.deliver(msg), '24.0 V · 剩余 75%')
- def test_sys_status_unknown_voltage_and_remaining(self):
- msg = self.writer.sys_status_encode(0, 0, 0, 0, 65535, 0, -1, 0, 0, 0, 0, 0, 0)
- self.assertEqual(self.deliver(msg), '未知 · 剩余 未知')
- def test_bms_uses_millivolts(self):
- msg = self.writer.vk_bms_status_encode(0, 24000, 0, 0, 80, 1, 0, 0, [0] * 30, 0, 0)
- self.assertEqual(self.deliver(msg), '24.0 V · 剩余 80% · 电池 1')
- if __name__ == '__main__':
- unittest.main()
|