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.sensibo.internal.dto;
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;
20 import java.io.IOException;
21 import java.time.ZonedDateTime;
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;
33 * @author Arne Seime - Initial contribution
35 public class GetPodDetailsResponseTest extends AbstractSerializationDeserializationTest {
38 public void testDeserializeWithSmartModeSetup() throws IOException {
39 final PodDetailsDTO rsp = wireHelper.deSerializeResponse("/get_pod_details_response_smartmode_settings.json",
42 assertEquals("34:15:13:AA:AA:AA", rsp.macAddress);
46 public void testDeserializeNullpointerExample() throws IOException {
47 final PodDetailsDTO rsp = wireHelper.deSerializeResponse("/get_pod_details_response_nullpointer.json",
49 SensiboSky internal = new SensiboSky(rsp);
51 assertEquals("50175457", internal.getSerialNumber());
55 public void testDeserialize() throws IOException {
56 final PodDetailsDTO rsp = wireHelper.deSerializeResponse("/get_pod_details_response.json", PodDetailsDTO.class);
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());
69 private void assertRemoteCapabilities(final Map<String, ModeCapabilityDTO> remoteCapabilities) {
70 assertNotNull(remoteCapabilities);
72 assertEquals(5, remoteCapabilities.size());
73 final ModeCapabilityDTO mode = remoteCapabilities.get("heat");
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);
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);
93 private void assertAcState(final AcStateDTO acState) {
94 assertNotNull(acState);
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);