/**
* 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.exec.internal;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.openhab.binding.exec.internal.ExecGenericBindingProvider.ExecBindingConfig;
import org.openhab.core.library.items.SwitchItem;
import org.openhab.core.library.types.OnOffType;
import org.openhab.core.library.types.StringType;
import org.openhab.model.item.binding.BindingConfigParseException;
import junit.framework.Assert;
/**
* @author Thomas.Eichstaedt-Engelen
* @since 0.6.0
*/
public class ExecGenericBindingProviderTest {
private ExecGenericBindingProvider provider;
@Before
public void init() {
provider = new ExecGenericBindingProvider();
}
@Test
public void testParseBindingConfig() throws BindingConfigParseException {
ExecBindingConfig config = new ExecGenericBindingProvider.ExecBindingConfig();
String bindingConfig = "ON:some command to execute, OFF: 'other command with comma\\, and \\'quotes\\' and slashes \\\\ ', *:and a fallback";
SwitchItem item = new SwitchItem("");
provider.parseLegacyOutBindingConfig(item, bindingConfig, config);
Assert.assertEquals(3, config.size());
Assert.assertEquals("some command to execute", config.get(OnOffType.ON).commandLine);
Assert.assertEquals("other command with comma, and 'quotes' and slashes \\ ",
config.get(OnOffType.OFF).commandLine);
Assert.assertEquals("and a fallback", config.get(StringType.valueOf("*")).commandLine);
}
@Test
public void testParseBindingConfigIn() throws BindingConfigParseException {
String cmdLine = "/usr/bin/uptime";
String itemName = "Switch";
SwitchItem item = new SwitchItem(itemName);
String bindingConfig = "<[" + cmdLine + ":60000:]";
provider.processBindingConfiguration("New", item, bindingConfig);
Assert.assertTrue(provider.providesBinding());
Assert.assertTrue(provider.providesBindingFor(itemName));
Assert.assertEquals(cmdLine, provider.getCommandLine(itemName));
Assert.assertEquals(60000, provider.getRefreshInterval(itemName));
Assert.assertEquals("", provider.getTransformation(itemName));
List<String> itemNames = provider.getInBindingItemNames();
Assert.assertEquals(itemName, itemNames.get(0));
}
}