2 * Copyright (c) 2010-2022 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.max.internal.message;
15 import static org.junit.jupiter.api.Assertions.*;
17 import java.time.ZoneId;
18 import java.time.ZonedDateTime;
19 import java.util.Date;
21 import org.eclipse.jdt.annotation.NonNullByDefault;
22 import org.junit.jupiter.api.Test;
23 import org.openhab.binding.max.internal.Utils;
26 * Tests cases for {@link HMessage}.
28 * @author Marcel Verpaalen - Initial contribution
31 public class HMessageTest {
33 public static final String RAW_DATA = "H:KEQ0565026,0b5951,0113,00000000,4eed6795,01,32,12080a,070f,03,0000";
35 private final HMessage message = new HMessage(RAW_DATA);
38 public void getMessageTypeTest() {
39 MessageType messageType = ((Message) message).getType();
40 assertEquals(MessageType.H, messageType);
44 public void getRFAddressTest() {
45 String rfAddress = message.getRFAddress();
46 assertEquals("0b5951", rfAddress);
50 public void getFirmwareTest() {
51 String firmware = message.getFirmwareVersion();
52 assertEquals("01.13", firmware);
56 public void getConnectionIdTest() {
57 String connectionId = message.getConnectionId();
58 assertEquals("4eed6795", connectionId);
62 public void getCubeTimeStateTest() {
63 String cubeTimeState = message.getCubeTimeState();
64 assertEquals("03", cubeTimeState);
68 public void testParseDateTime() {
69 String[] tokens = RAW_DATA.split(Message.DELIMETER);
71 String hexDate = tokens[7];
72 String hexTime = tokens[8];
74 int year = Utils.fromHex(hexDate.substring(0, 2));
75 int month = Utils.fromHex(hexDate.substring(2, 4));
76 int dayOfMonth = Utils.fromHex(hexDate.substring(4, 6));
77 assertEquals(18, year);
78 assertEquals(8, month);
79 assertEquals(10, dayOfMonth);
81 int hours = Utils.fromHex(hexTime.substring(0, 2));
82 int minutes = Utils.fromHex(hexTime.substring(2, 4));
83 assertEquals(7, hours);
84 assertEquals(15, minutes);
88 public void testGetDateTime() {
89 Date dateTime = message.getDateTime();
90 assertEquals(Date.from(ZonedDateTime.of(2018, 8, 10, 7, 15, 0, 0, ZoneId.systemDefault()).toInstant()),
95 public void getNTPCounterTest() {
96 String ntpCounter = message.getNTPCounter();
97 assertEquals("0", ntpCounter);
101 public void getSerialNumberTest() {
102 String serialNumber = message.getSerialNumber();
103 assertEquals("KEQ0565026", serialNumber);