]> git.basschouten.com Git - openhab-addons.git/blob
2a8a56ed39971729c79c5b2b40465b57369c557f
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2022 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.lcn.internal.subhandler;
14
15 import static org.mockito.Mockito.verify;
16
17 import java.math.BigDecimal;
18
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.junit.jupiter.api.BeforeEach;
21 import org.junit.jupiter.api.Test;
22 import org.openhab.binding.lcn.internal.common.DimmerOutputCommand;
23 import org.openhab.binding.lcn.internal.common.LcnChannelGroup;
24 import org.openhab.binding.lcn.internal.common.LcnDefs;
25 import org.openhab.binding.lcn.internal.common.LcnException;
26 import org.openhab.core.library.types.OnOffType;
27 import org.openhab.core.library.types.PercentType;
28
29 /**
30  * Test class.
31  *
32  * @author Fabian Wolter - Initial contribution
33  */
34 @NonNullByDefault
35 public class LcnModuleOutputSubHandlerTest extends AbstractTestLcnModuleSubHandler {
36     private @NonNullByDefault({}) LcnModuleOutputSubHandler l;
37
38     @Override
39     @BeforeEach
40     public void setUp() {
41         super.setUp();
42
43         l = new LcnModuleOutputSubHandler(handler, info);
44     }
45
46     @Test
47     public void testStatusOutput1OffPercent() {
48         l.tryParse("=M000005A1000");
49         verify(handler).updateChannel(LcnChannelGroup.OUTPUT, "1", new PercentType(0));
50     }
51
52     @Test
53     public void testStatusOutput2OffPercent() {
54         l.tryParse("=M000005A2000");
55         verify(handler).updateChannel(LcnChannelGroup.OUTPUT, "2", new PercentType(0));
56     }
57
58     @Test
59     public void testStatusOutput1OffNative() {
60         l.tryParse("=M000005O1000");
61         verify(handler).updateChannel(LcnChannelGroup.OUTPUT, "1", new PercentType(0));
62     }
63
64     @Test
65     public void testStatusOutput2OffNative() {
66         l.tryParse("=M000005O2000");
67         verify(handler).updateChannel(LcnChannelGroup.OUTPUT, "2", new PercentType(0));
68     }
69
70     @Test
71     public void testStatusOutput1OnPercent() {
72         l.tryParse("=M000005A1100");
73         verify(handler).updateChannel(LcnChannelGroup.OUTPUT, "1", new PercentType(100));
74     }
75
76     @Test
77     public void testStatusOutput2OnPercent() {
78         l.tryParse("=M000005A2100");
79         verify(handler).updateChannel(LcnChannelGroup.OUTPUT, "2", new PercentType(100));
80     }
81
82     @Test
83     public void testStatusOutput1OnNative() {
84         l.tryParse("=M000005O1200");
85         verify(handler).updateChannel(LcnChannelGroup.OUTPUT, "1", new PercentType(100));
86     }
87
88     @Test
89     public void testStatusOutput2OnNative() {
90         l.tryParse("=M000005O2200");
91         verify(handler).updateChannel(LcnChannelGroup.OUTPUT, "2", new PercentType(100));
92     }
93
94     @Test
95     public void testStatusOutput2On50Percent() {
96         l.tryParse("=M000005A2050");
97         verify(handler).updateChannel(LcnChannelGroup.OUTPUT, "2", new PercentType(50));
98     }
99
100     @Test
101     public void testStatusOutput1On50Native() {
102         l.tryParse("=M000005O1100");
103         verify(handler).updateChannel(LcnChannelGroup.OUTPUT, "1", new PercentType(50));
104     }
105
106     @Test
107     public void testHandleCommandOutput1On() throws LcnException {
108         l.handleCommandOnOff(OnOffType.ON, LcnChannelGroup.OUTPUT, 0);
109         verify(handler).sendPck("A1DI100000");
110     }
111
112     @Test
113     public void testHandleCommandOutput2On() throws LcnException {
114         l.handleCommandOnOff(OnOffType.ON, LcnChannelGroup.OUTPUT, 1);
115         verify(handler).sendPck("A2DI100000");
116     }
117
118     @Test
119     public void testHandleCommandOutput1Off() throws LcnException {
120         l.handleCommandOnOff(OnOffType.OFF, LcnChannelGroup.OUTPUT, 0);
121         verify(handler).sendPck("A1DI000000");
122     }
123
124     @Test
125     public void testHandleCommandOutput2Off() throws LcnException {
126         l.handleCommandOnOff(OnOffType.OFF, LcnChannelGroup.OUTPUT, 1);
127         verify(handler).sendPck("A2DI000000");
128     }
129
130     @Test
131     public void testHandleCommandOutput1Percent10() throws LcnException {
132         l.handleCommandPercent(new PercentType(99), LcnChannelGroup.OUTPUT, 0);
133         verify(handler).sendPck("A1DI099000");
134     }
135
136     @Test
137     public void testHandleCommandOutput2Percent1() throws LcnException {
138         l.handleCommandPercent(new PercentType(1), LcnChannelGroup.OUTPUT, 1);
139         verify(handler).sendPck("A2DI001000");
140     }
141
142     @Test
143     public void testHandleCommandOutput1Percent995() throws LcnException {
144         l.handleCommandPercent(new PercentType(BigDecimal.valueOf(99.5)), LcnChannelGroup.OUTPUT, 0);
145         verify(handler).sendPck("O1DI199000");
146     }
147
148     @Test
149     public void testHandleCommandOutput2Percent05() throws LcnException {
150         l.handleCommandPercent(new PercentType(BigDecimal.valueOf(0.5)), LcnChannelGroup.OUTPUT, 1);
151         verify(handler).sendPck("O2DI001000");
152     }
153
154     @Test
155     public void testHandleCommandDimmerOutputAll60FixedRamp() throws LcnException {
156         l.handleCommandDimmerOutput(new DimmerOutputCommand(BigDecimal.valueOf(60), true, false, LcnDefs.FIXED_RAMP_MS),
157                 0);
158         verify(handler).sendPck("AH060");
159     }
160
161     @Test
162     public void testHandleCommandDimmerOutputAll40CustomRamp() throws LcnException {
163         l.handleCommandDimmerOutput(new DimmerOutputCommand(BigDecimal.valueOf(40), true, false, 1000), 0);
164         verify(handler).sendPck("OY080080080080004");
165     }
166
167     @Test
168     public void testHandleCommandDimmerOutput12Value100FixedRamp() throws LcnException {
169         l.handleCommandDimmerOutput(
170                 new DimmerOutputCommand(BigDecimal.valueOf(100), false, true, LcnDefs.FIXED_RAMP_MS), 0);
171         verify(handler).sendPck("X2001200200");
172     }
173
174     @Test
175     public void testHandleCommandDimmerOutput12Value0FixedRamp() throws LcnException {
176         l.handleCommandDimmerOutput(new DimmerOutputCommand(BigDecimal.valueOf(0), false, true, LcnDefs.FIXED_RAMP_MS),
177                 0);
178         verify(handler).sendPck("X2001000000");
179     }
180
181     @Test
182     public void testHandleCommandDimmerOutput12Value100NoRamp() throws LcnException {
183         l.handleCommandDimmerOutput(new DimmerOutputCommand(BigDecimal.valueOf(100), false, true, 0), 0);
184         verify(handler).sendPck("X2001253253");
185     }
186
187     @Test
188     public void testHandleCommandDimmerOutput12Value0NoRamp() throws LcnException {
189         l.handleCommandDimmerOutput(new DimmerOutputCommand(BigDecimal.valueOf(0), false, true, 0), 0);
190         verify(handler).sendPck("X2001252252");
191     }
192
193     @Test
194     public void testHandleCommandDimmerOutput12Value40() throws LcnException {
195         l.handleCommandDimmerOutput(new DimmerOutputCommand(BigDecimal.valueOf(40), false, true, 0), 0);
196         verify(handler).sendPck("AY040040");
197     }
198 }