package org.ggp.base.util.gdl.model; import java.util.List; import java.util.Set; import org.junit.Assert; import org.junit.Test; import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; public class DependencyGraphsTest extends Assert { @Test public void testSafeToposort() throws Exception { Set<Integer> allElements = Sets.newHashSet(1, 2, 3, 4, 5, 6, 7, 8); Multimap<Integer, Integer> graph = HashMultimap.create(); graph.put(2, 1); graph.put(3, 2); graph.put(4, 2); graph.put(5, 3); graph.put(5, 4); graph.put(3, 4); graph.put(4, 3); graph.put(4, 6); graph.put(6, 7); graph.put(7, 8); graph.put(8, 3); List<Set<Integer>> ordering = DependencyGraphs.toposortSafe(allElements, graph); assertEquals(4, ordering.size()); assertEquals(ImmutableSet.of(1), ordering.get(0)); assertEquals(ImmutableSet.of(2), ordering.get(1)); assertEquals(ImmutableSet.of(3, 4, 6, 7, 8), ordering.get(2)); assertEquals(ImmutableSet.of(5), ordering.get(3)); } }