Package org.openhab.binding.homematic.test.state

Source Code of org.openhab.binding.homematic.test.state.ConverterTest

/**
* Copyright (c) 2010-2014, openHAB.org and others.
*
* 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.homematic.test.state;

import junit.framework.Assert;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.reflect.FieldUtils;
import org.junit.Test;
import org.openhab.binding.homematic.internal.converter.state.DecimalTypeConverter;
import org.openhab.binding.homematic.internal.converter.state.OnOffTypeConverter;
import org.openhab.binding.homematic.internal.converter.state.OpenClosedTypeConverter;
import org.openhab.binding.homematic.internal.converter.state.PercentTypeConverter;
import org.openhab.binding.homematic.internal.converter.state.StringTypeConverter;
import org.openhab.binding.homematic.internal.model.HmChannel;
import org.openhab.binding.homematic.internal.model.HmDatapoint;
import org.openhab.binding.homematic.internal.model.HmDevice;
import org.openhab.binding.homematic.internal.model.HmVariable;
import org.openhab.binding.homematic.internal.model.adapter.TypeGuessAdapter;
import org.openhab.binding.homematic.internal.model.adapter.ValueListAdapter;
import org.openhab.core.library.types.DecimalType;
import org.openhab.core.library.types.IncreaseDecreaseType;
import org.openhab.core.library.types.OnOffType;
import org.openhab.core.library.types.OpenClosedType;
import org.openhab.core.library.types.PercentType;
import org.openhab.core.library.types.StringType;
import org.openhab.core.library.types.UpDownType;

/**
* Testcases for the converter framework of the Homematic binding.
*
* @author Gerhard Riegler
* @since 1.5.0
*/

public class ConverterTest {
  private HmDatapoint getRollerShutterDatapoint(String name, Object value) throws Exception {
    return getDatapoint(name, value, 0.0d, 1.0d, "HM-LC-Bl1-FM");
  }

  private HmDatapoint getDatapoint(String name, Object value) throws Exception {
    return getDatapoint(name, value, 0, 0);
  }

  private HmDatapoint getDatapoint(String name, Object value, Number min, Number max) throws Exception {
    return getDatapoint(name, value, min, max, null);
  }

  private HmDatapoint getDatapoint(String name, Object value, Number min, Number max, String deviceType)
      throws Exception {
    return getDatapoint(name, value, min, max, "1", deviceType);
  }

  private HmDatapoint getDatapoint(String name, Object value, Number min, Number max, String channelNumber,
      String deviceType) throws Exception {
    HmDatapoint dp = new HmDatapoint();

    FieldUtils.writeField(dp, "name", name, true);
    FieldUtils.writeField(dp, "minValue", min, true);
    FieldUtils.writeField(dp, "maxValue", max, true);

    Object convertedValue = new TypeGuessAdapter().unmarshal(value == null ? null : value.toString());
    if (convertedValue instanceof Boolean) {
      FieldUtils.writeField(dp, "valueType", 2, true);
    } else if (convertedValue instanceof Integer) {
      FieldUtils.writeField(dp, "valueType", 8, true);
    } else if (convertedValue instanceof Double) {
      FieldUtils.writeField(dp, "valueType", 4, true);
    } else {
      FieldUtils.writeField(dp, "valueType", -1, true);
    }

    dp.setValue(convertedValue);

    HmChannel channel = new HmChannel();
    FieldUtils.writeField(dp, "channel", channel, true);
    FieldUtils.writeField(channel, "number", channelNumber, true);

    HmDevice device = new HmDevice();
    FieldUtils.writeField(device, "type", StringUtils.defaultString(deviceType, ""), true);

    FieldUtils.writeField(channel, "device", device, true);
    return dp;
  }

  private HmVariable getValueListVariable(Object value, String valueList) throws Exception {
    HmVariable var = new HmVariable();

    FieldUtils.writeField(var, "name", "Var", true);

    FieldUtils.writeField(var, "valueType", 16, true);
    FieldUtils.writeField(var, "subType", 29, true);

    Object convertedValueList = new ValueListAdapter().unmarshal(valueList == null ? null : valueList.toString());
    FieldUtils.writeField(var, "valueList", convertedValueList, true);

    var.setValue(value);

    return var;
  }

