]> git.basschouten.com Git - openhab-addons.git/blob
3fc51cb5464cc8d3e4c04b44fc51ce1403d11c62
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2021 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.openwebnet.internal.handler;
14
15 import static org.junit.jupiter.api.Assertions.assertEquals;
16 import static org.mockito.Mockito.mock;
17
18 import org.eclipse.jdt.annotation.NonNullByDefault;
19 import org.eclipse.jdt.annotation.Nullable;
20 import org.junit.jupiter.api.Test;
21 import org.openhab.core.thing.Bridge;
22 import org.openwebnet4j.message.BaseOpenMessage;
23 import org.openwebnet4j.message.FrameException;
24 import org.openwebnet4j.message.Where;
25 import org.openwebnet4j.message.WhereEnergyManagement;
26 import org.openwebnet4j.message.WhereLightAutom;
27 import org.openwebnet4j.message.WhereThermo;
28 import org.openwebnet4j.message.WhereZigBee;
29 import org.openwebnet4j.message.Who;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32
33 /**
34  * Test class for {@link OpenWebNetBridgeHandler#ownID} and ThingID
35  * calculation using {@link OpenWebNetBridgeHandler}
36  * methods: normalizeWhere(), ownIdFromWhoWhere(), ownIdFromMessage(), thingIdFromWhere()
37  *
38  * @author Massimo Valla - Initial contribution
39  * @author Andrea Conte - Energy management
40  */
41 @NonNullByDefault
42 public class OwnIdTest {
43
44     private final Logger logger = LoggerFactory.getLogger(OwnIdTest.class);
45
46  // @formatter:off
47     /**
48      *
49      *                                      deviceWhere
50      *                                      (DevAddrParam)
51      * TYPE                 WHERE           = normalizeWhere()  ownId           ThingID
52      * ---------------------------------------------------------------------------------
53      * Zigbee Switch        789309801#9     789309800h9         1.789309800h9   789309800h9
54      * Zigbee Switch_2u u1  789301201#9     789301200h9         1.789309800h9   789309800h9
55      * Zigbee Switch_2u u2  789301202#9     789301200h9         1.789309800h9   789309800h9
56      * BUS Switch           51              51                  1.51            51
57      * BUS Local Bus        25#4#01         25h4h01             1.25h4h01       25h4h01
58      * BUS Autom            93              93                  2.93            93
59      * BUS Thermo           #1 or 1         1                   4.1             1
60      * BUS Thermo actuator  1#2             1                   4.1             1
61      * BUS TempSensor       500             500                 4.500           500
62      * BUS Energy           51              51                  18.51           51
63      * -INACTIVE- BUS CEN              51              51                  15.51           51
64      * -INACTIVE- BUS CEN+             212             212                 25.212          212
65      * -INACTIVE- BUS DryContact       399             399                 25.399          399
66      *
67      */
68 // @formatter:on
69
70     public enum TEST {
71         // @formatter:off
72         zb_switch(new WhereZigBee("789309801#9"), Who.fromValue(1), "*1*1*789309801#9##", "789309800h9", "1.789309800h9", "789309800h9"),
73         zb_switch_2u_1(new WhereZigBee("789301201#9"), Who.fromValue(1), "*1*1*789301201#9##", "789301200h9", "1.789301200h9", "789301200h9"),
74         zb_switch_2u_2(new WhereZigBee("789301202#9"), Who.fromValue(1), "*1*1*789301202#9##", "789301200h9", "1.789301200h9", "789301200h9"),
75         bus_switch(new WhereLightAutom("51"), Who.fromValue(1), "*1*1*51##", "51", "1.51", "51"),
76         bus_localbus(new WhereLightAutom("25#4#01"), Who.fromValue(1), "*1*1*25#4#01##", "25h4h01", "1.25h4h01", "25h4h01"),
77         bus_autom(new WhereLightAutom("93"), Who.fromValue(2), "*2*0*93##", "93", "2.93", "93"),
78         bus_thermo_via_cu(new WhereThermo("#1"), Who.fromValue(4),"*#4*#1*0*0020##" ,"1", "4.1", "1"),
79         bus_thermo(new WhereThermo("1"), Who.fromValue(4),"*#4*1*0*0020##" , "1", "4.1", "1"),
80         bus_thermo_act(new WhereThermo("1#2"), Who.fromValue(4),"*#4*1#2*20*0##" ,"1", "4.1", "1"),
81         bus_tempSensor(new WhereThermo("500"), Who.fromValue(4), "*#4*500*15*1*0020*0001##", "500", "4.500", "500"),
82         bus_energy(new WhereEnergyManagement("51"), Who.fromValue(18), "*#18*51*113##", "51", "18.51", "51");
83
84         // @formatter:on
85
86         private final Logger logger = LoggerFactory.getLogger(TEST.class);
87
88         public final Where where;
89         public final Who who;
90         public final @Nullable BaseOpenMessage msg;
91         public final String norm, ownId, thingId;
92
93         private TEST(Where where, Who who, String msg, String norm, String ownId, String thingId) {
94             this.where = where;
95             this.who = who;
96             BaseOpenMessage bmsg = null;
97             try {
98                 bmsg = (BaseOpenMessage) BaseOpenMessage.parse(msg);
99             } catch (FrameException e) {
100                 logger.warn("something is wrong in the test table ({}). ownIdFromMessage test will be skipped",
101                         e.getMessage());
102             }
103             this.msg = bmsg;
104             this.norm = norm;
105             this.ownId = ownId;
106             this.thingId = thingId;
107         }
108     }
109
110     @Test
111     public void testOwnId() {
112         Bridge mockBridge = mock(Bridge.class);
113         OpenWebNetBridgeHandler brH = new OpenWebNetBridgeHandler(mockBridge);
114         BaseOpenMessage bmsg;
115         for (int i = 0; i < TEST.values().length; i++) {
116             TEST test = TEST.values()[i];
117             logger.info("testing where={}", test.where);
118             assertEquals(test.norm, brH.normalizeWhere(test.where));
119             assertEquals(test.ownId, brH.ownIdFromWhoWhere(test.who, test.where));
120             bmsg = test.msg;
121             if (bmsg != null) {
122                 assertEquals(test.ownId, brH.ownIdFromMessage(bmsg));
123             }
124             assertEquals(test.thingId, brH.thingIdFromWhere(test.where));
125         }
126     }
127 }