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()