Files
github-actions[bot] c7a5707c52 sunnypilot v2026.003.000 release
date: 2026-08-21T09:44:14
master commit: 5ad2bfdb75
2026-08-21 09:44:15 +00:00

48 lines
1.5 KiB
Python

from openpilot.common.parameterized import parameterized
from openpilot.common.test import OpenpilotTestCase
from openpilot.system.hardware.fan_controller import FanController
ALL_CONTROLLERS = [FanController]
class TestFanController(OpenpilotTestCase):
def wind_up(self, controller, ignition=True):
for _ in range(1000):
controller.update(100, ignition)
def wind_down(self, controller, ignition=False):
for _ in range(1000):
controller.update(10, ignition)
@parameterized.expand(ALL_CONTROLLERS)
def test_hot_onroad(self, controller_class):
controller = controller_class(2)
self.wind_up(controller)
assert controller.update(100, True) >= 70
@parameterized.expand(ALL_CONTROLLERS)
def test_offroad_limits(self, controller_class):
controller = controller_class(2)
self.wind_up(controller)
assert controller.update(100, False) <= 30
@parameterized.expand(ALL_CONTROLLERS)
def test_no_fan_wear(self, controller_class):
controller = controller_class(2)
self.wind_down(controller)
assert controller.update(10, False) == 0
@parameterized.expand(ALL_CONTROLLERS)
def test_limited(self, controller_class):
controller = controller_class(2)
self.wind_up(controller, True)
assert controller.update(100, True) == 100
@parameterized.expand(ALL_CONTROLLERS)
def test_windup_speed(self, controller_class):
controller = controller_class(2)
self.wind_down(controller, True)
for _ in range(10):
controller.update(90, True)
assert controller.update(90, True) >= 60