]> git.basschouten.com Git - openhab-addons.git/blob
341c5d7efbca46f0b4cbedd167be02e086c9f217
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2020 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.bsblan.internal.helper;
14
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.*;
19
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;
27
28 /**
29  * The {@link BsbLanParameterConverterTests} class implements tests
30  * for {@link BsbLanParameterConverter}.
31  *
32  * @author Peter Schraffl - Initial contribution
33  */
34 @NonNullByDefault
35 public class BsbLanParameterConverterTests {
36
37     @Test
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";
45
46         State state = null;
47
48         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DATATYPE, parameter);
49         assertNotNull(state);
50         assertEquals(new DecimalType(BsbLanApiParameterDTO.DataType.DT_STRN.getValue()), state.as(DecimalType.class));
51
52         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DESCRIPTION, parameter);
53         assertNotNull(state);
54         assertEquals(new StringType("Test-Description"), state.as(StringType.class));
55
56         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NAME, parameter);
57         assertNotNull(state);
58         assertEquals(new StringType("Test-Name"), state.as(StringType.class));
59
60         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_UNIT, parameter);
61         assertNotNull(state);
62         assertEquals(new StringType("Test-Unit"), state.as(StringType.class));
63
64         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NUMBER_VALUE, parameter);
65         assertNull(state);
66
67         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_STRING_VALUE, parameter);
68         assertNotNull(state);
69         assertEquals(new StringType("Test-Value"), state.as(StringType.class));
70
71         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_SWITCH_VALUE, parameter);
72         assertNotNull(state);
73         assertEquals(OnOffType.ON, state);
74     }
75
76     @Test
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";
84
85         State state = null;
86
87         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DATATYPE, parameter);
88         assertNotNull(state);
89         assertEquals(new DecimalType(BsbLanApiParameterDTO.DataType.DT_ENUM.getValue()), state.as(DecimalType.class));
90
91         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DESCRIPTION, parameter);
92         assertNotNull(state);
93         assertEquals(new StringType("Test-Description"), state.as(StringType.class));
94
95         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NAME, parameter);
96         assertNotNull(state);
97         assertEquals(new StringType("Test-Name"), state.as(StringType.class));
98
99         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_UNIT, parameter);
100         assertNotNull(state);
101         assertEquals(new StringType("Test-Unit"), state.as(StringType.class));
102
103         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NUMBER_VALUE, parameter);
104         assertNotNull(state);
105         assertEquals(new DecimalType(1), state.as(DecimalType.class));
106
107         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_STRING_VALUE, parameter);
108         assertNotNull(state);
109         assertEquals(new StringType("1"), state.as(StringType.class));
110
111         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_SWITCH_VALUE, parameter);
112         assertNotNull(state);
113         assertEquals(OnOffType.ON, state);
114     }
115
116     @Test
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";
124
125         State state = null;
126
127         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DATATYPE, parameter);
128         assertNotNull(state);
129         assertEquals(new DecimalType(BsbLanApiParameterDTO.DataType.DT_ENUM.getValue()), state.as(DecimalType.class));
130
131         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DESCRIPTION, parameter);
132         assertNotNull(state);
133         assertEquals(new StringType("Test-Description"), state.as(StringType.class));
134
135         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NAME, parameter);
136         assertNotNull(state);
137         assertEquals(new StringType("Test-Name"), state.as(StringType.class));
138
139         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_UNIT, parameter);
140         assertNotNull(state);
141         assertEquals(new StringType("Test-Unit"), state.as(StringType.class));
142
143         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NUMBER_VALUE, parameter);
144         assertNotNull(state);
145         assertEquals(new DecimalType(0), state.as(DecimalType.class));
146
147         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_STRING_VALUE, parameter);
148         assertNotNull(state);
149         assertEquals(new StringType("0"), state.as(StringType.class));
150
151         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_SWITCH_VALUE, parameter);
152         assertNotNull(state);
153         assertEquals(OnOffType.OFF, state);
154     }
155
156     @Test
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";
164
165         State state = null;
166
167         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DATATYPE, parameter);
168         assertNotNull(state);
169         assertEquals(new DecimalType(BsbLanApiParameterDTO.DataType.DT_VALS.getValue()), state.as(DecimalType.class));
170
171         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_DESCRIPTION, parameter);
172         assertNotNull(state);
173         assertEquals(new StringType("Test-Description"), state.as(StringType.class));
174
175         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NAME, parameter);
176         assertNotNull(state);
177         assertEquals(new StringType("Test-Name"), state.as(StringType.class));
178
179         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_UNIT, parameter);
180         assertNotNull(state);
181         assertEquals(new StringType("Test-Unit"), state.as(StringType.class));
182
183         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_NUMBER_VALUE, parameter);
184         assertNotNull(state);
185         assertEquals(new DecimalType(22.5), state.as(DecimalType.class));
186
187         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_STRING_VALUE, parameter);
188         assertNotNull(state);
189         assertEquals(new StringType("22.5"), state.as(StringType.class));
190
191         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_SWITCH_VALUE, parameter);
192         assertNotNull(state);
193         assertEquals(OnOffType.ON, state);
194     }
195
196     @Test
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";
204
205         State state = null;
206
207         state = BsbLanParameterConverter.getState(PARAMETER_CHANNEL_UNIT, parameter);
208         assertNotNull(state);
209         assertEquals(new StringType("°C"), state.as(StringType.class));
210     }
211
212     @Test
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));
218     }
219
220     @Test
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("")));
229     }
230
231     @Test
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("")));
242     }
243
244     @Test
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("")));
253     }
254 }