/** * 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.maxcube.internal.message; import static junit.framework.Assert.*; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Before; import org.junit.Test; /** * @author Dominic Lerbs * @since 1.8.0 */ public class L_MessageTest { private static final String rawData = "L:BgVPngkSEAsLhBkJEhkLJQDAAAsLhwwJEhkRJwDKAAYO8ZIJEhAGBU+kCRIQCwxuRPEaGQMmAMcACwxuQwkSGQgnAM8ACwQd5t0SGQ0oAMsA"; private final Map<String, Device> testDevices = new HashMap<String, Device>(); private L_Message message; private final List<Configuration> configurations = new ArrayList<Configuration>(); @Before public void setUp() { message = new L_Message(rawData); createTestDevices(); } private void createTestDevices() { addShutterContact("054f9e"); addShutterContact("0ef192"); addShutterContact("054fa4"); addHeatingThermostat("0b8419"); addHeatingThermostat("0b870c"); addHeatingThermostat("0c6e43"); addHeatingThermostat("041de6"); addHeatingThermostat("0c6e44").setError(true); } private ShutterContact addShutterContact(String rfAddress) { ShutterContact device = new ShutterContact(createConfiguration(DeviceType.ShutterContact, rfAddress)); testDevices.put(rfAddress, device); return device; } private HeatingThermostat addHeatingThermostat(String rfAddress) { HeatingThermostat device = new HeatingThermostat(createConfiguration(DeviceType.HeatingThermostat, rfAddress)); testDevices.put(rfAddress, device); return device; } private Configuration createConfiguration(DeviceType type, String rfAddress) { Configuration configuration = Configuration.create(new DeviceInformation(type, "", rfAddress, "", 1)); configurations.add(configuration); return configuration; } @Test public void isCorrectMessageType() { MessageType messageType = ((Message) message).getType(); assertEquals(MessageType.L, messageType); } @Test public void allDevicesCreatedFromMessage() { Collection<? extends Device> devices = message.getDevices(configurations); assertEquals("Incorrect number of devices created", testDevices.size(), devices.size()); for (Device device : devices) { assertTrue("Unexpected device created: " + device.getRFAddress(), testDevices.containsKey(device.getRFAddress())); } } @Test public void isCorrectErrorState() { Collection<? extends Device> devices = message.getDevices(configurations); for (Device device : devices) { Device testDevice = testDevices.get(device.getRFAddress()); assertEquals("Error set incorrectly in Device", testDevice.isError(), device.isError()); } } }