diff --git a/test/test_ad2.py b/test/test_ad2.py index 53b99c6..a4771f5 100644 --- a/test/test_ad2.py +++ b/test/test_ad2.py @@ -24,6 +24,12 @@ class TestAlarmDecoder(TestCase): self._message_received = False self._rfx_message_received = False self._lrr_message_received = False + self._expander_message_received = False + self._sending_received_status = None + self._alarm_restored = False + self._on_boot_received = False + self._zone_faulted = None + self._zone_restored = None self._device = Mock(spec=USBDevice) self._device.on_open = EventHandler(Event(), self._device) @@ -32,15 +38,11 @@ class TestAlarmDecoder(TestCase): self._device.on_write = EventHandler(Event(), self._device) self._decoder = AlarmDecoder(self._device) - - self._decoder._zonetracker = Mock(spec=Zonetracker) - self._decoder._zonetracker.on_fault = EventHandler(Event(), self._decoder._zonetracker) - self._decoder._zonetracker.on_restore = EventHandler(Event(), self._decoder._zonetracker) - self._decoder.on_panic += self.on_panic self._decoder.on_relay_changed += self.on_relay_changed self._decoder.on_power_changed += self.on_power_changed self._decoder.on_alarm += self.on_alarm + self._decoder.on_alarm_restored += self.on_alarm_restored self._decoder.on_bypass += self.on_bypass self._decoder.on_low_battery += self.on_battery self._decoder.on_fire += self.on_fire @@ -50,6 +52,11 @@ class TestAlarmDecoder(TestCase): self._decoder.on_message += self.on_message self._decoder.on_rfx_message += self.on_rfx_message self._decoder.on_lrr_message += self.on_lrr_message + self._decoder.on_expander_message += self.on_expander_message + self._decoder.on_sending_received += self.on_sending_received + self._decoder.on_boot += self.on_boot + self._decoder.on_zone_fault += self.on_zone_fault + self._decoder.on_zone_restore += self.on_zone_restore self._decoder.address_mask = int('ffffffff', 16) self._decoder.open() @@ -67,7 +74,10 @@ class TestAlarmDecoder(TestCase): self._power_changed = kwargs['status'] def on_alarm(self, sender, *args, **kwargs): - self._alarmed = kwargs['status'] + self._alarmed = True + + def on_alarm_restored(self, sender, *args, **kwargs): + self._alarm_restored = True def on_bypass(self, sender, *args, **kwargs): self._bypassed = kwargs['status'] @@ -96,6 +106,21 @@ class TestAlarmDecoder(TestCase): def on_lrr_message(self, sender, *args, **kwargs): self._lrr_message_received = True + def on_expander_message(self, sender, *args, **kwargs): + self._expander_message_received = True + + def on_sending_received(self, sender, *args, **kwargs): + self._sending_received_status = kwargs['status'] + + def on_boot(self, sender, *args, **kwargs): + self._on_boot_received = True + + def on_zone_fault(self, sender, *args, **kwargs): + self._zone_faulted = kwargs['zone'] + + def on_zone_restore(self, sender, *args, **kwargs): + self._zone_restored = kwargs['zone'] + def test_open(self): self._decoder.open() self._device.open.assert_any_calls() @@ -141,7 +166,7 @@ class TestAlarmDecoder(TestCase): self._decoder._on_read(self, data='[0000000000000000----],000,[f707000600e5800c0c020000]," "') self.assertTrue(self._message_received) - def test_message_kpe(self): + def test_message_kpm(self): msg = self._decoder._handle_message('!KPM:[0000000000000000----],000,[f707000600e5800c0c020000]," "') self.assertIsInstance(msg, Message) @@ -152,6 +177,9 @@ class TestAlarmDecoder(TestCase): msg = self._decoder._handle_message('!EXP:07,01,01') self.assertIsInstance(msg, ExpanderMessage) + self._decoder._on_read(self, data='!EXP:07,01,01') + self.assertTrue(self._expander_message_received) + def test_relay_message(self): self._decoder.open() msg = self._decoder._handle_message('!REL:12,01,01') @@ -203,6 +231,7 @@ class TestAlarmDecoder(TestCase): msg = self._decoder._handle_message('[0000000000000000----],000,[f707000600e5800c0c020000]," "') self.assertEquals(self._alarmed, False) + self.assertEquals(self._alarm_restored, True) msg = self._decoder._handle_message('[0000000000100000----],000,[f707000600e5800c0c020000]," "') self.assertEquals(self._alarmed, True) @@ -261,6 +290,26 @@ class TestAlarmDecoder(TestCase): self._decoder._device.write.assert_called_with('*') - def test_zonetracker_update(self): - msg = self._decoder._handle_message('[0000000000000000----],000,[f707000600e5800c0c020000]," "') - self._decoder._zonetracker.update.assert_called_with(msg) + def test_sending_received(self): + self._decoder._on_read(self, data='!Sending.done') + self.assertTrue(self._sending_received_status) + + self._decoder._on_read(self, data='!Sending.....done') + self.assertFalse(self._sending_received_status) + + def test_boot(self): + self._decoder._on_read(self, data='!Ready') + self.assertTrue(self._on_boot_received) + + def test_zone_fault_and_restore(self): + self._decoder._on_read(self, data='[00010001000000000A--],003,[f70000051003000008020000000000],"FAULT 03 "') + self.assertEquals(self._zone_faulted, 3) + + self._decoder._on_read(self, data='[00010001000000000A--],004,[f70000051003000008020000000000],"FAULT 04 "') + self.assertEquals(self._zone_faulted, 4) + + self._decoder._on_read(self, data='[00010001000000000A--],005,[f70000051003000008020000000000],"FAULT 05 "') + self.assertEquals(self._zone_faulted, 5) + + self._decoder._on_read(self, data='[00010001000000000A--],004,[f70000051003000008020000000000],"FAULT 04 "') + self.assertEquals(self._zone_restored, 3)