]> git.basschouten.com Git - openhab-addons.git/blob
f33a5415cde45e73b61939504b81eb81889d3f3a
[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.nibeheatpump.internal.message;
14
15 import static org.junit.jupiter.api.Assertions.*;
16
17 import org.junit.jupiter.api.Test;
18 import org.openhab.binding.nibeheatpump.internal.NibeHeatPumpException;
19 import org.openhab.core.util.HexUtils;
20
21 /**
22  * Tests cases for {@link ModbusReadRequestMessage}.
23  *
24  * @author Pauli Anttila - Initial contribution
25  */
26 public class ModbusReadResponseMessageTest {
27
28     @Test
29     public void createMessageTest() throws NibeHeatPumpException {
30         final int coilAddress = 513;
31         final int value = 100992003;
32         final String okMessage = "5C00206A060102030405064B";
33         ModbusReadResponseMessage m = new ModbusReadResponseMessage.MessageBuilder().coilAddress(coilAddress)
34                 .value(value).build();
35         byte[] byteMessage = m.decodeMessage();
36         assertEquals(okMessage, HexUtils.bytesToHex(byteMessage));
37     }
38
39     @Test
40     public void parseMessageTest() throws NibeHeatPumpException {
41         final int coilAddress = 513;
42         final int value = 100992003;
43         final String message = "5C00206A060102030405064B";
44         ModbusReadResponseMessage m = (ModbusReadResponseMessage) MessageFactory
45                 .getMessage(HexUtils.hexToBytes(message));
46         assertEquals(coilAddress, m.getCoilAddress());
47         assertEquals(value, m.getValue());
48     }
49
50     @Test
51     public void badCrcTest() {
52         final String message = "5C00206A060102030405064C";
53         assertThrows(NibeHeatPumpException.class, () -> MessageFactory.getMessage(HexUtils.hexToBytes(message)));
54     }
55
56     @Test
57     public void notReadResponseMessageTest() {
58         final String message = "5C00206B060102030405064A";
59         assertThrows(NibeHeatPumpException.class, () -> new ModbusReadResponseMessage(HexUtils.hexToBytes(message)));
60     }
61
62     @Test
63     public void parseEscapedMessageTest() throws NibeHeatPumpException {
64         final int coilAddress = 513;
65         final int value = 0x05E65C;
66         final String message = "5C00206A0701025C5CE60500AD";
67         ModbusReadResponseMessage m = (ModbusReadResponseMessage) MessageFactory
68                 .getMessage(HexUtils.hexToBytes(message));
69         assertEquals(coilAddress, m.getCoilAddress());
70         assertEquals(value, m.getValue());
71     }
72 }