2 * Copyright (c) 2010-2020 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.bsblan.internal.helper;
15 import static org.junit.Assert.assertEquals;
16 import static org.junit.Assert.assertNotNull;
17 import static org.junit.Assert.assertNull;
18 import static org.openhab.binding.bsblan.internal.BsbLanBindingConstants.*;
20 import org.eclipse.jdt.annotation.NonNullByDefault;
21 import org.junit.Test;
22 import org.openhab.binding.bsblan.internal.api.dto.BsbLanApiParameterDTO;
23 import org.openhab.core.library.types.DecimalType;
24 import org.openhab.core.library.types.OnOffType;
25 import org.openhab.core.library.types.StringType;
26 import org.openhab.core.types.State;
29 * The {@link BsbLanParameterConverterTests} class implements tests
30 * for {@link BsbLanParameterConverter}.
32 * @author Peter Schraffl - Initial contribution
35 public class BsbLanParameterConverterTests {
38 public void testGetStatesForStringParameter() {
39 BsbLanApiParameterDTO parameter = new BsbLanApiParameterDTO();
40 parameter.dataType = BsbLanApiParameterDTO.DataType.DT_STRN;
41 parameter.description = "Test-Description";
42 parameter.name = "Test-Name";
43 parameter.unit = "Test-Unit";
44 parameter.value = "Test-Value";
48 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DATATYPE, parameter);
50 assertEquals(new DecimalType(BsbLanApiParameterDTO.DataType.DT_STRN.getValue()), state.as(DecimalType.class));
52 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DESCRIPTION, parameter);
54 assertEquals(new StringType("Test-Description"), state.as(StringType.class));
56 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NAME, parameter);
58 assertEquals(new StringType("Test-Name"), state.as(StringType.class));
60 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_UNIT, parameter);
62 assertEquals(new StringType("Test-Unit"), state.as(StringType.class));
64 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NUMBER_VALUE, parameter);
67 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_STRING_VALUE, parameter);
69 assertEquals(new StringType("Test-Value"), state.as(StringType.class));
71 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_SWITCH_VALUE, parameter);
73 assertEquals(OnOffType.ON, state);
77 public void testGetStatesForEnumParameterValue1() {
78 BsbLanApiParameterDTO parameter = new BsbLanApiParameterDTO();
79 parameter.dataType = BsbLanApiParameterDTO.DataType.DT_ENUM;
80 parameter.description = "Test-Description";
81 parameter.name = "Test-Name";
82 parameter.unit = "Test-Unit";
83 parameter.value = "1";
87 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DATATYPE, parameter);
89 assertEquals(new DecimalType(BsbLanApiParameterDTO.DataType.DT_ENUM.getValue()), state.as(DecimalType.class));
91 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DESCRIPTION, parameter);
93 assertEquals(new StringType("Test-Description"), state.as(StringType.class));
95 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NAME, parameter);
97 assertEquals(new StringType("Test-Name"), state.as(StringType.class));
99 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_UNIT, parameter);
100 assertNotNull(state);
101 assertEquals(new StringType("Test-Unit"), state.as(StringType.class));
103 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NUMBER_VALUE, parameter);
104 assertNotNull(state);
105 assertEquals(new DecimalType(1), state.as(DecimalType.class));
107 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_STRING_VALUE, parameter);
108 assertNotNull(state);
109 assertEquals(new StringType("1"), state.as(StringType.class));
111 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_SWITCH_VALUE, parameter);
112 assertNotNull(state);
113 assertEquals(OnOffType.ON, state);
117 public void testGetStatesForEnumParameterValue0() {
118 BsbLanApiParameterDTO parameter = new BsbLanApiParameterDTO();
119 parameter.dataType = BsbLanApiParameterDTO.DataType.DT_ENUM;
120 parameter.description = "Test-Description";
121 parameter.name = "Test-Name";
122 parameter.unit = "Test-Unit";
123 parameter.value = "0";
127 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DATATYPE, parameter);
128 assertNotNull(state);
129 assertEquals(new DecimalType(BsbLanApiParameterDTO.DataType.DT_ENUM.getValue()), state.as(DecimalType.class));
131 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DESCRIPTION, parameter);
132 assertNotNull(state);
133 assertEquals(new StringType("Test-Description"), state.as(StringType.class));
135 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NAME, parameter);
136 assertNotNull(state);
137 assertEquals(new StringType("Test-Name"), state.as(StringType.class));
139 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_UNIT, parameter);
140 assertNotNull(state);
141 assertEquals(new StringType("Test-Unit"), state.as(StringType.class));
143 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NUMBER_VALUE, parameter);
144 assertNotNull(state);
145 assertEquals(new DecimalType(0), state.as(DecimalType.class));
147 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_STRING_VALUE, parameter);
148 assertNotNull(state);
149 assertEquals(new StringType("0"), state.as(StringType.class));
151 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_SWITCH_VALUE, parameter);
152 assertNotNull(state);
153 assertEquals(OnOffType.OFF, state);
157 public void testGetStatesForValueParameterValue() {
158 BsbLanApiParameterDTO parameter = new BsbLanApiParameterDTO();
159 parameter.dataType = BsbLanApiParameterDTO.DataType.DT_VALS;
160 parameter.description = "Test-Description";
161 parameter.name = "Test-Name";
162 parameter.unit = "Test-Unit";
163 parameter.value = "22.5";
167 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DATATYPE, parameter);
168 assertNotNull(state);
169 assertEquals(new DecimalType(BsbLanApiParameterDTO.DataType.DT_VALS.getValue()), state.as(DecimalType.class));
171 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DESCRIPTION, parameter);
172 assertNotNull(state);
173 assertEquals(new StringType("Test-Description"), state.as(StringType.class));
175 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NAME, parameter);
176 assertNotNull(state);
177 assertEquals(new StringType("Test-Name"), state.as(StringType.class));
179 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_UNIT, parameter);
180 assertNotNull(state);
181 assertEquals(new StringType("Test-Unit"), state.as(StringType.class));
183 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NUMBER_VALUE, parameter);
184 assertNotNull(state);
185 assertEquals(new DecimalType(22.5), state.as(DecimalType.class));
187 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_STRING_VALUE, parameter);
188 assertNotNull(state);
189 assertEquals(new StringType("22.5"), state.as(StringType.class));
191 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_SWITCH_VALUE, parameter);
192 assertNotNull(state);
193 assertEquals(OnOffType.ON, state);
197 public void testGetStatesEscapesHtml() {
198 BsbLanApiParameterDTO parameter = new BsbLanApiParameterDTO();
199 parameter.dataType = BsbLanApiParameterDTO.DataType.DT_VALS;
200 parameter.description = "Test-Description";
201 parameter.name = "Test-Name";
202 parameter.unit = "°C";
203 parameter.value = "22.5";
207 state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_UNIT, parameter);
208 assertNotNull(state);
209 assertEquals(new StringType("°C"), state.as(StringType.class));
213 public void testGetValueForReadonlyChannels() {
214 assertNull(BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_DATATYPE, OnOffType.ON));
215 assertNull(BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_DESCRIPTION, OnOffType.ON));
216 assertNull(BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_NAME, OnOffType.ON));
217 assertNull(BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_UNIT, OnOffType.ON));
221 public void testGetValueForNumberValueChannel() {
222 assertNull("1", BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_NUMBER_VALUE, OnOffType.ON));
223 assertNull("0", BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_NUMBER_VALUE, OnOffType.OFF));
224 assertEquals("42", BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_NUMBER_VALUE, new DecimalType(42)));
225 assertEquals("22.5", BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_NUMBER_VALUE, new DecimalType(22.5)));
226 assertNull(BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_NUMBER_VALUE,
227 new StringType("Not a number value")));
228 assertNull(BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_NUMBER_VALUE, new StringType("")));
232 public void testGetValueForSwitchValueChannel() {
233 assertEquals("1", BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_SWITCH_VALUE, OnOffType.ON));
234 assertEquals("0", BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_SWITCH_VALUE, OnOffType.OFF));
235 assertNull(BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_SWITCH_VALUE, new DecimalType(1)));
236 assertNull(BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_SWITCH_VALUE, new DecimalType(0)));
237 assertNull(BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_SWITCH_VALUE, new DecimalType(42)));
238 assertNull(BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_SWITCH_VALUE, new DecimalType(22.5)));
239 assertNull(BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_SWITCH_VALUE,
240 new StringType("Not a number value")));
241 assertNull(BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_SWITCH_VALUE, new StringType("")));
245 public void testGetValueForStringValueChannel() {
246 assertEquals("1", BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_STRING_VALUE, OnOffType.ON));
247 assertEquals("0", BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_STRING_VALUE, OnOffType.OFF));
248 assertEquals("42", BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_STRING_VALUE, new DecimalType(42)));
249 assertEquals("22.5", BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_STRING_VALUE, new DecimalType(22.5)));
250 assertEquals("A string value",
251 BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_STRING_VALUE, new StringType("A string value")));
252 assertEquals("", BsbLanParameterConverter.getValue(PARAMETER_CHANNEL_STRING_VALUE, new StringType("")));