]> git.basschouten.com Git - openhab-addons.git/blob
24044301c74488b99335dbbf09ae001eaefd5ed0
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.rfxcom.internal.messages;
14
15 import static org.junit.jupiter.api.Assertions.assertEquals;
16
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.junit.jupiter.api.Test;
19 import org.openhab.binding.rfxcom.internal.exceptions.RFXComException;
20 import org.openhab.binding.rfxcom.internal.messages.RFXComInterfaceMessage.Commands;
21 import org.openhab.binding.rfxcom.internal.messages.RFXComInterfaceMessage.FirmwareType;
22 import org.openhab.binding.rfxcom.internal.messages.RFXComInterfaceMessage.SubType;
23 import org.openhab.binding.rfxcom.internal.messages.RFXComInterfaceMessage.TransceiverType;
24 import org.openhab.core.util.HexUtils;
25
26 /**
27  * Test for RFXCom-binding
28  *
29  * @author Martin van Wingerden - Initial contribution
30  */
31 @NonNullByDefault
32 public class RFXComInterfaceMessageTest {
33     private RFXComInterfaceMessage testMessage(String hexMsg, SubType subType, int seqNbr, Commands command)
34             throws RFXComException {
35         RFXComInterfaceMessage msg = (RFXComInterfaceMessage) RFXComMessageFactoryImpl.INSTANCE
36                 .createMessage(HexUtils.hexToBytes(hexMsg));
37         assertEquals(subType, msg.subType, "SubType");
38         assertEquals(seqNbr, (short) (msg.seqNbr & 0xFF), "Seq Number");
39         assertEquals(command, msg.command, "Command");
40
41         return msg;
42     }
43
44     @Test
45     public void testWelcomeCopyRightMessage() throws RFXComException {
46         RFXComInterfaceMessage msg = testMessage("1401070307436F7079726967687420524658434F4D", SubType.START_RECEIVER,
47                 3, Commands.START_RECEIVER);
48
49         assertEquals("Copyright RFXCOM", msg.text, "text");
50     }
51
52     @Test
53     public void testRespondOnUnknownMessage() throws RFXComException {
54         testMessage("0D01FF190053E2000C2701020000", SubType.UNKNOWN_COMMAND, 25, Commands.UNSUPPORTED_COMMAND);
55     }
56
57     private void testStatus(String message, TransceiverType transceiverType, FirmwareType firmwareType,
58             int firewareVersion) throws RFXComException {
59         RFXComInterfaceMessage msg = testMessage(message, SubType.RESPONSE, 1, Commands.GET_STATUS);
60
61         assertEquals(transceiverType, msg.transceiverType, "transceiverType");
62         assertEquals(firmwareType, msg.firmwareType, "firmwareType");
63         assertEquals(firewareVersion, msg.firmwareVersion, "firmwareVersion");
64     }
65
66     @Test
67     public void testStatus_Rfxtrx443_Ext_250() throws RFXComException {
68         testStatus("0D0100010253FA0400070001031C", TransceiverType._433_92MHZ_TRANSCEIVER, FirmwareType.EXT, 250);
69     }
70
71     @Test
72     public void testStatus_Rfxtrx443_Ext_251() throws RFXComException {
73         testStatus("0D0100010253FB0400070001031C", TransceiverType._433_92MHZ_TRANSCEIVER, FirmwareType.EXT, 251);
74     }
75
76     @Test
77     public void testStatus_Rfxtrx443_Ext_1001() throws RFXComException {
78         testStatus("140100010253010400070001031C03000000000000", TransceiverType._433_92MHZ_TRANSCEIVER,
79                 FirmwareType.EXT, 1001);
80     }
81
82     @Test
83     public void testStatus_Rfxtrx443_Pro1_1044() throws RFXComException {
84         testStatus("1401000102532C04000700010300055D0000000000", TransceiverType._433_92MHZ_TRANSCEIVER,
85                 FirmwareType.PRO1, 1044);
86     }
87
88     @Test
89     public void testStatus_Rfxtrx443_Type1_95() throws RFXComException {
90         testStatus("0D01000102535F0000270001031C", TransceiverType._433_92MHZ_TRANSCEIVER, FirmwareType.TYPE1, 95);
91     }
92
93     @Test
94     public void testStatus_Rfxtrx443_Type1_1024() throws RFXComException {
95         testStatus("140100010253180000270001031C01000000000000", TransceiverType._433_92MHZ_TRANSCEIVER,
96                 FirmwareType.TYPE1, 1024);
97     }
98
99     @Test
100     public void testStatus_Rfxtrx443_Type2_195() throws RFXComException {
101         testStatus("0D0100010253C30080270001031C", TransceiverType._433_92MHZ_TRANSCEIVER, FirmwareType.TYPE2, 195);
102     }
103
104     @Test
105     public void testStatus_Rfxtrx443_Type2_1022() throws RFXComException {
106         testStatus("140100010253160080270001031C02000000000000", TransceiverType._433_92MHZ_TRANSCEIVER,
107                 FirmwareType.TYPE2, 1022);
108     }
109
110     @Test
111     public void testStatus_Rfxtrx443_Ext2_1012() throws RFXComException {
112         testStatus("1401000102530C0800270001031C04524658434F4D", TransceiverType._433_92MHZ_TRANSCEIVER,
113                 FirmwareType.EXT2, 1012);
114     }
115
116     @Test
117     public void testStatus_Unknown_Ext2_1012() throws RFXComException {
118         testStatus("1401000102AA0C0800270001031C04524658434F4D", TransceiverType._UNKNOWN, FirmwareType.EXT2, 1012);
119     }
120
121     @Test
122     public void testStatus_Rfxtrx433_Unknown_1012() throws RFXComException {
123         testStatus("1401000102530C0800270001031CAA524658434F4D", TransceiverType._433_92MHZ_TRANSCEIVER,
124                 FirmwareType.UNKNOWN, 1012);
125     }
126 }