예제 #1
0
 def test_address_combined(self):
     """Test AddressFilter with complex filters."""
     af1 = AddressFilter("2-/2,3,5-/*")
     self.assertTrue(af1.match("2/3/8"))
     self.assertTrue(af1.match("4/7/10"))
     self.assertTrue(af1.match("2/7/10"))
     self.assertFalse(af1.match("1/7/10"))
     self.assertFalse(af1.match("2/4/10"))
     self.assertFalse(af1.match("2/1/10"))
예제 #2
0
 def test_address_filter_level3_1(self):
     """Test AddressFilter 1st part of level3 addresses."""
     af1 = AddressFilter("4/2/3")
     self.assertTrue(af1.match("4/2/3"))
     self.assertFalse(af1.match("2/2/3"))
     self.assertFalse(af1.match("10/2/3"))
     af2 = AddressFilter("2-/4/3")
     self.assertFalse(af2.match("1/4/3"))
     self.assertTrue(af2.match("2/4/3"))
     self.assertTrue(af2.match("10/4/3"))
     af3 = AddressFilter("*/5/5")
     self.assertTrue(af3.match("2/5/5"))
     self.assertTrue(af3.match("8/5/5"))
예제 #3
0
 def test_address_filter_level3_3(self):
     """Test AddressFilter 3rd part of level3 addresses."""
     af1 = AddressFilter("1/2/3")
     self.assertTrue(af1.match("1/2/3"))
     self.assertFalse(af1.match("1/2/4"))
     self.assertFalse(af1.match("1/2/1"))
     af2 = AddressFilter("1/2/2-3,5-")
     self.assertFalse(af2.match("1/2/1"))
     self.assertTrue(af2.match("1/2/3"))
     self.assertFalse(af2.match("1/2/4"))
     self.assertTrue(af2.match("1/2/6"))
     af3 = AddressFilter("1/2/*")
     self.assertTrue(af3.match("1/2/3"))
     self.assertTrue(af3.match("1/2/5"))
예제 #4
0
 def test_address_filter_level2_2(self):
     """Test AddressFilter 2nd part of level2 addresses."""
     af1 = AddressFilter("2/3")
     self.assertTrue(af1.match("2/3"))
     self.assertFalse(af1.match("2/4"))
     self.assertFalse(af1.match("2/1"))
     af2 = AddressFilter("2/3-4,7-")
     self.assertFalse(af2.match("2/2"))
     self.assertTrue(af2.match("2/3"))
     self.assertFalse(af2.match("2/6"))
     self.assertTrue(af2.match("2/8"))
     af3 = AddressFilter("2/*")
     self.assertTrue(af3.match("2/3"))
     self.assertTrue(af3.match("2/5"))
예제 #5
0
파일: knx.py 프로젝트: gbeine/knx2mqtt
	def __init__(self, config):
		self._config = config
		self._address_filters = list()
		self._subscription_filters = list()
		for sensor in self._config['sensors']:
			if not ('expose' in sensor and sensor['expose']):
				self._address_filters.append(AddressFilter(sensor['address']))
			if ('expose' in sensor and sensor['expose']) or ('subscribe' in sensor and sensor['subscribe']):
				self._subscription_filters.append(sensor['address'])
		for switch in self._config['switches']:
			if not ('expose' in switch and switch['expose']):
				self._address_filters.append(AddressFilter(switch['address']))
			if ('expose' in switch and switch['expose']) or ('subscribe' in switch and switch['subscribe']):
				self._subscription_filters.append(switch['address'])
예제 #6
0
 def test_range_test(self):
     """Test matching within AddressFilter.Range."""
     rf = AddressFilter.Range("2-16")
     self.assertTrue(rf.match(10))
     self.assertTrue(rf.match(2))
     self.assertTrue(rf.match(16))
     self.assertFalse(rf.match(1))
     self.assertFalse(rf.match(17))
