Skip to content

Commit

Permalink
tests added for F6-02-01/02 as sender EEP
Browse files Browse the repository at this point in the history
  • Loading branch information
grimmpp committed Mar 17, 2024
1 parent e9dc3dd commit 0a667b6
Show file tree
Hide file tree
Showing 2 changed files with 175 additions and 16 deletions.
72 changes: 63 additions & 9 deletions tests/test_switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,12 @@ class TestSwitch(unittest.TestCase):
def mock_send_message(self, msg: ESP2Message):
self.last_sent_command.append( msg )

def create_switch(self, sender_eep_string:str) -> EltakoSwitch:
def create_switch(self, sender_eep_string:str, sender_id:AddressExpression = AddressExpression.parse('00-00-B0-01')) -> EltakoSwitch:
gateway = GatewayMock()
dev_id = AddressExpression.parse('00-00-00-01')
dev_name = 'device name'
eep_string = 'M5-38-08'

sender_id = AddressExpression.parse('00-00-B0-01')

dev_eep = EEP.find(eep_string)
sender_eep = EEP.find(sender_eep_string)

Expand Down Expand Up @@ -77,15 +75,70 @@ def test_switch_value_changed_with_sender_epp_A5_38_08(self):
self.assertEqual(self.last_sent_command[0].data[3], 8)
self.last_sent_command = []

def test_switch_value_changed_with_sender_epp_F6_02_01(self):
switch = self.create_switch('F6-02-01')
def test_switch_value_changed_with_sender_epp_F6_02_01_left(self):
switch = self.create_switch('F6-02-01', AddressExpression.parse('00-00-B0-01 left'))
switch.send_message = self.mock_send_message
switch._on_state = False

# status update message from relay
#8b 05 70 00 00 00 00 00 00 01 30
# data = 0x30
on_msg = RPSMessage(address=b'\x00\x00\x00\x01', status=b'\x30', data=b'\x30', outgoing=False)
# 8b 05 50 00 00 00 00 00 00 01 30
# data = 0x10
off_msg = RPSMessage(address=b'\x00\x00\x00\x01', status=b'\x30', data=b'\x10', outgoing=False)

switch.value_changed(on_msg)
self.assertEqual(switch.is_on, True)
self.assertEqual(switch.state, 'on')

switch.value_changed(on_msg)
self.assertEqual(switch.is_on, True)
self.assertEqual(switch.state, 'on')

switch.value_changed(off_msg)
self.assertEqual(switch.is_on, False)
self.assertEqual(switch.state, 'off')

switch.value_changed(off_msg)
self.assertEqual(switch.is_on, False)
self.assertEqual(switch.state, 'off')

switch.value_changed(on_msg)
self.assertEqual(switch.is_on, True)
self.assertEqual(switch.state, 'on')

self.last_sent_command = []
switch.turn_on()
self.assertEqual(len(self.last_sent_command), 2)
self.assertEqual(type(self.last_sent_command[0]), RPSMessage)
self.assertEqual(self.last_sent_command[0].status, 0x30)
self.assertEqual(self.last_sent_command[0].data[0], 0x30) # on
self.assertEqual(self.last_sent_command[1].status, 0x30)
self.assertEqual(self.last_sent_command[1].data[0], 0x20)

self.last_sent_command = []
switch.turn_off()
self.assertEqual(len(self.last_sent_command), 2)
self.assertEqual(type(self.last_sent_command[0]), RPSMessage)
self.assertEqual(self.last_sent_command[0].status, 0x30)
self.assertEqual(self.last_sent_command[0].data[0], 0x10) #off
self.assertEqual(self.last_sent_command[1].status, 0x30)
self.assertEqual(self.last_sent_command[1].data[0], 0x00)
self.last_sent_command = []


def test_switch_value_changed_with_sender_epp_F6_02_01_right(self):
switch = self.create_switch('F6-02-01', AddressExpression.parse('00-00-B0-01 right'))
switch.send_message = self.mock_send_message
switch._on_state = False

