package io.lumify.core.util; import com.google.common.base.Joiner; import org.junit.Test; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.assertEquals; public class AutoDependencyTreeRunnerTest { private List<String> foundOrder = new ArrayList<String>(); private Runnable a = new FoundOrderRunnable(foundOrder, "a"); private Runnable b = new FoundOrderRunnable(foundOrder, "b"); private Runnable c = new FoundOrderRunnable(foundOrder, "c"); private Runnable d = new FoundOrderRunnable(foundOrder, "d"); private Runnable e = new FoundOrderRunnable(foundOrder, "e"); @Test public void testInOrder() { foundOrder.clear(); AutoDependencyTreeRunner tree = new AutoDependencyTreeRunner(); tree.add(a, b, c); tree.add(c, d); tree.add(c, e); tree.run(); assertEquals("a,b,c,d,e", Joiner.on(',').join(foundOrder)); } @Test public void testOutOfOrder() { foundOrder.clear(); AutoDependencyTreeRunner tree = new AutoDependencyTreeRunner(); tree.add(c, d); tree.add(c, e); tree.add(a, b, c); tree.run(); assertEquals("a,b,c,d,e", Joiner.on(',').join(foundOrder)); } private static class FoundOrderRunnable implements Runnable { private final List<String> foundOrder; private final String name; public FoundOrderRunnable(List<String> foundOrder, String name) { this.foundOrder = foundOrder; this.name = name; } @Override public void run() { this.foundOrder.add(this.name); } } }