2 * Copyright (c) 2010-2021 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.openwebnet.internal.handler;
15 import static org.junit.jupiter.api.Assertions.assertEquals;
16 import static org.mockito.Mockito.mock;
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;
34 * Test class for {@link OpenWebNetBridgeHandler#ownID} and ThingID
35 * calculation using {@link OpenWebNetBridgeHandler}
36 * methods: normalizeWhere(), ownIdFromWhoWhere(), ownIdFromMessage(), thingIdFromWhere()
38 * @author Massimo Valla - Initial contribution
39 * @author Andrea Conte - Energy management
42 public class OwnIdTest {
44 private final Logger logger = LoggerFactory.getLogger(OwnIdTest.class);
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
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");
86 private final Logger logger = LoggerFactory.getLogger(TEST.class);
88 public final Where where;
90 public final @Nullable BaseOpenMessage msg;
91 public final String norm, ownId, thingId;
93 private TEST(Where where, Who who, String msg, String norm, String ownId, String thingId) {
96 BaseOpenMessage bmsg = null;
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",
106 this.thingId = thingId;
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));
122 assertEquals(test.ownId, brH.ownIdFromMessage(bmsg));
124 assertEquals(test.thingId, brH.thingIdFromWhere(test.where));