package i5.las2peer.services.ocd.benchmarks; import static org.junit.Assert.*; import java.util.List; import i5.las2peer.services.ocd.benchmarks.NewmanBenchmark; import i5.las2peer.services.ocd.graphs.Cover; import i5.las2peer.services.ocd.graphs.CustomGraph; import org.junit.Test; import y.base.Node; import y.base.NodeCursor; public class NewmanBenchmarkTest { @Test public void testCreateGroundTruthCover() throws InterruptedException { for(int i = 0; i<9; i++) { NewmanBenchmark model = new NewmanBenchmark(i); Cover cover = model.createGroundTruthCover(); assertNotNull(cover); CustomGraph graph = cover.getGraph(); assertNotNull(graph); assertEquals(128, graph.nodeCount()); assertEquals(4, cover.communityCount()); NodeCursor nodes = graph.nodes(); while(nodes.ok()) { Node node = nodes.node(); List<Integer> communityIndices = cover.getCommunityIndices(node); assertNotNull(communityIndices); assertEquals(1, communityIndices.size()); int communityIndex = communityIndices.get(0); assertEquals(1, cover.getBelongingFactor(node, communityIndex), 0); int internalEdges = 0; int externalEdges = 0; NodeCursor successors = node.successors(); while(successors.ok()) { Node successor = successors.node(); assertTrue(graph.containsEdge(successor, node)); double successorCommunityMembership = cover.getBelongingFactor(successor, communityIndex); if(successorCommunityMembership == 1) { internalEdges++; } else if (successorCommunityMembership == 0) { externalEdges ++; } else { fail("Invalid membership degree (neither 0 nor 1)"); } successors.next(); } assertEquals(i, externalEdges); assertEquals(16 - i, internalEdges); nodes.next(); } } } }