2 * Copyright (c) 2010-2023 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.anel.internal;
15 import static org.hamcrest.MatcherAssert.assertThat;
16 import static org.hamcrest.Matchers.equalTo;
17 import static org.junit.jupiter.api.Assertions.assertNull;
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.junit.jupiter.api.Test;
21 import org.openhab.binding.anel.internal.state.AnelCommandHandler;
22 import org.openhab.binding.anel.internal.state.AnelState;
23 import org.openhab.core.library.types.DecimalType;
24 import org.openhab.core.library.types.IncreaseDecreaseType;
25 import org.openhab.core.library.types.OnOffType;
26 import org.openhab.core.library.types.StringType;
27 import org.openhab.core.library.types.UpDownType;
28 import org.openhab.core.types.RefreshType;
31 * This class tests {@link AnelCommandHandler}.
33 * @author Patrick Koenemann - Initial contribution
36 public class AnelCommandHandlerTest {
38 private static final String CHANNEL_R1 = IAnelConstants.CHANNEL_RELAY_STATE.get(0);
39 private static final String CHANNEL_R3 = IAnelConstants.CHANNEL_RELAY_STATE.get(2);
40 private static final String CHANNEL_R4 = IAnelConstants.CHANNEL_RELAY_STATE.get(3);
41 private static final String CHANNEL_IO1 = IAnelConstants.CHANNEL_IO_STATE.get(0);
42 private static final String CHANNEL_IO6 = IAnelConstants.CHANNEL_IO_STATE.get(5);
44 private static final AnelState STATE_INVALID = AnelState.of(null);
45 private static final AnelState STATE_HOME = AnelState.of(IAnelTestStatus.STATUS_HOME_V46);
46 private static final AnelState STATE_HUT = AnelState.of(IAnelTestStatus.STATUS_HUT_V65);
48 private final AnelCommandHandler commandHandler = new AnelCommandHandler();
51 public void refreshCommand() {
53 final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_INVALID, CHANNEL_R1, RefreshType.REFRESH,
60 public void decimalCommandReturnsNull() {
62 final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R1, new DecimalType("1"), "a");
68 public void stringCommandReturnsNull() {
70 final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R1, new StringType("ON"), "a");
76 public void increaseDecreaseCommandReturnsNull() {
78 final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R1,
79 IncreaseDecreaseType.INCREASE, "a");
85 public void upDownCommandReturnsNull() {
87 final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R1, UpDownType.UP, "a");
93 public void unlockedSwitchReturnsCommand() {
95 final String cmdOn1 = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R1, OnOffType.ON, "a");
96 final String cmdOff1 = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R1, OnOffType.OFF, "a");
97 final String cmdOn3 = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R3, OnOffType.ON, "a");
98 final String cmdOff3 = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R3, OnOffType.OFF, "a");
100 assertThat(cmdOn1, equalTo("Sw_on1a"));
101 assertThat(cmdOff1, equalTo("Sw_off1a"));
102 assertThat(cmdOn3, equalTo("Sw_on3a"));
103 assertThat(cmdOff3, equalTo("Sw_off3a"));
107 public void lockedSwitchReturnsNull() {
109 final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R4, OnOffType.ON, "a");
115 public void nullIOSwitchReturnsCommand() {
117 final String cmdOn = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_IO1, OnOffType.ON, "a");
118 final String cmdOff = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_IO1, OnOffType.OFF, "a");
120 assertThat(cmdOn, equalTo("IO_on1a"));
121 assertThat(cmdOff, equalTo("IO_off1a"));
125 public void inputIOSwitchReturnsNull() {
127 final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HUT, CHANNEL_IO6, OnOffType.ON, "a");
133 public void outputIOSwitchReturnsCommand() {
135 final String cmdOn = commandHandler.toAnelCommandAndUnsetState(STATE_HUT, CHANNEL_IO1, OnOffType.ON, "a");
136 final String cmdOff = commandHandler.toAnelCommandAndUnsetState(STATE_HUT, CHANNEL_IO1, OnOffType.OFF, "a");
138 assertThat(cmdOn, equalTo("IO_on1a"));
139 assertThat(cmdOff, equalTo("IO_off1a"));
143 public void ioDirectionSwitchReturnsNull() {
145 final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HUT, IAnelConstants.CHANNEL_IO_MODE.get(0),
152 public void sensorTemperatureCommandReturnsNull() {
154 final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HUT,
155 IAnelConstants.CHANNEL_SENSOR_TEMPERATURE, new DecimalType("1.0"), "a");
161 public void relayChannelIdIndex() {
162 for (int i = 0; i < IAnelConstants.CHANNEL_RELAY_STATE.size(); i++) {
163 final String relayStateChannelId = IAnelConstants.CHANNEL_RELAY_STATE.get(i);
164 final String relayIndex = relayStateChannelId.substring(1, 2);
165 final String expectedIndex = String.valueOf(i + 1);
166 assertThat(relayIndex, equalTo(expectedIndex));
171 public void ioChannelIdIndex() {
172 for (int i = 0; i < IAnelConstants.CHANNEL_IO_STATE.size(); i++) {
173 final String ioStateChannelId = IAnelConstants.CHANNEL_IO_STATE.get(i);
174 final String ioIndex = ioStateChannelId.substring(2, 3);
175 final String expectedIndex = String.valueOf(i + 1);
176 assertThat(ioIndex, equalTo(expectedIndex));