def test_zone_timeout_restore(self): panel_messages = [ '[0000000000000010----],001,[f707000600e5800c0c020000],"FAULT 1 "', '[0000000000000010----],004,[f707000600e5800c0c020000],"FAULT 4 "', '[0000000000000010----],002,[f707000600e5800c0c020000],"FAULT 2 "', '[0000000000000010----],004,[f707000600e5800c0c020000],"FAULT 4 "', '[0000000000000010----],004,[f707000600e5800c0c020000],"FAULT 4 "', ] for m in panel_messages: msg = Message(m) self._zonetracker.update(msg) self.assertIn(4, self._zonetracker._zones_faulted) self._zonetracker._zones[ 4].timestamp -= 35 # forcefully expire the zone # generic message to force an update. msg = Message( '[0000000000000000----],000,[f707000600e5800c0c020000]," "' ) self._zonetracker.update(msg) self.assertNotIn(4, self._zonetracker._zones_faulted)
def test_message_ready(self): msg = Message('[0000000000000010----],001,[f707000600e5800c0c020000]," "') self._zonetracker.update(msg) self.assertEqual(len(self._zonetracker._zones_faulted), 1) msg = Message('[1000000000000000----],000,[f707000600e5800c0c020000]," "') self._zonetracker.update(msg) self.assertEqual(len(self._zonetracker._zones_faulted), 0)
def test_ECP_failure(self): msg = Message( '[0000000000000010----],0bf,[f707000600e5800c0c020000],"CHECK 1 "' ) self._zonetracker.update(msg) self.assertEquals(self._zonetracker._zones['1'].status, Zone.CHECK)
def test_message_fault_text(self): msg = Message( '[0000000000000000----],001,[f707000600e5800c0c020000],"FAULT 1 "' ) self._zonetracker.update(msg) self.assertEquals(len(self._zonetracker._zones_faulted), 1)
def test_message_parse(self): msg = Message( '[00000000000000000A--],001,[f707000600e5800c0c020000],"FAULT 1 "' ) self.assertFalse(msg.ready) self.assertFalse(msg.armed_away) self.assertFalse(msg.armed_home) self.assertFalse(msg.backlight_on) self.assertFalse(msg.programming_mode) self.assertEqual(msg.beeps, 0) self.assertFalse(msg.zone_bypassed) self.assertFalse(msg.ac_power) self.assertFalse(msg.chime_on) self.assertFalse(msg.alarm_event_occurred) self.assertFalse(msg.alarm_sounding) self.assertFalse(msg.battery_low) self.assertFalse(msg.entry_delay_off) self.assertFalse(msg.fire_alarm) self.assertFalse(msg.check_zone) self.assertFalse(msg.perimeter_only) self.assertFalse(msg.system_fault) self.assertFalse(msg.panel_type, ADEMCO) self.assertEqual(msg.numeric_code, '001') self.assertEqual(msg.mask, int('07000600', 16)) self.assertEqual(msg.cursor_location, -1) self.assertEqual(msg.text, 'FAULT 1 ')
def test_zone_restore_skip(self): panel_messages = [ '[0000000000000000----],001,[f707000600e5800c0c020000],"FAULT 1 "', '[0000000000000000----],002,[f707000600e5800c0c020000],"FAULT 2 "', '[0000000000000000----],001,[f707000600e5800c0c020000],"FAULT 1 "', '[0000000000000000----],001,[f707000600e5800c0c020000],"FAULT 1 "' ] for m in panel_messages: msg = Message(m) self._zonetracker.update(msg) self.assertIn(1, self._zonetracker._zones_faulted) self.assertNotIn(2, self._zonetracker._zones_faulted)
def test_zone_out_of_order_fault(self): panel_messages = [ '[0000000000000010----],001,[f707000600e5800c0c020000],"FAULT 1 "', '[0000000000000010----],004,[f707000600e5800c0c020000],"FAULT 4 "', '[0000000000000010----],003,[f707000600e5800c0c020000],"FAULT 3 "', '[0000000000000010----],004,[f707000600e5800c0c020000],"FAULT 4 "', ] for m in panel_messages: msg = Message(m) self._zonetracker.update(msg) self.assertIn(1, self._zonetracker._zones_faulted) self.assertIn(3, self._zonetracker._zones_faulted) self.assertIn(4, self._zonetracker._zones_faulted)
def test_message_parse_fail(self): with self.assertRaises(InvalidMessageError): msg = Message('')
def test_message_parse(self): msg = Message( '[0000000000000000----],001,[f707000600e5800c0c020000],"FAULT 1 "' ) self.assertEquals(msg.numeric_code, '001')