package com.spotify.heroic.lifecycle;
import com.google.common.collect.ImmutableList;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.util.stream.Stream;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.verify;
@RunWith(MockitoJUnitRunner.class)
public class LifeCycleTest {
@Mock
LifeCycle a;
@Mock
LifeCycle b;
@Mock
LifeCycle c;
@Test
public void emptyTest() {
LifeCycle.empty().install();
}
@Test
public void manyLifeCycleTest() {
final LifeCycle combined = LifeCycle.combined(ImmutableList.of(a, b));
final LifeCycle all = LifeCycle.combined(ImmutableList.of(combined, c, LifeCycle.empty()));
assertTrue(all instanceof ManyLifeCycle);
final ManyLifeCycle many = (ManyLifeCycle) all;
assertEquals(ImmutableList.of(a, b, c), many.getLifeCycles());
assertEquals("+[a, b, c]", many.toString());
many.install();
verify(a).install();
verify(b).install();
verify(c).install();
assertEquals(LifeCycle.combined(
Stream.<LifeCycle>builder().add(combined).add(c).add(LifeCycle.empty()).build()), all);
}
}