package de.galan.verjson.core; import static org.assertj.core.api.Assertions.*; import java.util.List; import org.junit.Test; import com.google.common.collect.Lists; /** * CUT StepSequencer fillIncrements() * * @author daniel */ public class StepSequencerArrangeTest extends AbstractStepSequencerParent { @Test public void incEmpty() throws Exception { List<ProxyStep> proxies = Lists.newArrayList(); List<ProxyStep> results = ss.fillIncrements(proxies); assertIncrements(results, n(1)); } @Test public void incV1() throws Exception { List<ProxyStep> proxies = Lists.newArrayList(v(1)); List<ProxyStep> results = ss.fillIncrements(proxies); assertIncrements(results, v(1)); } @Test public void incT1() throws Exception { List<ProxyStep> proxies = Lists.newArrayList(t(1)); List<ProxyStep> results = ss.fillIncrements(proxies); assertIncrements(results, t(1), i(1), n(2)); } @Test public void incV2() throws Exception { List<ProxyStep> proxies = Lists.newArrayList(v(2)); List<ProxyStep> results = ss.fillIncrements(proxies); assertIncrements(results, i(1), v(2)); } @Test public void incT2() throws Exception { List<ProxyStep> proxies = Lists.newArrayList(t(2)); List<ProxyStep> results = ss.fillIncrements(proxies); assertIncrements(results, i(1), t(2), i(2), n(3)); } @Test public void incV3() throws Exception { List<ProxyStep> proxies = Lists.newArrayList(v(3)); List<ProxyStep> results = ss.fillIncrements(proxies); assertIncrements(results, i(1), i(2), v(3)); } @Test public void incT3() throws Exception { List<ProxyStep> proxies = Lists.newArrayList(t(3)); List<ProxyStep> results = ss.fillIncrements(proxies); assertIncrements(results, i(1), i(2), t(3), i(3), n(4)); } @Test public void incV1T3() throws Exception { List<ProxyStep> proxies = Lists.newArrayList(v(1), t(3)); List<ProxyStep> results = ss.fillIncrements(proxies); assertIncrements(results, v(1), i(1), i(2), t(3), i(3), n(4)); } @Test public void incT2V5() throws Exception { List<ProxyStep> proxies = Lists.newArrayList(t(2), v(5)); List<ProxyStep> results = ss.fillIncrements(proxies); assertIncrements(results, i(1), t(2), i(2), i(3), i(4), v(5)); } @Test public void incT2T5() throws Exception { List<ProxyStep> proxies = Lists.newArrayList(t(2), t(5)); List<ProxyStep> results = ss.fillIncrements(proxies); assertIncrements(results, i(1), t(2), i(2), i(3), i(4), t(5), i(5), n(6)); } @Test public void incComplex() throws Exception { List<ProxyStep> proxies = Lists.newArrayList(v(1), t(1), v(2), t(2), t(3), v(4), t(6)); List<ProxyStep> results = ss.fillIncrements(proxies); assertIncrements(results, v(1), t(1), i(1), v(2), t(2), i(2), t(3), i(3), v(4), i(4), i(5), t(6), i(6), n(7)); } protected void assertIncrements(List<ProxyStep> results, ProxyStep... proxies) { assertThat(results).hasSameSizeAs(proxies); for (int i = 0; i < results.size(); i++) { ProxyStep r = results.get(i); ProxyStep e = proxies[i]; assertThat(e.getStep().getClass()).isAssignableFrom(r.getStep().getClass()); assertThat(e.getSourceVersion()).isEqualTo(r.getSourceVersion()); } } }