TriggerStrategies { public static TriggerStrategy onBecomeTrue(Supplier<Boolean> supplier){ return onBecomeTrue(supplier, null); } private  TriggerStrategies(); static TriggerStrategy onTrue(Supplier<Boolean> supplier); static TriggerStrategy onFalse(Supplier<Boolean> supplier); static TriggerStrategy onBecomeTrue(Supplier<Boolean> supplier); static TriggerStrategy onBecomeTrue(Supplier<Boolean> supplier, Boolean initialValue); static TriggerStrategy onBecomeFalse(Supplier<Boolean> supplier); static TriggerStrategy onBecomeFalse(Supplier<Boolean> supplier, Boolean initialValue); static TriggerStrategy onChange(Supplier<T> supplier); static TriggerStrategy onChange(Supplier<T> supplier, T initialValue); static TriggerStrategy onNull(Supplier<T> supplier); static TriggerStrategy onNotNull(Supplier<T> supplier); static TriggerStrategy always();  }
@Test public void isToBeTriggeredOnBecomeTruePositive() { TriggerStrategy strategy = onBecomeTrue(booleanChannel("val")); strategy.isToBeTriggered(falseValues); boolean result = strategy.isToBeTriggered(trueValues); assertTrue(result); assertTrue(strategy.getChannelIdentifiers().contains("val")); strategy = onBecomeTrue(getSupplier()); result = strategy.isToBeTriggered(nullValues); assertFalse(result); assertTrue(strategy.getChannelIdentifiers().contains("test")); }
@Test public void isToBeTriggeredOnBecomeTrueNegative() { TriggerStrategy strategy = onBecomeTrue(booleanChannel("val")); strategy.isToBeTriggered(trueValues); boolean result = strategy.isToBeTriggered(falseValues); assertFalse(result); assertTrue(strategy.getChannelIdentifiers().contains("val")); }
@Test public void isToBeTriggeredOnBecomeTrueInitialValue() { TriggerStrategy strategy = onBecomeTrue(booleanChannel("val"), false); assertTrue(strategy.getChannelIdentifiers().contains("val")); boolean result = strategy.isToBeTriggered(trueValues); assertTrue(result); }