@Test public void predecessors_oneEdge() { putEdge(N1, N2); assertThat(graph.predecessors(N2)).containsExactly(N1); assertThat(graph.predecessors(N1)).containsExactly(N2); }
@Test public void predecessors_oneEdge() { putEdge(N1, N2); assertThat(graph.predecessors(N2)).containsExactly(N1); // Edge direction handled correctly assertThat(graph.predecessors(N1)).isEmpty(); }
@Test public void predecessors_selfLoop() { putEdge(N1, N1); assertThat(graph.predecessors(N1)).containsExactly(N1); putEdge(N4, N1); assertThat(graph.predecessors(N1)).containsExactly(N1, N4); }
@Override @Test public void predecessors_checkReturnedSetMutability() { addNode(N2); Set<Integer> predecessors = graph.predecessors(N2); try { predecessors.add(N1); fail(ERROR_MODIFIABLE_SET); } catch (UnsupportedOperationException e) { putEdge(N1, N2); assertThat(graph.predecessors(N2)).containsExactlyElementsIn(predecessors); } }
@Test public void predecessors_selfLoop() { putEdge(N1, N1); assertThat(graph.predecessors(N1)).containsExactly(N1); putEdge(N1, N2); assertThat(graph.predecessors(N1)).containsExactly(N1, N2); }
@Override @Test public void predecessors_checkReturnedSetMutability() { addNode(N2); Set<Integer> predecessors = graph.predecessors(N2); try { predecessors.add(N1); fail(ERROR_MODIFIABLE_SET); } catch (UnsupportedOperationException e) { putEdge(N1, N2); assertThat(graph.predecessors(N2)).containsExactlyElementsIn(predecessors); } }
@Test public void predecessors_noPredecessors() { addNode(N1); assertThat(graph.predecessors(N1)).isEmpty(); }
@Override @Test public void addEdge_selfLoop() { assertThat(putEdge(N1, N1)).isTrue(); assertThat(graph.successors(N1)).containsExactly(N1); assertThat(graph.predecessors(N1)).containsExactly(N1); }
@Test public void predecessors_nodeNotInGraph() { try { graph.predecessors(NODE_NOT_IN_GRAPH); fail(ERROR_NODE_NOT_IN_GRAPH); } catch (IllegalArgumentException e) { assertNodeNotInGraphErrorMessage(e); } }
@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(); }
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(); }
@After public void validateUndirectedEdges() { for (Integer node : graph.nodes()) { new EqualsTester() .addEqualityGroup( graph.predecessors(node), graph.successors(node), graph.adjacentNodes(node)) .testEquals(); } }
@Override public Set<N> predecessors(N node) { checkNotNull(node, "node"); checkArgument(delegate.nodes().contains(node), NODE_NOT_IN_TREE, node); return delegate.predecessors(node); }
@Test public void predecessors_oneEdge() { putEdge(N1, N2); assertThat(graph.predecessors(N2)).containsExactly(N1); assertThat(graph.predecessors(N1)).containsExactly(N2); }
@Test public void predecessors_oneEdge() { putEdge(N1, N2); assertThat(graph.predecessors(N2)).containsExactly(N1); // Edge direction handled correctly assertThat(graph.predecessors(N1)).isEmpty(); }
@Test public void predecessors_selfLoop() { putEdge(N1, N1); assertThat(graph.predecessors(N1)).containsExactly(N1); putEdge(N1, N2); assertThat(graph.predecessors(N1)).containsExactly(N1, N2); }
@Test public void predecessors_noPredecessors() { addNode(N1); assertThat(graph.predecessors(N1)).isEmpty(); }
@Override @Test public void addEdge_selfLoop() { assertThat(putEdge(N1, N1)).isTrue(); assertThat(graph.successors(N1)).containsExactly(N1); assertThat(graph.predecessors(N1)).containsExactly(N1); }
@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(); }
@After public void validateUndirectedEdges() { for (Integer node : graph.nodes()) { new EqualsTester() .addEqualityGroup( graph.predecessors(node), graph.successors(node), graph.adjacentNodes(node)) .testEquals(); } }