public void disconnect(Node fromNode, Node toNode) { Preconditions.checkNotNull(fromNode, "fromNode cannot be null!"); Preconditions.checkNotNull(toNode, "toNode cannot be null!"); if (!graph.hasEdgeConnecting(fromNode, toNode)) { logger.warn("Trying to disconnect two nodes that aren't connected, " + fromNode.getUri() + " and " + toNode.getUri()); } graph.removeEdge(fromNode, toNode); }
graphCopy.removeEdge(n, m); if (graphCopy.inDegree(m) == 0)
@Test public void removeEdge_antiparallelEdges() { putEdge(N1, N2); putEdge(N2, N1); // no-op assertThat(graph.removeEdge(N1, N2)).isTrue(); assertThat(graph.adjacentNodes(N1)).isEmpty(); assertThat(graph.edges()).isEmpty(); assertThat(graph.removeEdge(N2, N1)).isFalse(); } }
@Test public void removeEdge_nodeNotPresent() { putEdge(N1, N2); assertThat(graph.removeEdge(N1, NODE_NOT_IN_GRAPH)).isFalse(); assertThat(graph.successors(N1)).contains(N2); }
@Test public void removeEdge_existingEdge() { putEdge(N1, N2); assertThat(graph.successors(N1)).containsExactly(N2); assertThat(graph.predecessors(N2)).containsExactly(N1); assertThat(graph.removeEdge(N1, N2)).isTrue(); assertThat(graph.removeEdge(N1, N2)).isFalse(); assertThat(graph.successors(N1)).isEmpty(); assertThat(graph.predecessors(N2)).isEmpty(); }
@Test public void removeEdge_existingSelfLoopEdge() { putEdge(N1, N1); assertThat(graph.removeEdge(N1, N1)).isTrue(); assertThat(graph.nodes()).containsExactly(N1); assertThat(graph.successors(N1)).isEmpty(); } }
@Test public void removeEdge_existingSelfLoopEdge() { putEdge(N1, N1); assertThat(graph.removeEdge(N1, N1)).isTrue(); assertThat(graph.nodes()).containsExactly(N1); assertThat(graph.adjacentNodes(N1)).isEmpty(); } }
public void removeEdge_antiparallelEdges() { putEdge(N1, N2); putEdge(N2, N1); assertThat(graph.removeEdge(N1, N2)).isTrue(); assertThat(graph.successors(N1)).isEmpty(); assertThat(graph.predecessors(N1)).containsExactly(N2); assertThat(graph.edges()).hasSize(1); assertThat(graph.removeEdge(N2, N1)).isTrue(); assertThat(graph.successors(N1)).isEmpty(); assertThat(graph.predecessors(N1)).isEmpty(); assertThat(graph.edges()).isEmpty(); }
@Test public void removeEdge_edgeNotPresent() { putEdge(N1, N2); addNode(N3); assertThat(graph.removeEdge(N1, N3)).isFalse(); assertThat(graph.successors(N1)).contains(N2); } }
@Test public void removeEdge_oneOfMany() { putEdge(N1, N2); putEdge(N1, N3); putEdge(N1, N4); assertThat(graph.removeEdge(N1, N3)).isTrue(); assertThat(graph.adjacentNodes(N1)).containsExactly(N2, N4); }
@Test public void removeEdge_orderMismatch() { putEdge(N1, N2); EndpointPair<Integer> endpoints = EndpointPair.unordered(N1, N2); try { graph.removeEdge(endpoints); fail("Expected IllegalArgumentException: " + ENDPOINTS_MISMATCH); } catch (IllegalArgumentException e) { assertThat(e).hasMessageThat().contains(ENDPOINTS_MISMATCH); } } }
@Test public void endpointPair_unmodifiableView() { MutableGraph<Integer> directedGraph = GraphBuilder.directed().build(); Set<EndpointPair<Integer>> edges = directedGraph.edges(); directedGraph.putEdge(N1, N2); containsExactlySanityCheck(edges, EndpointPair.ordered(N1, N2)); directedGraph.putEdge(N2, N1); containsExactlySanityCheck(edges, EndpointPair.ordered(N1, N2), EndpointPair.ordered(N2, N1)); directedGraph.removeEdge(N1, N2); directedGraph.removeEdge(N2, N1); containsExactlySanityCheck(edges); try { edges.add(EndpointPair.ordered(N1, N2)); fail("Set returned by edges() should be unmodifiable"); } catch (UnsupportedOperationException expected) { } }
for (int i = 0; i < numEdgesToRemove; ++i) { EndpointPair<Integer> edge = edgeList.get(i); assertThat(graph.removeEdge(edge.nodeU(), edge.nodeV())).isTrue();
@Override public boolean removeEdge(N nodeU, N nodeV) { checkNotNull(nodeU, "nodeU"); checkNotNull(nodeV, "nodeV"); delegate.removeEdge(nodeU, nodeV); return removeNode(nodeV); } }
@Override public boolean removeEdge(EndpointPair<V> e) { if (e == null) { return false; } return graph.removeEdge(e.nodeU(), e.nodeV()); }
@Test public void removeEdge_antiparallelEdges() { putEdge(N1, N2); putEdge(N2, N1); // no-op assertThat(graph.removeEdge(N1, N2)).isTrue(); assertThat(graph.adjacentNodes(N1)).isEmpty(); assertThat(graph.edges()).isEmpty(); assertThat(graph.removeEdge(N2, N1)).isFalse(); } }
@Test public void removeEdge_nodeNotPresent() { putEdge(N1, N2); assertThat(graph.removeEdge(N1, NODE_NOT_IN_GRAPH)).isFalse(); assertThat(graph.successors(N1)).contains(N2); }
@Test public void removeEdge_existingSelfLoopEdge() { putEdge(N1, N1); assertThat(graph.removeEdge(N1, N1)).isTrue(); assertThat(graph.nodes()).containsExactly(N1); assertThat(graph.adjacentNodes(N1)).isEmpty(); } }
@Test public void removeEdge_existingSelfLoopEdge() { putEdge(N1, N1); assertThat(graph.removeEdge(N1, N1)).isTrue(); assertThat(graph.nodes()).containsExactly(N1); assertThat(graph.successors(N1)).isEmpty(); } }
@Test public void removeEdge_edgeNotPresent() { putEdge(N1, N2); addNode(N3); assertThat(graph.removeEdge(N1, N3)).isFalse(); assertThat(graph.successors(N1)).contains(N2); } }