  @Test
  public void testOnOffTypeConverterFromBinding() throws Exception {
    OnOffTypeConverter converter = new OnOffTypeConverter();
    Assert.assertEquals(OnOffType.ON, converter.convertFromBinding(getDatapoint("PRESS_SHORT", true)));
    Assert.assertEquals(OnOffType.OFF, converter.convertFromBinding(getDatapoint("PRESS_SHORT", false)));

    Assert.assertEquals(OnOffType.ON, converter.convertFromBinding(getDatapoint("SENSOR", false)));
    Assert.assertEquals(OnOffType.OFF, converter.convertFromBinding(getDatapoint("SENSOR", true)));

    Assert.assertEquals(OnOffType.ON, converter.convertFromBinding(getDatapoint("LEVEL", true)));
    Assert.assertEquals(OnOffType.OFF, converter.convertFromBinding(getDatapoint("LEVEL", false)));

    Assert.assertEquals(OnOffType.ON, converter.convertFromBinding(getDatapoint("LEVEL", 1.0)));
    Assert.assertEquals(OnOffType.OFF, converter.convertFromBinding(getDatapoint("LEVEL", 0.0)));

    Assert.assertEquals(OnOffType.ON, converter.convertFromBinding(getDatapoint("LEVEL", 1)));
    Assert.assertEquals(OnOffType.OFF, converter.convertFromBinding(getDatapoint("LEVEL", 0)));

    Assert.assertEquals(OnOffType.ON, converter.convertFromBinding(getDatapoint("STATE", true)));
    Assert.assertEquals(OnOffType.OFF, converter.convertFromBinding(getDatapoint("STATE", false)));

    Assert.assertEquals(OnOffType.ON, converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "HM-Sec-SC")));
    Assert.assertEquals(OnOffType.OFF, converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "HM-Sec-SC")));

    Assert.assertEquals(OnOffType.ON,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "HM-Sec-SC-2")));
    Assert.assertEquals(OnOffType.OFF,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "HM-Sec-SC-2")));

    Assert.assertEquals(OnOffType.ON,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "ZEL STG RM FFK")));
    Assert.assertEquals(OnOffType.OFF,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "ZEL STG RM FFK")));

    Assert.assertEquals(OnOffType.ON,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "HM-Sec-TiS")));
    Assert.assertEquals(OnOffType.OFF,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "HM-Sec-TiS")));

    Assert.assertEquals(OnOffType.ON,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "14", "HMW-IO-12-Sw14-DR")));
    Assert.assertEquals(OnOffType.OFF,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "14", "HMW-IO-12-Sw14-DR")));

    Assert.assertEquals(OnOffType.ON,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "15", "HMW-IO-12-Sw14-DR")));
    Assert.assertEquals(OnOffType.OFF,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "15", "HMW-IO-12-Sw14-DR")));

    Assert.assertEquals(OnOffType.ON,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "15", "BC-SC-Rd-WM")));
    Assert.assertEquals(OnOffType.OFF,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "15", "BC-SC-Rd-WM")));

    Assert.assertEquals(OnOffType.ON,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "15", "BC-SC-Rd-WM-2")));
    Assert.assertEquals(OnOffType.OFF,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "15", "BC-SC-Rd-WM-2")));

    Assert.assertEquals(OnOffType.ON,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "HM-SCI-3-FM")));
    Assert.assertEquals(OnOffType.OFF,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "HM-SCI-3-FM")));

    Assert.assertEquals(OnOffType.ON, converter.convertFromBinding(getDatapoint("LEVEL", "on")));
    Assert.assertEquals(OnOffType.OFF, converter.convertFromBinding(getDatapoint("LEVEL", "off")));

    Assert.assertEquals(OnOffType.OFF, converter.convertFromBinding(getRollerShutterDatapoint("LEVEL", 1.0)));
    Assert.assertEquals(OnOffType.ON, converter.convertFromBinding(getRollerShutterDatapoint("LEVEL", 0.0)));

    Assert.assertEquals(OnOffType.ON, converter.convertFromBinding(getRollerShutterDatapoint("LEVEL", 0.1)));
    Assert.assertEquals(OnOffType.ON, converter.convertFromBinding(getRollerShutterDatapoint("LEVEL", 0.9)));
  }

  @Test
  public void testOnOffTypeConverterToBinding() throws Exception {
    OnOffTypeConverter converter = new OnOffTypeConverter();
    Assert.assertEquals(true, converter.convertToBinding(OnOffType.ON, getDatapoint("PRESS_SHORT", true)));
    Assert.assertEquals(false, converter.convertToBinding(OnOffType.OFF, getDatapoint("PRESS_SHORT", false)));

    Assert.assertEquals("ON", converter.convertToBinding(OnOffType.ON, getDatapoint("LEVEL", "")));
    Assert.assertEquals("OFF", converter.convertToBinding(OnOffType.OFF, getDatapoint("LEVEL", "")));

    Assert.assertEquals(1, converter.convertToBinding(OnOffType.ON, getDatapoint("LEVEL", 1, 0, 1)));
    Assert.assertEquals(0, converter.convertToBinding(OnOffType.OFF, getDatapoint("LEVEL", 0)));

    Assert.assertEquals(5, converter.convertToBinding(OnOffType.ON, getDatapoint("LEVEL", 5, 0, 5)));
    Assert.assertEquals(0, converter.convertToBinding(OnOffType.OFF, getDatapoint("LEVEL", 0)));

    Assert.assertEquals(0, converter.convertToBinding(OnOffType.OFF, getDatapoint("LEVEL", 1, 0, 5)));
    Assert.assertEquals(0, converter.convertToBinding(OnOffType.OFF, getDatapoint("LEVEL", 4, 0, 5)));

    Assert.assertEquals(true, converter.convertToBinding(OnOffType.ON, getDatapoint("STATE", true)));
    Assert.assertEquals(false, converter.convertToBinding(OnOffType.OFF, getDatapoint("STATE", false)));

    Assert.assertEquals(false, converter.convertToBinding(OnOffType.ON, getDatapoint("SENSOR", true)));
    Assert.assertEquals(true, converter.convertToBinding(OnOffType.OFF, getDatapoint("SENSOR", false)));

    Assert.assertEquals(true, converter.convertToBinding(OnOffType.ON, getDatapoint("STATE", true)));
    Assert.assertEquals(false, converter.convertToBinding(OnOffType.OFF, getDatapoint("STATE", false)));

    Assert.assertEquals(false,
        converter.convertToBinding(OnOffType.ON, getDatapoint("STATE", true, 0, 0, "HM-Sec-SC")));
    Assert.assertEquals(true,
        converter.convertToBinding(OnOffType.OFF, getDatapoint("STATE", false, 0, 0, "HM-Sec-SC")));

    Assert.assertEquals(false,
        converter.convertToBinding(OnOffType.ON, getDatapoint("STATE", true, 0, 0, "HM-Sec-SC-2")));
    Assert.assertEquals(true,
        converter.convertToBinding(OnOffType.OFF, getDatapoint("STATE", false, 0, 0, "HM-Sec-SC-2")));

    Assert.assertEquals(false,
        converter.convertToBinding(OnOffType.ON, getDatapoint("STATE", true, 0, 0, "ZEL STG RM FFK")));
    Assert.assertEquals(true,
        converter.convertToBinding(OnOffType.OFF, getDatapoint("STATE", false, 0, 0, "ZEL STG RM FFK")));

    Assert.assertEquals(false,
        converter.convertToBinding(OnOffType.ON, getDatapoint("STATE", true, 0, 0, "HM-Sec-TiS")));
    Assert.assertEquals(true,
        converter.convertToBinding(OnOffType.OFF, getDatapoint("STATE", false, 0, 0, "HM-Sec-TiS")));

    Assert.assertEquals(true,
        converter.convertToBinding(OnOffType.ON, getDatapoint("STATE", true, 0, 0, "14", "HMW-IO-12-Sw14-DR")));
    Assert.assertEquals(false, converter.convertToBinding(OnOffType.OFF,
        getDatapoint("STATE", false, 0, 0, "14", "HMW-IO-12-Sw14-DR")));

    Assert.assertEquals(false,
        converter.convertToBinding(OnOffType.ON, getDatapoint("STATE", true, 0, 0, "15", "HMW-IO-12-Sw14-DR")));
    Assert.assertEquals(true, converter.convertToBinding(OnOffType.OFF,
        getDatapoint("STATE", false, 0, 0, "15", "HMW-IO-12-Sw14-DR")));

    Assert.assertEquals(false,
        converter.convertToBinding(OnOffType.ON, getDatapoint("STATE", true, 0, 0, "BC-SC-Rd-WM")));
    Assert.assertEquals(true,
        converter.convertToBinding(OnOffType.OFF, getDatapoint("STATE", false, 0, 0, "BC-SC-Rd-WM")));

    Assert.assertEquals(false,
        converter.convertToBinding(OnOffType.ON, getDatapoint("STATE", true, 0, 0, "BC-SC-Rd-WM-2")));
    Assert.assertEquals(true,
        converter.convertToBinding(OnOffType.OFF, getDatapoint("STATE", false, 0, 0, "BC-SC-Rd-WM-2")));

    Assert.assertEquals(false,
        converter.convertToBinding(OnOffType.ON, getDatapoint("STATE", true, 0, 0, "HM-SCI-3-FM")));
    Assert.assertEquals(true,
        converter.convertToBinding(OnOffType.OFF, getDatapoint("STATE", false, 0, 0, "HM-SCI-3-FM")));

    Assert.assertEquals(1.0, converter.convertToBinding(OnOffType.ON, getRollerShutterDatapoint("LEVEL", 0.0)));
    Assert.assertEquals(0.0, converter.convertToBinding(OnOffType.OFF, getRollerShutterDatapoint("LEVEL", 0.0)));
  }

  @Test
  public void testOpenClosedTypeConverterFromBinding() throws Exception {
    OpenClosedTypeConverter converter = new OpenClosedTypeConverter();
    Assert.assertEquals(OpenClosedType.CLOSED, converter.convertFromBinding(getDatapoint("PRESS_SHORT", true)));
    Assert.assertEquals(OpenClosedType.OPEN, converter.convertFromBinding(getDatapoint("PRESS_SHORT", false)));

    Assert.assertEquals(OpenClosedType.CLOSED, converter.convertFromBinding(getDatapoint("SENSOR", false)));
    Assert.assertEquals(OpenClosedType.OPEN, converter.convertFromBinding(getDatapoint("SENSOR", true)));

    Assert.assertEquals(OpenClosedType.CLOSED, converter.convertFromBinding(getDatapoint("STATE", true)));
    Assert.assertEquals(OpenClosedType.OPEN, converter.convertFromBinding(getDatapoint("STATE", false)));

    Assert.assertEquals(OpenClosedType.CLOSED,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "HM-Sec-SC")));
    Assert.assertEquals(OpenClosedType.OPEN,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "HM-Sec-SC")));

    Assert.assertEquals(OpenClosedType.CLOSED,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "HM-Sec-SC-2")));
    Assert.assertEquals(OpenClosedType.OPEN,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "HM-Sec-SC-2")));

    Assert.assertEquals(OpenClosedType.CLOSED,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "ZEL STG RM FFK")));
    Assert.assertEquals(OpenClosedType.OPEN,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "ZEL STG RM FFK")));

    Assert.assertEquals(OpenClosedType.CLOSED,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "HM-Sec-TiS")));
    Assert.assertEquals(OpenClosedType.OPEN,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "HM-Sec-TiS")));

    Assert.assertEquals(OpenClosedType.CLOSED,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "14", "HMW-IO-12-Sw14-DR")));
    Assert.assertEquals(OpenClosedType.OPEN,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "14", "HMW-IO-12-Sw14-DR")));

    Assert.assertEquals(OpenClosedType.CLOSED,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "15", "HMW-IO-12-Sw14-DR")));
    Assert.assertEquals(OpenClosedType.OPEN,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "15", "HMW-IO-12-Sw14-DR")));

    Assert.assertEquals(OpenClosedType.CLOSED,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "15", "BC-SC-Rd-WM")));
    Assert.assertEquals(OpenClosedType.OPEN,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "15", "BC-SC-Rd-WM")));

    Assert.assertEquals(OpenClosedType.CLOSED,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "15", "BC-SC-Rd-WM-2")));
    Assert.assertEquals(OpenClosedType.OPEN,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "15", "BC-SC-Rd-WM-2")));

    Assert.assertEquals(OpenClosedType.CLOSED,
        converter.convertFromBinding(getDatapoint("STATE", false, 0, 0, "15", "HM-SCI-3-FM")));
    Assert.assertEquals(OpenClosedType.OPEN,
        converter.convertFromBinding(getDatapoint("STATE", true, 0, 0, "15", "HM-SCI-3-FM")));

    Assert.assertEquals(OpenClosedType.OPEN, converter.convertFromBinding(getDatapoint("STATE", false)));
    Assert.assertEquals(OpenClosedType.CLOSED, converter.convertFromBinding(getDatapoint("STATE", true)));

    Assert.assertEquals(OpenClosedType.CLOSED, converter.convertFromBinding(getDatapoint("LEVEL", true)));
    Assert.assertEquals(OpenClosedType.OPEN, converter.convertFromBinding(getDatapoint("LEVEL", false)));

    Assert.assertEquals(OpenClosedType.OPEN, converter.convertFromBinding(getDatapoint("LEVEL", 1.0)));
    Assert.assertEquals(OpenClosedType.CLOSED, converter.convertFromBinding(getDatapoint("LEVEL", 0.0)));

    Assert.assertEquals(OpenClosedType.OPEN, converter.convertFromBinding(getDatapoint("LEVEL", 1)));
    Assert.assertEquals(OpenClosedType.CLOSED, converter.convertFromBinding(getDatapoint("LEVEL", 0)));

    Assert.assertEquals(OpenClosedType.CLOSED, converter.convertFromBinding(getDatapoint("LEVEL", "closed")));
    Assert.assertEquals(OpenClosedType.OPEN, converter.convertFromBinding(getDatapoint("LEVEL", "open")));

    Assert.assertEquals(OpenClosedType.OPEN, converter.convertFromBinding(getRollerShutterDatapoint("LEVEL", 1.0)));
    Assert.assertEquals(OpenClosedType.CLOSED,
        converter.convertFromBinding(getRollerShutterDatapoint("LEVEL", 0.0)));

    Assert.assertEquals(OpenClosedType.OPEN, converter.convertFromBinding(getRollerShutterDatapoint("LEVEL", 0.1)));
    Assert.assertEquals(OpenClosedType.OPEN, converter.convertFromBinding(getRollerShutterDatapoint("LEVEL", 0.9)));
  }

  @Test
  public void testOpenClosedTypeConverterToBinding() throws Exception {
    OpenClosedTypeConverter converter = new OpenClosedTypeConverter();
    Assert.assertEquals(true, converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("PRESS_SHORT", true)));
    Assert.assertEquals(false, converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("PRESS_SHORT", false)));

    Assert.assertEquals("CLOSED", converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("LEVEL", "")));
    Assert.assertEquals("OPEN", converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("LEVEL", "")));

    Assert.assertEquals(1, converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("LEVEL", 1, 0, 1)));
    Assert.assertEquals(0, converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("LEVEL", 0)));

    Assert.assertEquals(5, converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("LEVEL", 5, 0, 5)));
    Assert.assertEquals(0, converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("LEVEL", 0)));

    Assert.assertEquals(5, converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("LEVEL", 1, 0, 5)));
    Assert.assertEquals(5, converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("LEVEL", 4, 0, 5)));

    Assert.assertEquals(false, converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("SENSOR", true)));
    Assert.assertEquals(true, converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("SENSOR", false)));

    Assert.assertEquals(false,
        converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("STATE", true, 0, 0, "HM-Sec-SC")));
    Assert.assertEquals(true,
        converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("STATE", false, 0, 0, "HM-Sec-SC")));

    Assert.assertEquals(false,
        converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("STATE", true, 0, 0, "HM-Sec-SC-2")));
    Assert.assertEquals(true,
        converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("STATE", false, 0, 0, "HM-Sec-SC")));

    Assert.assertEquals(false,
        converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("STATE", true, 0, 0, "ZEL STG RM FFK")));
    Assert.assertEquals(true,
        converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("STATE", false, 0, 0, "ZEL STG RM FFK")));

    Assert.assertEquals(false,
        converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("STATE", true, 0, 0, "HM-Sec-TiS")));
    Assert.assertEquals(true,
        converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("STATE", false, 0, 0, "HM-Sec-TiS")));

    Assert.assertEquals(
        true,
        converter.convertToBinding(OpenClosedType.CLOSED,
            getDatapoint("STATE", true, 0, 0, "14", "HMW-IO-12-Sw14-DR")));
    Assert.assertEquals(
        false,
        converter.convertToBinding(OpenClosedType.OPEN,
            getDatapoint("STATE", false, 0, 0, "14", "HMW-IO-12-Sw14-DR")));

    Assert.assertEquals(
        false,
        converter.convertToBinding(OpenClosedType.CLOSED,
            getDatapoint("STATE", true, 0, 0, "15", "HMW-IO-12-Sw14-DR")));
    Assert.assertEquals(
        true,
        converter.convertToBinding(OpenClosedType.OPEN,
            getDatapoint("STATE", false, 0, 0, "15", "HMW-IO-12-Sw14-DR")));

    Assert.assertEquals(false,
        converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("STATE", true, 0, 0, "BC-SC-Rd-WM")));
    Assert.assertEquals(true,
        converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("STATE", false, 0, 0, "BC-SC-Rd-WM")));
   
    Assert.assertEquals(false,
        converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("STATE", true, 0, 0, "BC-SC-Rd-WM-2")));
    Assert.assertEquals(true,
        converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("STATE", false, 0, 0, "BC-SC-Rd-WM-2")));
   
    Assert.assertEquals(false,
        converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("STATE", true, 0, 0, "HM-SCI-3-FM")));
    Assert.assertEquals(true,
        converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("STATE", false, 0, 0, "HM-SCI-3-FM")));
   
    Assert.assertEquals(true, converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("STATE", true)));
    Assert.assertEquals(false, converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("STATE", false)));

    Assert.assertEquals(false, converter.convertToBinding(OpenClosedType.CLOSED, getDatapoint("SENSOR", false)));
    Assert.assertEquals(true, converter.convertToBinding(OpenClosedType.OPEN, getDatapoint("SENSOR", true)));

    Assert.assertEquals(1.0,
        converter.convertToBinding(OpenClosedType.OPEN, getRollerShutterDatapoint("LEVEL", 0.0)));
    Assert.assertEquals(0.0,
        converter.convertToBinding(OpenClosedType.CLOSED, getRollerShutterDatapoint("LEVEL", 0.0)));
  }

  @Test
  public void testDecimalTypeConverterFromBinding() throws Exception {
    DecimalTypeConverter converter = new DecimalTypeConverter();
    Assert.assertEquals(new DecimalType(1), converter.convertFromBinding(getDatapoint("PRESS_SHORT", 1)));
    Assert.assertEquals(new DecimalType(0), converter.convertFromBinding(getDatapoint("PRESS_SHORT", 0)));

    Assert.assertEquals(new DecimalType(1), converter.convertFromBinding(getDatapoint("PRESS_SHORT", true, 0, 1)));
    Assert.assertEquals(new DecimalType(5), converter.convertFromBinding(getDatapoint("PRESS_SHORT", true, 0, 5)));
    Assert.assertEquals(new DecimalType(5.4).doubleValue(),
        converter.convertFromBinding(getDatapoint("PRESS_SHORT", true, 0.0, 5.4)).doubleValue());
    Assert.assertEquals(new DecimalType(0), converter.convertFromBinding(getDatapoint("PRESS_SHORT", false, 0, 1)));

    Assert.assertEquals(new DecimalType(1), converter.convertFromBinding(getDatapoint("SENSOR", 1)));
    Assert.assertEquals(new DecimalType(0), converter.convertFromBinding(getDatapoint("SENSOR", 0)));

    Assert.assertEquals(new DecimalType(1.0).doubleValue(), converter
        .convertFromBinding(getDatapoint("LEVEL", 1.0)).doubleValue());
    Assert.assertEquals(new DecimalType(3.4).doubleValue(), converter
        .convertFromBinding(getDatapoint("LEVEL", 3.4)).doubleValue());

    Assert.assertEquals(new DecimalType(9876.678957).doubleValue(),
        converter.convertFromBinding(getDatapoint("LEVEL", 9876.6789568)).doubleValue());

    Assert.assertEquals(new DecimalType(5.3).doubleValue(),
        converter.convertFromBinding(getDatapoint("LEVEL", "true", 0.0, 5.3)).doubleValue());
    Assert.assertEquals(new DecimalType(0.0).doubleValue(),
        converter.convertFromBinding(getDatapoint("LEVEL", "false", 0.0, 5.3)).doubleValue());

    Assert.assertEquals(new DecimalType(1.0).doubleValue(), converter
        .convertFromBinding(getDatapoint("LEVEL", "1")).doubleValue());
    Assert.assertEquals(new DecimalType(1.0).doubleValue(),
        converter.convertFromBinding(getDatapoint("LEVEL", "1.0")).doubleValue());
    Assert.assertEquals(new DecimalType(9876.678957).doubleValue(),
        converter.convertFromBinding(getDatapoint("LEVEL", "9876.6789568")).doubleValue());

    Assert.assertEquals(new DecimalType(1.0).doubleValue(),
        converter.convertFromBinding(getRollerShutterDatapoint("LEVEL", 1.0)).doubleValue());
    Assert.assertEquals(new DecimalType(0.0).doubleValue(), converter
        .convertFromBinding(getDatapoint("LEVEL", 0.0)).doubleValue());
  }

  @Test
  public void testDecimalTypeConverterToBinding() throws Exception {
    DecimalTypeConverter converter = new DecimalTypeConverter();

    Assert.assertEquals(true,
        converter.convertToBinding(new DecimalType(1), getDatapoint("PRESS_SHORT", true, 0, 1)));
    Assert.assertEquals(false,
        converter.convertToBinding(new DecimalType(0), getDatapoint("PRESS_SHORT", true, 0, 1)));

    Assert.assertEquals(true, converter.convertToBinding(new DecimalType(5), getDatapoint("LEVEL", true, 0, 5)));
    Assert.assertEquals(false, converter.convertToBinding(new DecimalType(4), getDatapoint("LEVEL", true, 0, 5)));
    Assert.assertEquals(false, converter.convertToBinding(new DecimalType(0), getDatapoint("LEVEL", true, 0, 1)));

    Assert.assertEquals(true, converter.convertToBinding(new DecimalType(1), getDatapoint("LEVEL", "true", 0, 1)));
    Assert.assertEquals(false, converter.convertToBinding(new DecimalType(0), getDatapoint("LEVEL", "false", 0, 1)));

    Assert.assertEquals(1, converter.convertToBinding(new DecimalType(1), getDatapoint("LEVEL", 0)));
    Assert.assertEquals(1.0, converter.convertToBinding(new DecimalType(1), getDatapoint("LEVEL", 0.0)));
    Assert.assertEquals(9876.678957,
        converter.convertToBinding(new DecimalType(9876.6789568), getDatapoint("LEVEL", 0.0)));

    Assert.assertEquals("1.0", converter.convertToBinding(new DecimalType(1), getDatapoint("LEVEL", "text")));

    Assert.assertEquals(0.5,
        converter.convertToBinding(new DecimalType(0.5), getRollerShutterDatapoint("LEVEL", 0.0)));
    Assert.assertEquals(0.4,
        converter.convertToBinding(new DecimalType(0.4), getRollerShutterDatapoint("LEVEL", 0.0)));
  }

  @Test
  public void testPercentTypeConverterFromBinding() throws Exception {
    PercentTypeConverter converter = new PercentTypeConverter();
    Assert.assertEquals(new PercentType(100), converter.convertFromBinding(getDatapoint("PRESS_SHORT", 1, 0, 1)));
    Assert.assertEquals(new PercentType(0), converter.convertFromBinding(getDatapoint("PRESS_SHORT", 0, 0, 1)));

    Assert.assertEquals(new PercentType(100), converter.convertFromBinding(getDatapoint("PRESS_SHORT", true, 0, 1)));
    Assert.assertEquals(new PercentType(100), converter.convertFromBinding(getDatapoint("PRESS_SHORT", true, 0, 5)));
    Assert.assertEquals(new PercentType(100),
        converter.convertFromBinding(getDatapoint("PRESS_SHORT", true, 0.0, 5.4)));
    Assert.assertEquals(new PercentType(0), converter.convertFromBinding(getDatapoint("PRESS_SHORT", false, 0, 1)));

    Assert.assertEquals(new PercentType(100), converter.convertFromBinding(getDatapoint("SENSOR", 1, 0, 1)));
    Assert.assertEquals(new PercentType(0), converter.convertFromBinding(getDatapoint("SENSOR", 0, 0, 1)));

    Assert.assertEquals(new PercentType(100), converter.convertFromBinding(getDatapoint("LEVEL", 1.0, 0.0, 1.0)));
    Assert.assertEquals(new PercentType(100), converter.convertFromBinding(getDatapoint("LEVEL", 3.4, 0.0, 3.4)));

    Assert.assertEquals(new PercentType(40), converter.convertFromBinding(getDatapoint("LEVEL", 0.4, 0.0, 1.0)));
    Assert.assertEquals(new PercentType(80), converter.convertFromBinding(getDatapoint("LEVEL", 0.8, 0.0, 1.0)));

    Assert.assertEquals(new PercentType(60), converter.convertFromBinding(getRollerShutterDatapoint("LEVEL", 0.4)));
    Assert.assertEquals(new PercentType(20), converter.convertFromBinding(getRollerShutterDatapoint("LEVEL", 0.8)));

    Assert.assertEquals(new PercentType(20), converter.convertFromBinding(getDatapoint("LEVEL", 50, 0, 250)));
    Assert.assertEquals(new PercentType(20), converter.convertFromBinding(getDatapoint("LEVEL", 50.0, 0.0, 250.0)));

    Assert.assertEquals(new PercentType(20), converter.convertFromBinding(getDatapoint("LEVEL", "50", 0, 250)));
    Assert.assertEquals(new PercentType(20),
        converter.convertFromBinding(getDatapoint("LEVEL", "50.0", 0.0, 250.0)));
  }

  @Test
  public void testPercentTypeConverterToBinding() throws Exception {
    PercentTypeConverter converter = new PercentTypeConverter();

    Assert.assertEquals(true,
        converter.convertToBinding(new PercentType(100), getDatapoint("PRESS_SHORT", true, 0, 1)));
    Assert.assertEquals(false,
        converter.convertToBinding(new PercentType(0), getDatapoint("PRESS_SHORT", false, 0, 1)));

    Assert.assertEquals(1, converter.convertToBinding(new PercentType(100), getDatapoint("SENSOR", 1, 0, 1)));
    Assert.assertEquals(0, converter.convertToBinding(new PercentType(0), getDatapoint("SENSOR", 0, 0, 1)));

    Assert.assertEquals(0.5, converter.convertToBinding(new PercentType(50), getDatapoint("LEVEL", 0.0, 0, 1)));
    Assert.assertEquals(0.2, converter.convertToBinding(new PercentType(20), getDatapoint("LEVEL", 0.0, 0, 1)));
    Assert.assertEquals(50, converter.convertToBinding(new PercentType(20), getDatapoint("LEVEL", 0, 0, 250)));
    Assert.assertEquals(50, converter.convertToBinding(new PercentType(20), getDatapoint("LEVEL", 0, 0, 250)));

    Assert.assertEquals("50.0",
        converter.convertToBinding(new PercentType(20), getDatapoint("LEVEL", "text", 0, 250)));
    Assert.assertEquals("50.0",
        converter.convertToBinding(new PercentType(20), getDatapoint("LEVEL", "text", 0, 250)));

    Assert.assertEquals(0.0,
        converter.convertToBinding(new PercentType(100), getRollerShutterDatapoint("LEVEL", 0.0)));
    Assert.assertEquals(1.0,
        converter.convertToBinding(new PercentType(0), getRollerShutterDatapoint("LEVEL", 0.0)));
    Assert.assertEquals(0.2,
        converter.convertToBinding(new PercentType(80), getRollerShutterDatapoint("LEVEL", 0.0)));

    Assert.assertEquals(0.0,
        converter.convertToBinding(IncreaseDecreaseType.INCREASE, getRollerShutterDatapoint("LEVEL", 0.1)));
    Assert.assertEquals(0.3,
        converter.convertToBinding(IncreaseDecreaseType.DECREASE, getRollerShutterDatapoint("LEVEL", 0.2)));

    Assert.assertEquals(20,
        converter.convertToBinding(IncreaseDecreaseType.INCREASE, getDatapoint("LEVEL", 10, 0, 100)));
    Assert.assertEquals(40,
        converter.convertToBinding(IncreaseDecreaseType.DECREASE, getDatapoint("LEVEL", 50, 0, 100)));

    Assert.assertEquals(100,
        converter.convertToBinding(IncreaseDecreaseType.INCREASE, getDatapoint("LEVEL", 100, 0, 100)));
    Assert.assertEquals(0,
        converter.convertToBinding(IncreaseDecreaseType.DECREASE, getDatapoint("LEVEL", 0, 0, 100)));

    Assert.assertEquals(100, converter.convertToBinding(OnOffType.ON, getDatapoint("LEVEL", 10, 0, 100)));
    Assert.assertEquals(90, converter.convertToBinding(OnOffType.ON, getDatapoint("LEVEL", 10, 0, 90)));
    Assert.assertEquals(0, converter.convertToBinding(OnOffType.OFF, getDatapoint("LEVEL", 10, 0, 90)));

    Assert.assertEquals(0.0, converter.convertToBinding(OnOffType.ON, getRollerShutterDatapoint("LEVEL", 0.0)));
    Assert.assertEquals(1.0, converter.convertToBinding(OnOffType.OFF, getRollerShutterDatapoint("LEVEL", 0.0)));

    Assert.assertEquals(100, converter.convertToBinding(UpDownType.UP, getDatapoint("LEVEL", 10, 0, 100)));
    Assert.assertEquals(90, converter.convertToBinding(UpDownType.UP, getDatapoint("LEVEL", 10, 0, 90)));
    Assert.assertEquals(0, converter.convertToBinding(UpDownType.DOWN, getDatapoint("LEVEL", 10, 0, 90)));

    Assert.assertEquals(0.0, converter.convertToBinding(UpDownType.DOWN, getRollerShutterDatapoint("LEVEL", 0.0)));
    Assert.assertEquals(1.0, converter.convertToBinding(UpDownType.UP, getRollerShutterDatapoint("LEVEL", 0.0)));
  }

  @Test
  public void testValueListByString() throws Exception {
    StringTypeConverter converter = new StringTypeConverter();

    Assert.assertEquals(new StringType("0"),
        converter.convertFromBinding(getValueListVariable("0", "0;10;20;30;40;50")));
    Assert.assertEquals(new StringType("10"),
        converter.convertFromBinding(getValueListVariable("1", "0;10;20;30;40;50")));
    Assert.assertEquals(new StringType("50"),
        converter.convertFromBinding(getValueListVariable("5", "0;10;20;30;40;50")));

    Assert.assertEquals(new StringType("6"),
        converter.convertFromBinding(getValueListVariable("6", "0;10;20;30;40;50")));

    Assert.assertEquals(new StringType("10"),
        converter.convertFromBinding(getValueListVariable(1, "0;10;20;30;40;50")));
    Assert.assertEquals(new StringType("6"),
        converter.convertFromBinding(getValueListVariable(6, "0;10;20;30;40;50")));

    Assert.assertEquals(new StringType("two"), converter.convertFromBinding(getValueListVariable(1, "one;two")));

    Assert.assertEquals(new StringType("one"), converter.convertFromBinding(getValueListVariable(false, "one;two")));

    Assert.assertEquals(new StringType("two"), converter.convertFromBinding(getValueListVariable(true, "one;two")));

    Assert.assertEquals("0",
        converter.convertToBinding(new StringType("0"), getValueListVariable("", "0;10;20;30;40;50")));
    Assert.assertEquals("1",
        converter.convertToBinding(new StringType("10"), getValueListVariable("", "0;10;20;30;40;50")));
    Assert.assertEquals("5",
        converter.convertToBinding(new StringType("50"), getValueListVariable("", "0;10;20;30;40;50")));
    Assert.assertEquals("2",
        converter.convertToBinding(new StringType("three"), getValueListVariable("", "one;two;three")));

    Assert.assertEquals("2",
        converter.convertToBinding(new StringType("three"), getValueListVariable("1", "one;two;three")));

    Assert.assertEquals(2,
        converter.convertToBinding(new StringType("three"), getValueListVariable(1, "one;two;three")));

    Assert.assertEquals(false,
        converter.convertToBinding(new StringType("one"), getValueListVariable(false, "one;two")));

    Assert.assertEquals(true,
        converter.convertToBinding(new StringType("two"), getValueListVariable(true, "one;two")));
  }

  @Test
  public void testValueListByNumber() throws Exception {
    DecimalTypeConverter converter = new DecimalTypeConverter();

    Assert.assertEquals(new DecimalType(0),
        converter.convertFromBinding(getValueListVariable(0, "0;10;20;30;40;50")));
    Assert.assertEquals(new DecimalType(1),
        converter.convertFromBinding(getValueListVariable(1, "0;10;20;30;40;50")));
    Assert.assertEquals(new DecimalType(5),
        converter.convertFromBinding(getValueListVariable(5, "0;10;20;30;40;50")));
    Assert.assertEquals(new DecimalType(6),
        converter.convertFromBinding(getValueListVariable(6, "0;10;20;30;40;50")));
    Assert.assertEquals(new DecimalType(1), converter.convertFromBinding(getValueListVariable(1, "one;two;three")));
    Assert.assertEquals(new DecimalType(1),
        converter.convertFromBinding(getValueListVariable("1", "one;two;three")));
    Assert.assertEquals(new DecimalType(1),
        converter.convertFromBinding(getValueListVariable(true, "one;two;three")));
    Assert.assertEquals(new DecimalType(0),
        converter.convertFromBinding(getValueListVariable(false, "one;two;three")));

    Assert.assertEquals(0,
        converter.convertToBinding(new DecimalType("0"), getValueListVariable(0, "0;10;20;30;40;50")));
    Assert.assertEquals(10,
        converter.convertToBinding(new DecimalType("10"), getValueListVariable(0, "0;10;20;30;40;50")));
    Assert.assertEquals(50,
        converter.convertToBinding(new DecimalType("50"), getValueListVariable(0, "0;10;20;30;40;50")));
    Assert.assertEquals(60,
        converter.convertToBinding(new DecimalType("60"), getValueListVariable(0, "0;10;20;30;40;50")));
    Assert.assertEquals(60,
        converter.convertToBinding(new DecimalType("60"), getValueListVariable(1, "0;10;20;30;40;50")));

    Assert.assertEquals(1,
        converter.convertToBinding(new DecimalType("1"), getValueListVariable(1, "one;two;three")));

    Assert.assertEquals("1.0",
        converter.convertToBinding(new DecimalType("1"), getValueListVariable("1", "one;two;three")));
    Assert.assertEquals(true,
        converter.convertToBinding(new DecimalType("1"), getValueListVariable(true, "one;two;three")));
    Assert.assertEquals(false,
        converter.convertToBinding(new DecimalType("0"), getValueListVariable(true, "one;two;three")));
  }
}
TOP

Related Classes of org.openhab.binding.homematic.test.state.ConverterTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.