]> git.basschouten.com Git - openhab-addons.git/blob
9cd06c3b28fb5b984d6120ebd575c68d9e2516ab
[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.anel.internal;
14
15 import static org.hamcrest.MatcherAssert.assertThat;
16 import static org.hamcrest.Matchers.equalTo;
17 import static org.junit.jupiter.api.Assertions.assertNull;
18
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;
29
30 /**
31  * This class tests {@link AnelCommandHandler}.
32  *
33  * @author Patrick Koenemann - Initial contribution
34  */
35 @NonNullByDefault
36 public class AnelCommandHandlerTest {
37
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);
43
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);
47
48     private final AnelCommandHandler commandHandler = new AnelCommandHandler();
49
50     @Test
51     public void refreshCommand() {
52         // given & when
53         final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_INVALID, CHANNEL_R1, RefreshType.REFRESH,
54                 "a");
55         // then
56         assertNull(cmd);
57     }
58
59     @Test
60     public void decimalCommandReturnsNull() {
61         // given & when
62         final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R1, new DecimalType("1"), "a");
63         // then
64         assertNull(cmd);
65     }
66
67     @Test
68     public void stringCommandReturnsNull() {
69         // given & when
70         final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R1, new StringType("ON"), "a");
71         // then
72         assertNull(cmd);
73     }
74
75     @Test
76     public void increaseDecreaseCommandReturnsNull() {
77         // given & when
78         final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R1,
79                 IncreaseDecreaseType.INCREASE, "a");
80         // then
81         assertNull(cmd);
82     }
83
84     @Test
85     public void upDownCommandReturnsNull() {
86         // given & when
87         final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R1, UpDownType.UP, "a");
88         // then
89         assertNull(cmd);
90     }
91
92     @Test
93     public void unlockedSwitchReturnsCommand() {
94         // given & when
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");
99         // then
100         assertThat(cmdOn1, equalTo("Sw_on1a"));
101         assertThat(cmdOff1, equalTo("Sw_off1a"));
102         assertThat(cmdOn3, equalTo("Sw_on3a"));
103         assertThat(cmdOff3, equalTo("Sw_off3a"));
104     }
105
106     @Test
107     public void lockedSwitchReturnsNull() {
108         // given & when
109         final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HOME, CHANNEL_R4, OnOffType.ON, "a");
110         // then
111         assertNull(cmd);
112     }
113
114     @Test
115     public void nullIOSwitchReturnsCommand() {
116         // given & when
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");
119         // then
120         assertThat(cmdOn, equalTo("IO_on1a"));
121         assertThat(cmdOff, equalTo("IO_off1a"));
122     }
123
124     @Test
125     public void inputIOSwitchReturnsNull() {
126         // given & when
127         final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HUT, CHANNEL_IO6, OnOffType.ON, "a");
128         // then
129         assertNull(cmd);
130     }
131
132     @Test
133     public void outputIOSwitchReturnsCommand() {
134         // given & when
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");
137         // then
138         assertThat(cmdOn, equalTo("IO_on1a"));
139         assertThat(cmdOff, equalTo("IO_off1a"));
140     }
141
142     @Test
143     public void ioDirectionSwitchReturnsNull() {
144         // given & when
145         final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HUT, IAnelConstants.CHANNEL_IO_MODE.get(0),
146                 OnOffType.ON, "a");
147         // then
148         assertNull(cmd);
149     }
150
151     @Test
152     public void sensorTemperatureCommandReturnsNull() {
153         // given & when
154         final String cmd = commandHandler.toAnelCommandAndUnsetState(STATE_HUT,
155                 IAnelConstants.CHANNEL_SENSOR_TEMPERATURE, new DecimalType("1.0"), "a");
156         // then
157         assertNull(cmd);
158     }
159
160     @Test
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));
167         }
168     }
169
170     @Test
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));
177         }
178     }
179 }