# status update message from relay
#8b 05 70 00 00 00 00 00 00 01 30
# data = 0x70
on_msg = RPSMessage(address=b'\x00\x00\x00\x01', status=b'\x30', data=b'\x70', outgoing=False)
# 8b 05 50 00 00 00 00 00 00 01 30
# data = 0x50
off_msg = RPSMessage(address=b'\x00\x00\x00\x01', status=b'\x30', data=b'\x50', outgoing=False)

switch.value_changed(on_msg)
Expand Down Expand Up @@ -113,20 +166,21 @@ def test_switch_value_changed_with_sender_epp_F6_02_01(self):
self.assertEqual(len(self.last_sent_command), 2)
self.assertEqual(type(self.last_sent_command[0]), RPSMessage)
self.assertEqual(self.last_sent_command[0].status, 0x30)
self.assertEqual(self.last_sent_command[0].data[0], 0x10) # on
self.assertEqual(self.last_sent_command[0].data[0], 0x70) # on
self.assertEqual(self.last_sent_command[1].status, 0x30)
self.assertEqual(self.last_sent_command[1].data[0], 0x00)
self.assertEqual(self.last_sent_command[1].data[0], 0x60)

self.last_sent_command = []
switch.turn_off()
self.assertEqual(len(self.last_sent_command), 2)
self.assertEqual(type(self.last_sent_command[0]), RPSMessage)
self.assertEqual(self.last_sent_command[0].status, 0x30)
self.assertEqual(self.last_sent_command[0].data[0], 0x30) #off
self.assertEqual(self.last_sent_command[0].data[0], 0x50) #off
self.assertEqual(self.last_sent_command[1].status, 0x30)
self.assertEqual(self.last_sent_command[1].data[0], 0x20)
self.assertEqual(self.last_sent_command[1].data[0], 0x40)
self.last_sent_command = []


def test_initial_loading_on(self):
switch = self.create_switch('F6-02-01')
switch._attr_is_on = None
Expand Down
119 changes: 112 additions & 7 deletions tests/test_switchable_light.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,17 @@
# EltakoEntity.send_message = mock.Mock(return_value=None)

class TestSwitchableLight(unittest.TestCase):
last_sent_command = []

def mock_send_message(self, msg: ESP2Message):
self.last_sent_command = msg
self.last_sent_command.append( msg )

def create_switchable_light(self) -> EltakoSwitchableLight:
def create_switchable_light(self, sender_eep_string:str = 'A5-38-08', sender_id:AddressExpression = AddressExpression.parse('00-00-B0-01')) -> EltakoSwitchableLight:
gateway = GatewayMock()
dev_id = AddressExpression.parse('00-00-00-01')
dev_name = 'device name'
eep_string = 'M5-38-08'

sender_id = AddressExpression.parse('00-00-B0-01')
sender_eep_string = 'A5-38-08'

dev_eep = EEP.find(eep_string)
sender_eep = EEP.find(sender_eep_string)

Expand Down Expand Up @@ -68,25 +66,132 @@ def test_switchable_light_value_changed(self):
self.assertIsNone(light.state)


def test_switchable_light_value_changed_with_sender_epp_F6_02_01_left(self):
light = self.create_switchable_light('F6-02-01', AddressExpression.parse('00-00-B0-01 left'))
light.send_message = self.mock_send_message
light._on_state = False

# status update message from relay
#8b 05 70 00 00 00 00 00 00 01 30
# data = 0x30
on_msg = RPSMessage(address=b'\x00\x00\x00\x01', status=b'\x30', data=b'\x30', outgoing=False)
# 8b 05 50 00 00 00 00 00 00 01 30
# data = 0x10
off_msg = RPSMessage(address=b'\x00\x00\x00\x01', status=b'\x30', data=b'\x10', outgoing=False)

light.value_changed(on_msg)
self.assertEqual(light.is_on, True)
self.assertEqual(light.state, 'on')

light.value_changed(on_msg)
self.assertEqual(light.is_on, True)
self.assertEqual(light.state, 'on')

light.value_changed(off_msg)
self.assertEqual(light.is_on, False)
self.assertEqual(light.state, 'off')

light.value_changed(off_msg)
self.assertEqual(light.is_on, False)
self.assertEqual(light.state, 'off')

