|
|
@@ -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) |