use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class GroupItemTest method assertThatGroupItemwithDimmeritemAcceptsGetsPercentTypeStateIfMembersHavePercentTypeStates.
@Test
public void assertThatGroupItemwithDimmeritemAcceptsGetsPercentTypeStateIfMembersHavePercentTypeStates() {
events.clear();
GroupItem groupItem = new GroupItem("root", new DimmerItem("myDimmer"), new ArithmeticGroupFunction.Avg());
groupItem.setItemStateConverter(itemStateConverter);
DimmerItem member1 = new DimmerItem("dimmer1");
groupItem.addMember(member1);
DimmerItem member2 = new DimmerItem("dimmer2");
groupItem.addMember(member2);
groupItem.setEventPublisher(publisher);
member1.setState(new PercentType(50));
waitForAssert(() -> assertThat(events.size(), is(1)));
List<Event> changes = events.stream().filter(it -> it instanceof GroupItemStateChangedEvent).collect(Collectors.toList());
GroupItemStateChangedEvent change = (GroupItemStateChangedEvent) changes.get(0);
assertTrue(change.getItemName().equals(groupItem.getName()));
State newEventState = change.getItemState();
assertTrue(newEventState instanceof PercentType);
assertThat(((PercentType) newEventState).intValue(), is(50));
State newGroupState = groupItem.getState();
assertTrue(newGroupState instanceof PercentType);
assertThat(((PercentType) newGroupState).intValue(), is(50));
events.clear();
member2.setState(new PercentType(10));
waitForAssert(() -> assertThat(events.size(), is(1)));
changes = events.stream().filter(it -> it instanceof GroupItemStateChangedEvent).collect(Collectors.toList());
assertThat(changes.size(), is(1));
change = (GroupItemStateChangedEvent) changes.get(0);
assertTrue(change.getItemName().equals(groupItem.getName()));
newEventState = change.getItemState();
assertTrue(newEventState instanceof PercentType);
assertThat(((PercentType) newEventState).intValue(), is(30));
newGroupState = groupItem.getState();
assertTrue(newGroupState instanceof PercentType);
assertThat(((PercentType) newGroupState).intValue(), is(30));
}
use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class GroupItemTest method assertThatGroupItemWithRollershutterBaseItemConversionWorks.
@Test
public void assertThatGroupItemWithRollershutterBaseItemConversionWorks() {
// initially this group has State UndefType.NULL
GroupItem groupItem = new GroupItem("root", new RollershutterItem("myRollerShutter"));
State groupStateAsOnOff = groupItem.getStateAs(OnOffType.class);
// a state conversion from NULL to OnOffType should not be possible
assertNull(groupStateAsOnOff);
// init group
groupItem.setState(new PercentType(70));
groupStateAsOnOff = groupItem.getStateAs(OnOffType.class);
// any value >0 means on, so 50% means the group state should be ON
assertTrue(OnOffType.ON.equals(groupStateAsOnOff));
}
use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class GroupItemTest method assertThatGroupItemWithColoritemBaseItemConversionWorks.
@Test
public void assertThatGroupItemWithColoritemBaseItemConversionWorks() {
// initially this group has State UndefType.NULL
GroupItem groupItem = new GroupItem("root", new ColorItem("myColor"));
State groupStateAsPercent = groupItem.getStateAs(PercentType.class);
// a state conversion from NULL to PercentType should not be possible
assertNull(groupStateAsPercent);
// init group
groupItem.setState(new HSBType("200,80,80"));
groupStateAsPercent = groupItem.getStateAs(PercentType.class);
assertTrue(groupStateAsPercent instanceof PercentType);
assertThat(((PercentType) groupStateAsPercent).intValue(), is(80));
}
use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class GroupItemTest method assertThatGroupItemPostsEventsForChangesCorrectly.
@Test
public void assertThatGroupItemPostsEventsForChangesCorrectly() {
// from ItemEventFactory.GROUPITEM_STATE_CHANGED_EVENT_TOPIC
String GROUPITEM_STATE_CHANGED_EVENT_TOPIC = "smarthome/items/{itemName}/{memberName}/statechanged";
events.clear();
GroupItem groupItem = new GroupItem("root", new SwitchItem("mySwitch"), new GroupFunction.Equality());
groupItem.setItemStateConverter(itemStateConverter);
SwitchItem member = new SwitchItem("member1");
groupItem.addMember(member);
groupItem.setEventPublisher(publisher);
State oldGroupState = groupItem.getState();
// State changes -> one change event is fired
member.setState(OnOffType.ON);
waitForAssert(() -> assertThat(events.size(), is(1)));
List<Event> changes = events.stream().filter(it -> it instanceof GroupItemStateChangedEvent).collect(Collectors.toList());
assertThat(changes.size(), is(1));
GroupItemStateChangedEvent change = (GroupItemStateChangedEvent) changes.get(0);
assertTrue(change.getItemName().equals(groupItem.getName()));
assertTrue(change.getMemberName().equals(member.getName()));
assertTrue(change.getTopic().equals(GROUPITEM_STATE_CHANGED_EVENT_TOPIC.replace("{memberName}", member.getName()).replace("{itemName}", groupItem.getName())));
assertTrue(change.getItemState().equals(groupItem.getState()));
assertTrue(change.getOldItemState().equals(oldGroupState));
events.clear();
// State doesn't change -> no events are fired
member.setState(member.getState());
assertThat(events.size(), is(0));
}
use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class DimmerItemTest method getState.
private static BigDecimal getState(final Item item, Class<? extends State> typeClass) {
final State state = item.getStateAs(typeClass);
final String str = state.toString();
final BigDecimal result = new BigDecimal(str);
return result;
}
Aggregations