37 lines
2.3 KiB
Python
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)
|