예제 #7
0
 def test_range_initialization(self):
     """Test Initialization of AddresFilter.Range."""
     self.assertEqual(AddressFilter.Range("*").get_range(), (0, 65535))
     self.assertEqual(AddressFilter.Range("5").get_range(), (5, 5))
     self.assertEqual(AddressFilter.Range("0").get_range(), (0, 0))
     self.assertEqual(AddressFilter.Range("3-5").get_range(), (3, 5))
     self.assertEqual(AddressFilter.Range("5-3").get_range(), (3, 5))
     self.assertEqual(AddressFilter.Range("-5").get_range(), (0, 5))
     self.assertEqual(AddressFilter.Range("5-").get_range(), (5, 65535))
     self.assertEqual(AddressFilter.Range("70-100").get_range(), (70, 100))
예제 #8
0
 def test_level_filter_test(self):
     """Test matching within AddressFilter.LevelFilter."""
     lf = AddressFilter.LevelFilter("2,4,8-10,13")
     self.assertFalse(lf.match(1))
     self.assertTrue(lf.match(2))
     self.assertFalse(lf.match(3))
     self.assertTrue(lf.match(4))
     self.assertFalse(lf.match(5))
     self.assertTrue(lf.match(9))
예제 #9
0
 def test_address_filter_level3_2(self):
     """Test AddressFilter 2nd part of level3 addresses."""
     af1 = AddressFilter("1/2/3")
     self.assertTrue(af1.match("1/2/3"))
     self.assertFalse(af1.match("1/3/3"))
     self.assertFalse(af1.match("1/1/3"))
     af2 = AddressFilter("1/2-/3")
     self.assertFalse(af2.match("1/1/3"))
     self.assertTrue(af2.match("1/2/3"))
     self.assertTrue(af2.match("1/5/3"))
     af3 = AddressFilter("1/*/3")
     self.assertTrue(af3.match("1/4/3"))
     self.assertTrue(af3.match("1/7/3"))
예제 #10
0
    def test_negative_filters(self):
        """Test telegram_received_callback after state of switch was changed."""
        # pylint: disable=no-self-use
        xknx = XKNX(loop=self.loop)

        telegram_received_callback = Mock()

        async def async_telegram_received_cb(device):
            """Async callback."""
            telegram_received_callback(device)
        xknx.telegram_queue.register_telegram_received_cb(
            async_telegram_received_cb,
            [AddressFilter("2/4-8/*"), AddressFilter("1/2/8-")])

        telegram = Telegram(
            direction=TelegramDirection.INCOMING,
            payload=DPTBinary(1),
            group_address=GroupAddress("1/2/3"))
        self.loop.run_until_complete(asyncio.Task(
            xknx.telegram_queue.process_telegram(telegram)))
        telegram_received_callback.assert_not_called()
예제 #11
0
 def test_address_combined(self):
     """Test AddressFilter with complex filters."""
     af1 = AddressFilter("2-/2,3,5-/*")
     self.assertTrue(af1.match("2/3/8"))
     self.assertTrue(af1.match("4/7/10"))
     self.assertTrue(af1.match("2/7/10"))
     self.assertFalse(af1.match("1/7/10"))
     self.assertFalse(af1.match("2/4/10"))
     self.assertFalse(af1.match("2/1/10"))
예제 #12
0
 def test_address_filter_free(self):
     """Test AddressFilter free format addresses."""
     af1 = AddressFilter("4")
     self.assertTrue(af1.match("4"))
     self.assertFalse(af1.match("1"))
     self.assertFalse(af1.match("10"))
     af2 = AddressFilter("1,4,7-")
     self.assertTrue(af2.match("1"))
     self.assertFalse(af2.match("2"))
     self.assertTrue(af2.match("4"))
     self.assertFalse(af2.match("6"))
     self.assertTrue(af2.match("60"))
     af3 = AddressFilter("*")
     self.assertTrue(af3.match("2"))
     self.assertTrue(af3.match("8"))
