def test_position_without_position_address_uninitialized_down(self): """Test moving uninitialized cover to absolute position - with no absolute positioning supported.""" xknx = XKNX() cover = Cover( xknx, "TestCover", group_address_long="1/2/1", group_address_short="1/2/2", group_address_position_state="1/2/4", ) with patch("logging.Logger.warning") as mock_warn: self.loop.run_until_complete(cover.set_position(50)) self.assertEqual(xknx.telegrams.qsize(), 0) mock_warn.assert_called_with( "Current position unknown. Initialize cover by moving to end position." ) self.loop.run_until_complete(cover.set_position(100)) self.assertEqual(xknx.telegrams.qsize(), 1) telegram = xknx.telegrams.get_nowait() self.assertEqual( telegram, Telegram( destination_address=GroupAddress("1/2/1"), payload=GroupValueWrite(DPTBinary(1)), ), )
def test_auto_stop(self): """Test auto stop functionality.""" xknx = XKNX() cover = Cover( xknx, "TestCover", group_address_long="1/2/1", group_address_stop="1/2/2", travel_time_down=10, travel_time_up=10, ) with patch("xknx.devices.Cover.stop") as mock_stop, patch( "time.time") as mock_time: fut = asyncio.Future() fut.set_result(None) mock_stop.return_value = fut mock_time.return_value = 1517000000.0 # we start with state 0 - open covers (up) this is assumed immediately self.loop.run_until_complete(cover.set_position(0)) self.loop.run_until_complete(cover.set_position(50)) mock_time.return_value = 1517000001.0 self.loop.run_until_complete(cover.auto_stop_if_necessary()) mock_stop.assert_not_called() mock_time.return_value = 1517000005.0 self.loop.run_until_complete(cover.auto_stop_if_necessary()) mock_stop.assert_called_with() mock_stop.reset_mock()
def test_auto_stop(self): """Test auto stop functionality.""" xknx = XKNX(loop=self.loop) cover = Cover(xknx, 'TestCover', group_address_long='1/2/1', travel_time_down=10, travel_time_up=10) with patch('xknx.devices.Cover.stop') as mock_stop, patch( 'time.time') as mock_time: fut = asyncio.Future() fut.set_result(None) mock_stop.return_value = fut mock_time.return_value = 1517000000.0 self.loop.run_until_complete(asyncio.Task(cover.set_position(50))) mock_time.return_value = 1517000001.0 self.loop.run_until_complete( asyncio.Task(cover.auto_stop_if_necessary())) mock_stop.assert_not_called() mock_time.return_value = 1517000005.0 self.loop.run_until_complete( asyncio.Task(cover.auto_stop_if_necessary())) mock_stop.assert_called_with() mock_stop.reset_mock()
def test_auto_stop(self): """Test auto stop functionality.""" xknx = XKNX(loop=self.loop) cover = Cover( xknx, 'TestCover', group_address_long='1/2/1', travel_time_down=10, travel_time_up=10) with patch('xknx.devices.Cover.stop') as mock_stop, patch('time.time') as mock_time: fut = asyncio.Future() fut.set_result(None) mock_stop.return_value = fut mock_time.return_value = 1517000000.0 self.loop.run_until_complete(asyncio.Task(cover.set_position(50))) mock_time.return_value = 1517000001.0 self.loop.run_until_complete(asyncio.Task(cover.auto_stop_if_necessary())) mock_stop.assert_not_called() mock_time.return_value = 1517000005.0 self.loop.run_until_complete(asyncio.Task(cover.auto_stop_if_necessary())) mock_stop.assert_called_with() mock_stop.reset_mock()
def test_position_without_position_address_down(self): """Test moving cover down - with no absolute positioning supported.""" xknx = XKNX() cover = Cover( xknx, "TestCover", group_address_long="1/2/1", group_address_short="1/2/2", group_address_position_state="1/2/4", ) cover.travelcalculator.set_position(70) self.loop.run_until_complete(cover.set_position(80)) self.assertEqual(xknx.telegrams.qsize(), 1) telegram = xknx.telegrams.get_nowait() self.assertEqual( telegram, Telegram( destination_address=GroupAddress("1/2/1"), payload=GroupValueWrite(DPTBinary(1)), ), ) self.assertEqual(cover.travelcalculator.travel_to_position, 80) self.assertTrue(cover.is_closing()) # process the outgoing telegram to make sure it doesn't overwrite the target position self.loop.run_until_complete(cover.process(telegram)) self.assertEqual(cover.travelcalculator.travel_to_position, 80)
def test_position_without_position_address_uninitialized_up(self): """Test moving uninitialized cover to absolute position - with no absolute positioning supported.""" xknx = XKNX(loop=self.loop) cover = Cover(xknx, 'TestCover', group_address_long='1/2/1', group_address_short='1/2/2', group_address_position_state='1/2/4') with patch('logging.Logger.warning') as mock_warn: self.loop.run_until_complete(asyncio.Task(cover.set_position(50))) self.assertEqual(xknx.telegrams.qsize(), 0) mock_warn.assert_called_with( 'Current position unknown. Initialize cover by moving to end position.' ) self.loop.run_until_complete(asyncio.Task(cover.set_position(0))) self.assertEqual(xknx.telegrams.qsize(), 1) telegram = xknx.telegrams.get_nowait() self.assertEqual(telegram, Telegram(GroupAddress('1/2/1'), payload=DPTBinary(0)))
def test_position_without_position_address_down(self): """Test moving cover down - with no absolute positioning supported.""" xknx = XKNX(loop=self.loop) cover = Cover(xknx, 'TestCover', group_address_long='1/2/1', group_address_short='1/2/2', group_address_position_state='1/2/4') cover.travelcalculator.set_position(70) self.loop.run_until_complete(asyncio.Task(cover.set_position(80))) self.assertEqual(xknx.telegrams.qsize(), 1) telegram = xknx.telegrams.get_nowait() self.assertEqual(telegram, Telegram(GroupAddress('1/2/1'), payload=DPTBinary(0)))
def test_position(self): """Test moving cover to absolute position.""" xknx = XKNX(loop=self.loop) cover = Cover(xknx, 'TestCover', group_address_long='1/2/1', group_address_short='1/2/2', group_address_position='1/2/3', group_address_position_state='1/2/4') self.loop.run_until_complete(asyncio.Task(cover.set_position(50))) self.assertEqual(xknx.telegrams.qsize(), 1) telegram = xknx.telegrams.get_nowait() self.assertEqual( telegram, Telegram(GroupAddress('1/2/3'), payload=DPTArray(0x80)))
def test_position_without_position_address_down(self): """Test moving cover down - with no absolute positioning supported.""" xknx = XKNX(loop=self.loop) cover = Cover( xknx, 'TestCover', group_address_long='1/2/1', group_address_short='1/2/2', group_address_position_state='1/2/4') cover.travelcalculator.set_position(70) self.loop.run_until_complete(asyncio.Task(cover.set_position(80))) self.assertEqual(xknx.telegrams.qsize(), 1) telegram = xknx.telegrams.get_nowait() self.assertEqual(telegram, Telegram(GroupAddress('1/2/1'), payload=DPTBinary(0)))
def test_position(self): """Test moving cover to absolute position.""" xknx = XKNX(loop=self.loop) cover = Cover( xknx, 'TestCover', group_address_long='1/2/1', group_address_short='1/2/2', group_address_position='1/2/3', group_address_position_state='1/2/4') self.loop.run_until_complete(asyncio.Task(cover.set_position(50))) self.assertEqual(xknx.telegrams.qsize(), 1) telegram = xknx.telegrams.get_nowait() self.assertEqual(telegram, Telegram(GroupAddress('1/2/3'), payload=DPTArray(0x80)))
def test_position(self): """Test moving cover to absolute position.""" xknx = XKNX() cover = Cover( xknx, "TestCover", group_address_long="1/2/1", group_address_short="1/2/2", group_address_position="1/2/3", group_address_position_state="1/2/4", ) self.loop.run_until_complete(cover.set_position(50)) self.assertEqual(xknx.telegrams.qsize(), 1) telegram = xknx.telegrams.get_nowait() self.assertEqual( telegram, Telegram(GroupAddress("1/2/3"), payload=DPTArray(0x80)))
def test_position_without_position_address_down(self): """Test moving cover down - with no absolute positioning supported.""" xknx = XKNX() cover = Cover( xknx, "TestCover", group_address_long="1/2/1", group_address_short="1/2/2", group_address_position_state="1/2/4", ) cover.travelcalculator.set_position(70) self.loop.run_until_complete(cover.set_position(80)) self.assertEqual(xknx.telegrams.qsize(), 1) telegram = xknx.telegrams.get_nowait() self.assertEqual(telegram, Telegram(GroupAddress("1/2/1"), payload=DPTBinary(1))) self.assertEqual(cover.travelcalculator.travel_to_position, 80)