/** * Copyright (c) 2010-2016 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.openhab.binding.lightwaverf.internal; import static org.junit.Assert.*; import java.util.Arrays; import java.util.Collection; import java.util.List; import org.junit.Test; import org.openhab.core.library.items.DimmerItem; import org.openhab.core.library.items.NumberItem; import org.openhab.core.library.items.SwitchItem; public class LightwaveRfGenericBindingProviderTest { private static final String context = ""; @Test public void testProcessBindingConfigurationForDimmer() throws Exception { LightwaveRfGenericBindingProvider bingindProvider = new LightwaveRfGenericBindingProvider(); bingindProvider.processBindingConfiguration(context, new DimmerItem("MyDimmer"), "room=1,device=2,type=DIMMER"); assertEquals(Arrays.asList("MyDimmer"), bingindProvider.getBindingItemsForRoomDevice("1", "2")); assertEquals(Arrays.asList("MyDimmer"), bingindProvider.getItemNames()); assertEquals("1", bingindProvider.getRoomId("MyDimmer")); assertEquals("2", bingindProvider.getDeviceId("MyDimmer")); assertEquals(LightwaveRfType.DIMMER, bingindProvider.getTypeForItemName("MyDimmer")); assertEquals(LightwaveRfItemDirection.IN_AND_OUT, bingindProvider.getDirection("MySwitch")); } @Test public void testProcessBindingConfiguratiLionForInOnly() throws Exception { LightwaveRfGenericBindingProvider bingindProvider = new LightwaveRfGenericBindingProvider(); bingindProvider.processBindingConfiguration(context, new SwitchItem("MySwitch"), "<room=3,device=4,type=SWITCH"); assertEquals(Arrays.asList("MySwitch"), bingindProvider.getBindingItemsForRoomDevice("3", "4")); assertEquals(Arrays.asList("MySwitch"), bingindProvider.getItemNames()); assertEquals("3", bingindProvider.getRoomId("MySwitch")); assertEquals("4", bingindProvider.getDeviceId("MySwitch")); assertEquals(LightwaveRfType.SWITCH, bingindProvider.getTypeForItemName("MySwitch")); assertEquals(LightwaveRfItemDirection.IN_ONLY, bingindProvider.getDirection("MySwitch")); } @Test public void testProcessBindingConfiguratiLionForOutOnly() throws Exception { LightwaveRfGenericBindingProvider bingindProvider = new LightwaveRfGenericBindingProvider(); bingindProvider.processBindingConfiguration(context, new SwitchItem("MySwitch"), ">room=3,device=4,type=SWITCH"); assertEquals(Arrays.asList("MySwitch"), bingindProvider.getBindingItemsForRoomDevice("3", "4")); assertEquals(Arrays.asList("MySwitch"), bingindProvider.getItemNames()); assertEquals("3", bingindProvider.getRoomId("MySwitch")); assertEquals("4", bingindProvider.getDeviceId("MySwitch")); assertEquals(LightwaveRfType.SWITCH, bingindProvider.getTypeForItemName("MySwitch")); assertEquals(LightwaveRfItemDirection.OUT_ONLY, bingindProvider.getDirection("MySwitch")); } @Test public void testProcessBindingConfigurationForSwitch() throws Exception { LightwaveRfGenericBindingProvider bingindProvider = new LightwaveRfGenericBindingProvider(); bingindProvider.processBindingConfiguration(context, new SwitchItem("MySwitch"), "room=3,device=4,type=SWITCH"); assertEquals(Arrays.asList("MySwitch"), bingindProvider.getBindingItemsForRoomDevice("3", "4")); assertEquals(Arrays.asList("MySwitch"), bingindProvider.getItemNames()); assertEquals("3", bingindProvider.getRoomId("MySwitch")); assertEquals("4", bingindProvider.getDeviceId("MySwitch")); assertEquals(LightwaveRfType.SWITCH, bingindProvider.getTypeForItemName("MySwitch")); } @Test public void testProcessBindingConfigurationForHeatingBattery() throws Exception { LightwaveRfGenericBindingProvider bingindProvider = new LightwaveRfGenericBindingProvider(); bingindProvider.processBindingConfiguration(context, new NumberItem("MyBattery"), "room=3,device=4,type=HEATING_BATTERY"); assertEquals(Arrays.asList("MyBattery"), bingindProvider.getBindingItemsForRoomDevice("3", "4")); assertEquals(Arrays.asList("MyBattery"), bingindProvider.getItemNames()); assertEquals("3", bingindProvider.getRoomId("MyBattery")); assertEquals("4", bingindProvider.getDeviceId("MyBattery")); assertEquals(LightwaveRfType.HEATING_BATTERY, bingindProvider.getTypeForItemName("MyBattery")); } @Test public void testRealLifeConfigurationForHeatingBattery() throws Exception { LightwaveRfGenericBindingProvider bingindProvider = new LightwaveRfGenericBindingProvider(); bingindProvider.processBindingConfiguration(context, new NumberItem("MyBattery"), "room=3,device=4,type=HEATING_BATTERY"); bingindProvider.processBindingConfiguration(context, new NumberItem("MyCurrentTemp"), "room=3,device=4,type=HEATING_CURRENT_TEMP"); bingindProvider.processBindingConfiguration(context, new DimmerItem("MyDimmer"), "room=1,device=2,type=DIMMER"); bingindProvider.processBindingConfiguration(context, new SwitchItem("MySwitch"), "room=3,device=3,type=SWITCH"); List<String> expectedNames = Arrays.asList("MyBattery", "MyDimmer", "MySwitch", "MyCurrentTemp"); Collection<String> itemNames = bingindProvider.getItemNames(); assertTrue(expectedNames.size() == itemNames.size() && expectedNames.containsAll(itemNames)); assertEquals(Arrays.asList("MySwitch"), bingindProvider.getBindingItemsForRoomDevice("3", "3")); assertEquals("3", bingindProvider.getRoomId("MySwitch")); assertEquals("3", bingindProvider.getDeviceId("MySwitch")); assertEquals(LightwaveRfType.SWITCH, bingindProvider.getTypeForItemName("MySwitch")); assertEquals(Arrays.asList("MyDimmer"), bingindProvider.getBindingItemsForRoomDevice("1", "2")); assertEquals("1", bingindProvider.getRoomId("MyDimmer")); assertEquals("2", bingindProvider.getDeviceId("MyDimmer")); assertEquals(LightwaveRfType.DIMMER, bingindProvider.getTypeForItemName("MyDimmer")); assertEquals(Arrays.asList("MyBattery", "MyCurrentTemp"), bingindProvider.getBindingItemsForRoomDevice("3", "4")); assertEquals("3", bingindProvider.getRoomId("MyBattery")); assertEquals("4", bingindProvider.getDeviceId("MyBattery")); assertEquals(LightwaveRfType.HEATING_BATTERY, bingindProvider.getTypeForItemName("MyBattery")); assertEquals("3", bingindProvider.getRoomId("MyCurrentTemp")); assertEquals("4", bingindProvider.getDeviceId("MyCurrentTemp")); assertEquals(LightwaveRfType.HEATING_CURRENT_TEMP, bingindProvider.getTypeForItemName("MyCurrentTemp")); } }