light.value_changed(on_msg)
self.assertEqual(light.is_on, True)
self.assertEqual(light.state, 'on')

self.last_sent_command = []
light.turn_on()
self.assertEqual(len(self.last_sent_command), 2)
self.assertEqual(type(self.last_sent_command[0]), RPSMessage)
self.assertEqual(self.last_sent_command[0].status, 0x30)
self.assertEqual(self.last_sent_command[0].data[0], 0x30) # on
self.assertEqual(self.last_sent_command[1].status, 0x30)
self.assertEqual(self.last_sent_command[1].data[0], 0x20)

self.last_sent_command = []
light.turn_off()
self.assertEqual(len(self.last_sent_command), 2)
self.assertEqual(type(self.last_sent_command[0]), RPSMessage)
self.assertEqual(self.last_sent_command[0].status, 0x30)
self.assertEqual(self.last_sent_command[0].data[0], 0x10) #off
self.assertEqual(self.last_sent_command[1].status, 0x30)
self.assertEqual(self.last_sent_command[1].data[0], 0x00)
self.last_sent_command = []


def test_switchable_light_value_changed_with_sender_epp_F6_02_01_right(self):
light = self.create_switchable_light('F6-02-01', AddressExpression.parse('00-00-B0-01 right'))
light.send_message = self.mock_send_message
light._on_state = False

# status update message from relay
#8b 05 70 00 00 00 00 00 00 01 30
# data = 0x70
on_msg = RPSMessage(address=b'\x00\x00\x00\x01', status=b'\x30', data=b'\x70', outgoing=False)
# 8b 05 50 00 00 00 00 00 00 01 30
# data = 0x50
off_msg = RPSMessage(address=b'\x00\x00\x00\x01', status=b'\x30', data=b'\x50', outgoing=False)

light.value_changed(on_msg)
self.assertEqual(light.is_on, True)
self.assertEqual(light.state, 'on')

light.value_changed(on_msg)
self.assertEqual(light.is_on, True)
self.assertEqual(light.state, 'on')

light.value_changed(off_msg)
self.assertEqual(light.is_on, False)
self.assertEqual(light.state, 'off')

light.value_changed(off_msg)
self.assertEqual(light.is_on, False)
self.assertEqual(light.state, 'off')

light.value_changed(on_msg)
self.assertEqual(light.is_on, True)
self.assertEqual(light.state, 'on')

self.last_sent_command = []
light.turn_on()
self.assertEqual(len(self.last_sent_command), 2)
self.assertEqual(type(self.last_sent_command[0]), RPSMessage)
self.assertEqual(self.last_sent_command[0].status, 0x30)
self.assertEqual(self.last_sent_command[0].data[0], 0x70) # on
self.assertEqual(self.last_sent_command[1].status, 0x30)
self.assertEqual(self.last_sent_command[1].data[0], 0x60)

self.last_sent_command = []
light.turn_off()
self.assertEqual(len(self.last_sent_command), 2)
self.assertEqual(type(self.last_sent_command[0]), RPSMessage)
self.assertEqual(self.last_sent_command[0].status, 0x30)
self.assertEqual(self.last_sent_command[0].data[0], 0x50) #off
self.assertEqual(self.last_sent_command[1].status, 0x30)
self.assertEqual(self.last_sent_command[1].data[0], 0x40)
self.last_sent_command = []


def test_switchable_light_trun_on(self):
light = self.create_switchable_light()
light.send_message = self.mock_send_message

# test if command is sent to eltako bus
self.last_sent_command = []
light.turn_on()
self.assertEqual(
self.last_sent_command.body,
self.last_sent_command[0].body,
b'k\x07\x01\x00\x00\t\x00\x00\xb0\x01\x00')

def test_switchable_light_trun_off(self):
light = self.create_switchable_light()
light.send_message = self.mock_send_message

# test if command is sent to eltako bus
self.last_sent_command = []
light.turn_off()
self.assertEqual(
self.last_sent_command.body,
self.last_sent_command[0].body,
b'k\x07\x01\x00\x00\x08\x00\x00\xb0\x01\x00')

def test_initial_loading_on(self):
Expand Down

0 comments on commit 0a667b6

Please sign in to comment.