예제 #13
0
 def test_address_filter_level2_2(self):
     """Test AddressFilter 2nd part of level2 addresses."""
     af1 = AddressFilter("2/3")
     self.assertTrue(af1.match("2/3"))
     self.assertFalse(af1.match("2/4"))
     self.assertFalse(af1.match("2/1"))
     af2 = AddressFilter("2/3-4,7-")
     self.assertFalse(af2.match("2/2"))
     self.assertTrue(af2.match("2/3"))
     self.assertFalse(af2.match("2/6"))
     self.assertTrue(af2.match("2/8"))
     af3 = AddressFilter("2/*")
     self.assertTrue(af3.match("2/3"))
     self.assertTrue(af3.match("2/5"))
예제 #14
0
 def test_address_filter_level3_2(self):
     """Test AddressFilter 2nd part of level3 addresses."""
     af1 = AddressFilter("1/2/3")
     self.assertTrue(af1.match("1/2/3"))
     self.assertFalse(af1.match("1/3/3"))
     self.assertFalse(af1.match("1/1/3"))
     af2 = AddressFilter("1/2-/3")
     self.assertFalse(af2.match("1/1/3"))
     self.assertTrue(af2.match("1/2/3"))
     self.assertTrue(af2.match("1/5/3"))
     af3 = AddressFilter("1/*/3")
     self.assertTrue(af3.match("1/4/3"))
     self.assertTrue(af3.match("1/7/3"))
예제 #15
0
 def test_address_filter_level3_3(self):
     """Test AddressFilter 3rd part of level3 addresses."""
     af1 = AddressFilter("1/2/3")
     self.assertTrue(af1.match("1/2/3"))
     self.assertFalse(af1.match("1/2/4"))
     self.assertFalse(af1.match("1/2/1"))
     af2 = AddressFilter("1/2/2-3,5-")
     self.assertFalse(af2.match("1/2/1"))
     self.assertTrue(af2.match("1/2/3"))
     self.assertFalse(af2.match("1/2/4"))
     self.assertTrue(af2.match("1/2/6"))
     af3 = AddressFilter("1/2/*")
     self.assertTrue(af3.match("1/2/3"))
     self.assertTrue(af3.match("1/2/5"))
예제 #16
0
 def test_address_filter_free(self):
     """Test AddressFilter free format addresses."""
     af1 = AddressFilter("4")
     self.assertTrue(af1.match("4"))
     self.assertFalse(af1.match("1"))
     self.assertFalse(af1.match("10"))
     af2 = AddressFilter("1,4,7-")
     self.assertTrue(af2.match("1"))
     self.assertFalse(af2.match("2"))
     self.assertTrue(af2.match("4"))
     self.assertFalse(af2.match("6"))
     self.assertTrue(af2.match("60"))
     af3 = AddressFilter("*")
     self.assertTrue(af3.match("2"))
     self.assertTrue(af3.match("8"))
예제 #17
0
 def test_address_filter_level2_1(self):
     """Test AddressFilter 1st part of level2 addresses."""
     af1 = AddressFilter("4/2")
     self.assertTrue(af1.match("4/2"))
     self.assertFalse(af1.match("2/2"))
     self.assertFalse(af1.match("10/2"))
     af2 = AddressFilter("2-3,8-/4")
     self.assertFalse(af2.match("1/4"))
     self.assertTrue(af2.match("2/4"))
     self.assertFalse(af2.match("7/4"))
     self.assertTrue(af2.match("10/4"))
     af3 = AddressFilter("*/5")
     self.assertTrue(af3.match("2/5"))
     self.assertTrue(af3.match("8/5"))
예제 #18
0
 def test_initialize_wrong_format(self):
     """Test if wrong address format raises exception."""
     with self.assertRaises(ConversionError):
         AddressFilter("2-/2,3/4/5/1,5-/*")