]> git.basschouten.com Git - openhab-addons.git/blob
4ee923552c7f8cee37a97130dc6c7f3e4024591e
[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.sensibo.internal.dto;
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.junit.Assert.assertTrue;
19
20 import java.io.IOException;
21 import java.time.ZonedDateTime;
22 import java.util.Map;
23
24 import org.junit.Test;
25 import org.openhab.binding.sensibo.internal.dto.poddetails.AcStateDTO;
26 import org.openhab.binding.sensibo.internal.dto.poddetails.MeasurementDTO;
27 import org.openhab.binding.sensibo.internal.dto.poddetails.ModeCapabilityDTO;
28 import org.openhab.binding.sensibo.internal.dto.poddetails.PodDetailsDTO;
29 import org.openhab.binding.sensibo.internal.dto.poddetails.TemperatureDTO;
30 import org.openhab.binding.sensibo.internal.model.SensiboSky;
31
32 /**
33  * @author Arne Seime - Initial contribution
34  */
35 public class GetPodDetailsResponseTest extends AbstractSerializationDeserializationTest {
36
37     @Test
38     public void testDeserializeWithSmartModeSetup() throws IOException {
39         final PodDetailsDTO rsp = wireHelper.deSerializeResponse("/get_pod_details_response_smartmode_settings.json",
40                 PodDetailsDTO.class);
41
42         assertEquals("34:15:13:AA:AA:AA", rsp.macAddress);
43     }
44
45     @Test
46     public void testDeserializeNullpointerExample() throws IOException {
47         final PodDetailsDTO rsp = wireHelper.deSerializeResponse("/get_pod_details_response_nullpointer.json",
48                 PodDetailsDTO.class);
49         SensiboSky internal = new SensiboSky(rsp);
50
51         assertEquals("50175457", internal.getSerialNumber());
52     }
53
54     @Test
55     public void testDeserialize() throws IOException {
56         final PodDetailsDTO rsp = wireHelper.deSerializeResponse("/get_pod_details_response.json", PodDetailsDTO.class);
57
58         assertEquals("MA:C:AD:DR:ES:S0", rsp.macAddress);
59         assertEquals("IN010056", rsp.firmwareVersion);
60         assertEquals("cc3100_stm32f0", rsp.firmwareType);
61         assertEquals("SERIALNUMASSTRING", rsp.serialNumber);
62         assertEquals("C", rsp.temperatureUnit);
63         assertEquals("skyv2", rsp.productModel);
64         assertAcState(rsp.acState);
65         assertMeasurement(rsp.lastMeasurement);
66         assertRemoteCapabilities(rsp.getRemoteCapabilities());
67     }
68
69     private void assertRemoteCapabilities(final Map<String, ModeCapabilityDTO> remoteCapabilities) {
70         assertNotNull(remoteCapabilities);
71
72         assertEquals(5, remoteCapabilities.size());
73         final ModeCapabilityDTO mode = remoteCapabilities.get("heat");
74
75         assertNotNull(mode.swingModes);
76         assertNotNull(mode.fanLevels);
77         assertNotNull(mode.temperatures);
78         final Map<String, TemperatureDTO> temperatures = mode.temperatures;
79         final TemperatureDTO temperature = temperatures.get("C");
80         assertNotNull(temperature);
81         assertNotNull(temperature.validValues);
82     }
83
84     private void assertMeasurement(final MeasurementDTO lastMeasurement) {
85         assertNotNull(lastMeasurement);
86         assertNull(lastMeasurement.batteryVoltage);
87         assertEquals(Double.valueOf("22.5"), lastMeasurement.temperature);
88         assertEquals(Double.valueOf("24.2"), lastMeasurement.humidity);
89         assertEquals(Integer.valueOf("-71"), lastMeasurement.wifiSignalStrength);
90         assertEquals(ZonedDateTime.parse("2019-05-05T07:52:11Z"), lastMeasurement.measurementTimestamp.time);
91     }
92
93     private void assertAcState(final AcStateDTO acState) {
94         assertNotNull(acState);
95
96         assertTrue(acState.on);
97         assertEquals("medium_high", acState.fanLevel);
98         assertEquals("C", acState.temperatureUnit);
99         assertEquals(21, acState.targetTemperature.intValue());
100         assertEquals("heat", acState.mode);
101         assertEquals("rangeFull", acState.swing);
102     }
103 }