|
8 | 8 | MODEL_FAN_SA1, |
9 | 9 | MODEL_FAN_V2, |
10 | 10 | MODEL_FAN_V3, |
| 11 | + MODEL_FAN_ZA4, |
11 | 12 | Fan, |
12 | 13 | FanStatus, |
13 | 14 | LedBrightness, |
@@ -737,3 +738,66 @@ def delay_off_countdown(): |
737 | 738 |
|
738 | 739 | with pytest.raises(ValueError): |
739 | 740 | self.device.delay_off(-1) |
| 741 | + |
| 742 | + |
| 743 | +class DummyFanZA4(DummyDevice, Fan): |
| 744 | + def __init__(self, *args, **kwargs): |
| 745 | + self._model = MODEL_FAN_ZA4 |
| 746 | + self.state = { |
| 747 | + "angle": 120, |
| 748 | + "speed": 277, |
| 749 | + "poweroff_time": 0, |
| 750 | + "power": "on", |
| 751 | + "ac_power": "on", |
| 752 | + "angle_enable": "off", |
| 753 | + "speed_level": 1, |
| 754 | + "natural_level": 2, |
| 755 | + "child_lock": "off", |
| 756 | + "buzzer": 0, |
| 757 | + "led_b": 0, |
| 758 | + "use_time": 2318, |
| 759 | + } |
| 760 | + |
| 761 | + self.return_values = { |
| 762 | + "get_prop": self._get_state, |
| 763 | + "set_power": lambda x: self._set_state("power", x), |
| 764 | + "set_speed_level": lambda x: self._set_state("speed_level", x), |
| 765 | + "set_natural_level": lambda x: self._set_state("natural_level", x), |
| 766 | + "set_move": lambda x: True, |
| 767 | + "set_angle": lambda x: self._set_state("angle", x), |
| 768 | + "set_angle_enable": lambda x: self._set_state("angle_enable", x), |
| 769 | + "set_led_b": lambda x: self._set_state("led_b", x), |
| 770 | + "set_buzzer": lambda x: self._set_state("buzzer", x), |
| 771 | + "set_child_lock": lambda x: self._set_state("child_lock", x), |
| 772 | + "set_poweroff_time": lambda x: self._set_state("poweroff_time", x), |
| 773 | + } |
| 774 | + super().__init__(args, kwargs) |
| 775 | + |
| 776 | + |
| 777 | +@pytest.fixture(scope="class") |
| 778 | +def fanza4(request): |
| 779 | + request.cls.device = DummyFanZA4() |
| 780 | + # TODO add ability to test on a real device |
| 781 | + |
| 782 | + |
| 783 | +@pytest.mark.usefixtures("fanza4") |
| 784 | +class TestFanZA4(TestCase): |
| 785 | + def is_on(self): |
| 786 | + return self.device.status().is_on |
| 787 | + |
| 788 | + def state(self): |
| 789 | + return self.device.status() |
| 790 | + |
| 791 | + def test_delay_off(self): |
| 792 | + def delay_off_countdown(): |
| 793 | + return self.device.status().delay_off_countdown |
| 794 | + |
| 795 | + self.device.delay_off(100) |
| 796 | + assert delay_off_countdown() == 100 |
| 797 | + self.device.delay_off(200) |
| 798 | + assert delay_off_countdown() == 200 |
| 799 | + self.device.delay_off(0) |
| 800 | + assert delay_off_countdown() == 0 |
| 801 | + |
| 802 | + with pytest.raises(ValueError): |
| 803 | + self.device.delay_off(-1) |
0 commit comments