]> git.basschouten.com Git - openhab-addons.git/blob
300a6f2db7468eaf79832e14a2590e8c09a7d225
[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.modbus.e3dc.dto;
14
15 import static org.junit.Assert.*;
16
17 import java.util.Optional;
18
19 import org.junit.Before;
20 import org.junit.Test;
21 import org.openhab.binding.modbus.e3dc.internal.dto.EmergencyBlock;
22 import org.openhab.binding.modbus.e3dc.internal.dto.PowerBlock;
23 import org.openhab.binding.modbus.e3dc.internal.dto.StringBlock;
24 import org.openhab.binding.modbus.e3dc.internal.dto.WallboxArray;
25 import org.openhab.binding.modbus.e3dc.internal.dto.WallboxBlock;
26 import org.openhab.binding.modbus.e3dc.internal.modbus.Data;
27 import org.openhab.binding.modbus.e3dc.internal.modbus.Data.DataType;
28 import org.openhab.binding.modbus.e3dc.internal.modbus.Parser;
29 import org.openhab.core.library.types.OnOffType;
30
31 /**
32  * The {@link DataBlockTest} Test Data Transfer Objects of frequent Data Block
33  *
34  * @author Bernd Weymann - Initial contribution
35  */
36 public class DataBlockTest {
37     private Parser mc;
38
39     @Before
40     public void setup() {
41         byte[] dataBlock = new byte[] { 0, -14, 0, 0, -2, -47, -1, -1, 2, 47, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
42                 0, 0, 0, 0, 99, 99, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
43                 125, 2, 21, 0, 0, 0, 27, 0, 26, 0, 0, 0, 103, 0, -117, 0, 0 };
44         mc = new Parser(DataType.DATA);
45         mc.setArray(dataBlock);
46     }
47
48     @Test
49     public void testValidPowerBlock() {
50         Optional<Data> dataOpt = mc.parse(DataType.POWER);
51         assertTrue(dataOpt.isPresent());
52         PowerBlock b = (PowerBlock) dataOpt.get();
53         assertEquals("PV Supply", "242.0 W", b.pvPowerSupply.toString());
54         assertEquals("Grid Supply", "14.0 W", b.gridPowerSupply.toString());
55         assertEquals("Grid Consumption", "0.0 W", b.gridPowerConsumpition.toString());
56         assertEquals("Battery Supply", "303.0 W", b.batteryPowerSupply.toString());
57     }
58
59     @Test
60     public void testValidWallboxBlock() {
61         Optional<Data> wba = mc.parse(DataType.WALLBOX);
62         assertTrue(wba.isPresent());
63         WallboxArray a = (WallboxArray) wba.get();
64         assertNotNull(a);
65         Optional<WallboxBlock> o = a.getWallboxBlock(0);
66         WallboxBlock b = o.get();
67         assertNotNull(b);
68         assertEquals("Wallbox available", OnOffType.ON, b.wbAvailable);
69         assertEquals("Wallbox Sunmode", OnOffType.ON, b.wbSunmode);
70         assertEquals("Wallbox 1phase", OnOffType.OFF, b.wb1phase);
71         assertEquals("Wallbox charging", OnOffType.OFF, b.wbCharging);
72     }
73
74     @Test
75     public void testValidEmergency() {
76         Optional<Data> dataOpt = mc.parse(DataType.EMERGENCY);
77         assertTrue(dataOpt.isPresent());
78         EmergencyBlock b = (EmergencyBlock) dataOpt.get();
79         assertEquals("EMS Status", EmergencyBlock.EP_NOT_SUPPORTED, b.epStatus.toFullString());
80         assertEquals("Battery charging locked", OnOffType.OFF, b.batteryChargingLocked);
81         assertEquals("Battery discharging locked", OnOffType.OFF, b.batteryDischargingLocked);
82         assertEquals("EP possible", OnOffType.OFF, b.epPossible);
83         assertEquals("Weather Predicted charging", OnOffType.OFF, b.weatherPredictedCharging);
84         assertEquals("Regulation Status", OnOffType.OFF, b.regulationStatus);
85         assertEquals("Charge Lock Time", OnOffType.OFF, b.chargeLockTime);
86         assertEquals("Discharge Lock Time", OnOffType.OFF, b.dischargeLockTime);
87     }
88
89     @Test
90     public void testValidStringDetailsStringBlock() {
91         Optional<Data> dataOpt = mc.parse(DataType.STRINGS);
92         assertTrue(dataOpt.isPresent());
93         StringBlock b = (StringBlock) dataOpt.get();
94         assertEquals("String 1 V", 381, b.string1Volt.intValue());
95         assertEquals("String 1 V", "V", b.string1Volt.getUnit().toString());
96         assertEquals("String 2 V", 533, b.string2Volt.intValue());
97         assertEquals("String 1 V", "V", b.string2Volt.getUnit().toString());
98         assertEquals("String 3 V", 0, b.string3Volt.intValue());
99         assertEquals("String 1 V", "V", b.string3Volt.getUnit().toString());
100
101         assertEquals("String 1 A", 0.27, b.string1Ampere.doubleValue(), 0.01);
102         assertEquals("String 1 A", "A", b.string1Ampere.getUnit().toString());
103         assertEquals("String 2 A", 0.26, b.string2Ampere.doubleValue(), 0.01);
104         assertEquals("String 2 A", "A", b.string2Ampere.getUnit().toString());
105         assertEquals("String 3 A", 0, b.string3Ampere.doubleValue(), 0.01);
106         assertEquals("String 3 A", "A", b.string3Ampere.getUnit().toString());
107
108         assertEquals("String 1 W", 103, b.string1Watt.intValue());
109         assertEquals("String 1 W", "W", b.string1Watt.getUnit().toString());
110         assertEquals("String 2 W", 139, b.string2Watt.intValue());
111         assertEquals("String 2 W", "W", b.string2Watt.getUnit().toString());
112         assertEquals("String 3 W", 0, b.string3Watt.intValue());
113         assertEquals("String 3 W", "W", b.string3Watt.getUnit().toString());
114     }
115
116     @Test
117     public void testInvalidInfoblock() {
118         Optional<Data> infoOpt = mc.parse(DataType.INFO);
119         assertFalse(infoOpt.isPresent());
120     }
121 }