@Test public void addStartStopRemove() throws Exception { LifecycleManager underTest = new LifecycleManager(); LifecycleSupport foo = new LifecycleSupport(); LifecycleSupport bar = new LifecycleSupport(); assertState(underTest, State.NEW); assertState(foo, State.NEW); assertState(bar, State.NEW); underTest.add(foo); assertThat(underTest.size(), is(1)); underTest.add(bar); assertThat(underTest.size(), is(2)); underTest.start(); assertState(underTest, State.STARTED); assertState(foo, State.STARTED); assertState(bar, State.STARTED); underTest.stop(); assertState(underTest, State.STOPPED); assertState(foo, State.STOPPED); assertState(bar, State.STOPPED); underTest.remove(foo); assertThat(underTest.size(), is(1)); underTest.remove(bar); assertThat(underTest.size(), is(0)); }