@Test public void inducedSubgraph_nodeNotInGraph() { MutableNetwork<Integer, String> undirectedGraph = NetworkBuilder.undirected().build(); try { inducedSubgraph(undirectedGraph, ImmutableSet.of(N1)); fail("Should have rejected getting induced subgraph with node not in original graph."); } catch (IllegalArgumentException expected) { } }
@Test public void inducedSubgraph_graph() { Set<Integer> nodeSubset = ImmutableSet.of(N1, N2, N4); MutableGraph<Integer> directedGraph = GraphBuilder.directed().allowsSelfLoops(true).build(); directedGraph.putEdge(N1, N2); directedGraph.putEdge(N2, N1); directedGraph.putEdge(N1, N3); // only incident to one node in nodeSubset directedGraph.putEdge(N4, N4); directedGraph.putEdge(5, 6); // not incident to any node in nodeSubset MutableGraph<Integer> expectedSubgraph = GraphBuilder.directed().allowsSelfLoops(true).build(); expectedSubgraph.putEdge(N1, N2); expectedSubgraph.putEdge(N2, N1); expectedSubgraph.putEdge(N4, N4); assertThat(inducedSubgraph(directedGraph, nodeSubset)).isEqualTo(expectedSubgraph); }
@Test public void inducedSubgraph_network() { Set<Integer> nodeSubset = ImmutableSet.of(N1, N2, N4); MutableNetwork<Integer, String> directedGraph = NetworkBuilder.directed().allowsSelfLoops(true).build(); directedGraph.addEdge(N1, N2, E12); directedGraph.addEdge(N2, N1, E21); directedGraph.addEdge(N1, N3, E13); // only incident to one node in nodeSubset directedGraph.addEdge(N4, N4, E44); directedGraph.addEdge(5, 6, "5-6"); // not incident to any node in nodeSubset MutableNetwork<Integer, String> expectedSubgraph = NetworkBuilder.directed().allowsSelfLoops(true).build(); expectedSubgraph.addEdge(N1, N2, E12); expectedSubgraph.addEdge(N2, N1, E21); expectedSubgraph.addEdge(N4, N4, E44); assertThat(inducedSubgraph(directedGraph, nodeSubset)).isEqualTo(expectedSubgraph); }
@Test public void inducedSubgraph_valueGraph() { Set<Integer> nodeSubset = ImmutableSet.of(N1, N2, N4); MutableValueGraph<Integer, String> directedGraph = ValueGraphBuilder.directed().allowsSelfLoops(true).build(); directedGraph.putEdgeValue(N1, N2, E12); directedGraph.putEdgeValue(N2, N1, E21); directedGraph.putEdgeValue(N1, N3, E13); // only incident to one node in nodeSubset directedGraph.putEdgeValue(N4, N4, E44); directedGraph.putEdgeValue(5, 6, "5-6"); // not incident to any node in nodeSubset MutableValueGraph<Integer, String> expectedSubgraph = ValueGraphBuilder.directed().allowsSelfLoops(true).build(); expectedSubgraph.putEdgeValue(N1, N2, E12); expectedSubgraph.putEdgeValue(N2, N1, E21); expectedSubgraph.putEdgeValue(N4, N4, E44); assertThat(inducedSubgraph(directedGraph, nodeSubset)).isEqualTo(expectedSubgraph); }
@Test public void inducedSubgraph_nodeNotInGraph() { MutableNetwork<Integer, String> undirectedGraph = NetworkBuilder.undirected().build(); try { inducedSubgraph(undirectedGraph, ImmutableSet.of(N1)); fail("Should have rejected getting induced subgraph with node not in original graph."); } catch (IllegalArgumentException expected) { } }
@Test public void inducedSubgraph_graph() { Set<Integer> nodeSubset = ImmutableSet.of(N1, N2, N4); MutableGraph<Integer> directedGraph = GraphBuilder.directed().allowsSelfLoops(true).build(); directedGraph.putEdge(N1, N2); directedGraph.putEdge(N2, N1); directedGraph.putEdge(N1, N3); // only incident to one node in nodeSubset directedGraph.putEdge(N4, N4); directedGraph.putEdge(5, 6); // not incident to any node in nodeSubset MutableGraph<Integer> expectedSubgraph = GraphBuilder.directed().allowsSelfLoops(true).build(); expectedSubgraph.putEdge(N1, N2); expectedSubgraph.putEdge(N2, N1); expectedSubgraph.putEdge(N4, N4); assertThat(inducedSubgraph(directedGraph, nodeSubset)).isEqualTo(expectedSubgraph); }
@Test public void inducedSubgraph_valueGraph() { Set<Integer> nodeSubset = ImmutableSet.of(N1, N2, N4); MutableValueGraph<Integer, String> directedGraph = ValueGraphBuilder.directed().allowsSelfLoops(true).build(); directedGraph.putEdgeValue(N1, N2, E12); directedGraph.putEdgeValue(N2, N1, E21); directedGraph.putEdgeValue(N1, N3, E13); // only incident to one node in nodeSubset directedGraph.putEdgeValue(N4, N4, E44); directedGraph.putEdgeValue(5, 6, "5-6"); // not incident to any node in nodeSubset MutableValueGraph<Integer, String> expectedSubgraph = ValueGraphBuilder.directed().allowsSelfLoops(true).build(); expectedSubgraph.putEdgeValue(N1, N2, E12); expectedSubgraph.putEdgeValue(N2, N1, E21); expectedSubgraph.putEdgeValue(N4, N4, E44); assertThat(inducedSubgraph(directedGraph, nodeSubset)).isEqualTo(expectedSubgraph); }
@Test public void inducedSubgraph_network() { Set<Integer> nodeSubset = ImmutableSet.of(N1, N2, N4); MutableNetwork<Integer, String> directedGraph = NetworkBuilder.directed().allowsSelfLoops(true).build(); directedGraph.addEdge(N1, N2, E12); directedGraph.addEdge(N2, N1, E21); directedGraph.addEdge(N1, N3, E13); // only incident to one node in nodeSubset directedGraph.addEdge(N4, N4, E44); directedGraph.addEdge(5, 6, "5-6"); // not incident to any node in nodeSubset MutableNetwork<Integer, String> expectedSubgraph = NetworkBuilder.directed().allowsSelfLoops(true).build(); expectedSubgraph.addEdge(N1, N2, E12); expectedSubgraph.addEdge(N2, N1, E21); expectedSubgraph.addEdge(N4, N4, E44); assertThat(inducedSubgraph(directedGraph, nodeSubset)).isEqualTo(expectedSubgraph); }