import org.openhab.binding.digitalstrom.internal.lib.structure.devices.GeneralDeviceInformation;
import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.DeviceSceneSpec;
import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.DeviceStateUpdate;
+import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.ApplicationGroup;
import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.ChangeableDeviceConfigEnum;
import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.DeviceBinarayInputEnum;
import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.OutputModeEnum;
checkOutputChannel();
} else if (this.device.isBlind()) {
// load channel for set the angle of jalousie devices
- String channelTypeID = DsChannelTypeProvider.getOutputChannelTypeID(
- ((Device) device).getFunctionalColorGroup().getColor(), ((Device) device).getOutputMode(),
- ((Device) device).getOutputChannels());
+ ApplicationGroup.Color color = ((Device) device).getFunctionalColorGroup() != null
+ ? ((Device) device).getFunctionalColorGroup().getColor()
+ : null;
+ String channelTypeID = DsChannelTypeProvider.getOutputChannelTypeID(color,
+ ((Device) device).getOutputMode(), ((Device) device).getOutputChannels());
loadOutputChannel(new ChannelTypeUID(BINDING_ID, channelTypeID),
DsChannelTypeProvider.getItemType(channelTypeID));
}
if (!device.isDeviceWithOutput()) {
loadOutputChannel(null, null);
}
- String channelTypeID = DsChannelTypeProvider.getOutputChannelTypeID(device.getFunctionalColorGroup().getColor(),
- device.getOutputMode(), device.getOutputChannels());
+ ApplicationGroup.Color color = device.getFunctionalColorGroup() != null
+ ? device.getFunctionalColorGroup().getColor()
+ : null;
+ String channelTypeID = DsChannelTypeProvider.getOutputChannelTypeID(color, device.getOutputMode(),
+ device.getOutputChannels());
logger.debug("load channel: typeID={}, itemType={}",
DsChannelTypeProvider.getOutputChannelTypeID(device.getFunctionalColorGroup().getColor(),
device.getOutputMode(), device.getOutputChannels()),
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.*;
+import static org.junit.jupiter.api.Assertions.assertNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
+import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.ApplicationGroup;
import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.OutputChannelEnum;
import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.OutputModeEnum;
import org.openhab.binding.digitalstrom.internal.lib.util.JsonModel;
assertThat(deviceImpl.isBlind(), is(true));
}
+ @Test
+ @DisplayName("No functional color group set, expect a null value returned")
+ void noFunctionalColorGroupSet() {
+ DeviceImpl deviceImpl = new DeviceImpl(new JsonObject());
+ ApplicationGroup functionalColorGroup = deviceImpl.getFunctionalColorGroup();
+ assertNull(functionalColorGroup);
+ }
+
+ @Test
+ @DisplayName("Multiple functional color groups set, expect the first group returned which had previously been added")
+ void multipleFunctionalColorGroupSet() {
+ DeviceImpl deviceImpl = new DeviceImpl(new JsonObject());
+ deviceImpl.addGroup(ApplicationGroup.JOKER.getId());
+ deviceImpl.addGroup(ApplicationGroup.ACCESS.getId());
+
+ assertThat(deviceImpl.getFunctionalColorGroup(), is(ApplicationGroup.JOKER));
+ }
+
private static JsonObject createJsonObject(OutputModeEnum outputMode, List<OutputChannel> channels) {
JsonModel model = new JsonModel(outputMode.getMode(), channels);