VulpesOS/tundra/tests/test_beatles_hardware.py
2026-10-22 20:42:26 +02:00

37 lines
2.3 KiB
Python

# SPDX-License-Identifier: MPL-2.0
import sys,tempfile,unittest
from pathlib import Path
from unittest.mock import patch
sys.path.insert(0,str(Path(__file__).parents[1]/'devices/beatles'))
from hardware_control import HardwareControl
class HardwareTests(unittest.TestCase):
def setUp(self):
self.temp=tempfile.TemporaryDirectory();self.addCleanup(self.temp.cleanup)
self.root=Path(self.temp.name)
for name,value in [('backlight',170),('backlight-max',255),('vibrator',0)]:
(self.root/name).write_text(str(value))
self.hw=HardwareControl(self.root)
def value(self,name):return int((self.root/name).read_text())
def test_brightness_and_restore(self):
self.hw.request({'operation':'screen','enabled':True,'level':.2})
self.assertEqual(self.value('backlight'),51)
self.hw.request({'operation':'screen','enabled':False,'level':.2})
self.assertEqual(self.value('backlight'),0)
self.hw.restore();self.assertEqual(self.value('backlight'),170)
def test_vibration_sequence_cancel_and_shutdown(self):
with patch('hardware_control.time.monotonic',return_value=10) as clock:
self.hw.request({'operation':'vibrate','pattern':[120,80,200]})
self.assertEqual(self.value('vibrator'),120)
clock.return_value=10.13;self.hw.tick();self.assertEqual(self.value('vibrator'),0)
clock.return_value=10.22;self.hw.tick();self.assertEqual(self.value('vibrator'),200)
self.hw.request({'operation':'vibrate','pattern':[]})
self.assertEqual(self.value('vibrator'),0);self.assertFalse(self.hw.pattern)
self.hw.request({'operation':'vibrate','pattern':[200]});self.hw.restore()
self.assertEqual(self.value('vibrator'),0)
def test_invalid_requests_never_write(self):
for request in ({'operation':'vibrate','pattern':[10001]}, {'operation':'vibrate','pattern':[True]},
{'operation':'vibrate','pattern':[5000,5001]}, {'operation':'screen','enabled':True,'level':float('nan')},
{'operation':'screen','enabled':1,'level':.5},{'operation':'shell'},None):
with self.assertRaises(ValueError):self.hw.request(request)
self.assertEqual(self.value('backlight'),170);self.assertEqual(self.value('vibrator'),0)