import graphlib.util.Graphs; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import graphlib.graphs.UndirectedGraph; import graphlib.nodes.Node; public class SimpleTest { private static CollatzGraphMaker cgm; @BeforeAll public static void init() { cgm = new CollatzGraphMaker(); } @Test public void testSingle() { UndirectedGraph graph = new UndirectedGraph<>(); graph.addNode(5L); Assertions.assertEquals(1, cgm.connectedComponents(Graphs.unmodifiableUndirectedGraph(graph))); } @Test public void testPair() { UndirectedGraph graph = new UndirectedGraph<>(); Node a = graph.addNode(0L), b = graph.addNode(1L); graph.addEdge(a, b); Assertions.assertEquals(1, cgm.connectedComponents(Graphs.unmodifiableUndirectedGraph(graph))); } @Test public void testTriangle() { UndirectedGraph graph = new UndirectedGraph<>(); Node a = graph.addNode(4L), b = graph.addNode(2L), c = graph.addNode(9L); graph.addEdge(a, b); graph.addEdge(b, c); graph.addEdge(c, a); Assertions.assertEquals(1, cgm.connectedComponents(Graphs.unmodifiableUndirectedGraph(graph))); } @Test public void testTwoPair() { UndirectedGraph graph = new UndirectedGraph<>(); Node a = graph.addNode(17L), b = graph.addNode(8L), c = graph.addNode(4L), d = graph.addNode(-3L); graph.addEdge(a, b); graph.addEdge(c, d); Assertions.assertEquals(2, cgm.connectedComponents(Graphs.unmodifiableUndirectedGraph(graph))); } @Test public void testMore() { UndirectedGraph graph = new UndirectedGraph<>(); Node a = graph.addNode("alice"), b = graph.addNode("bob"), c = graph.addNode("carol"), d1 = graph.addNode("dave"), e = graph.addNode("eunice"), f = graph.addNode("frank"); graph.addEdge(a, d1); graph.addEdge(c, e); Assertions.assertEquals(4, cgm.connectedComponents(Graphs.unmodifiableUndirectedGraph(graph))); } @Test public void testCollatz() { UndirectedGraph collatz = cgm.makeCollatzGraph(1); Assertions.assertEquals(8, collatz.numNodes()); Assertions.assertEquals(8, collatz.numEdges()); } @Test public void testCollatz2() { UndirectedGraph collatz = cgm.makeCollatzGraph(10); Assertions.assertEquals(21, collatz.numNodes()); Assertions.assertEquals(21, collatz.numEdges()); } @Test public void testConjecture() { Assertions.assertEquals(4, cgm.connectedCollatzComponents(100)); } }