@Test public void predecessors_oneEdge() { addEdge(N1, N2, E12); assertThat(network.predecessors(N2)).containsExactly(N1); assertThat(network.predecessors(N1)).containsExactly(N2); }
@Test public void predecessors_oneEdge() { addEdge(N1, N2, E12); assertThat(network.predecessors(N2)).containsExactly(N1); // Edge direction handled correctly assertThat(network.predecessors(N1)).isEmpty(); }
@Test public void predecessors_selfLoop() { addEdge(N1, N1, E11); assertThat(network.predecessors(N1)).containsExactly(N1); addEdge(N4, N1, E41); assertThat(network.predecessors(N1)).containsExactly(N1, N4); }
@Test public void predecessors_selfLoop() { addEdge(N1, N1, E11); assertThat(network.predecessors(N1)).containsExactly(N1); addEdge(N1, N2, E12); assertThat(network.predecessors(N1)).containsExactly(N1, N2); }
@Override @Test public void predecessors_checkReturnedSetMutability() { addNode(N2); Set<Integer> predecessors = network.predecessors(N2); try { predecessors.add(N1); fail(ERROR_MODIFIABLE_COLLECTION); } catch (UnsupportedOperationException e) { addEdge(N1, N2, E12); assertThat(network.predecessors(N2)).containsExactlyElementsIn(predecessors); } }
@Override @Test public void predecessors_checkReturnedSetMutability() { addNode(N2); Set<Integer> predecessors = network.predecessors(N2); try { predecessors.add(N1); fail(ERROR_MODIFIABLE_COLLECTION); } catch (UnsupportedOperationException e) { addEdge(N1, N2, E12); assertThat(network.predecessors(N2)).containsExactlyElementsIn(predecessors); } }
@Test public void predecessors_noPredecessors() { addNode(N1); assertThat(network.predecessors(N1)).isEmpty(); }
@Test public void predecessors_nodeNotInGraph() { try { network.predecessors(NODE_NOT_IN_GRAPH); fail(ERROR_NODE_NOT_IN_GRAPH); } catch (IllegalArgumentException e) { assertNodeNotInGraphErrorMessage(e); } }
@After public void validateUndirectedEdges() { for (Integer node : network.nodes()) { new EqualsTester() .addEqualityGroup( network.inEdges(node), network.outEdges(node), network.incidentEdges(node)) .testEquals(); new EqualsTester() .addEqualityGroup( network.predecessors(node), network.successors(node), network.adjacentNodes(node)) .testEquals(); for (Integer adjacentNode : network.adjacentNodes(node)) { assertThat(network.edgesConnecting(node, adjacentNode)) .containsExactlyElementsIn(network.edgesConnecting(adjacentNode, node)); } } }
@Override public Set<N> predecessors(N node) { return delegate.predecessors(node); }
@Override public synchronized Set<N> predecessors(N arg0) { return delegate.predecessors(arg0); }
@Override public Optional<N> predecessor(N node) { checkNotNull(node, "node"); Set<N> predecessors = delegate.predecessors(node); checkState(predecessors.size() <= 1); return predecessors.isEmpty() ? Optional.empty() : Optional.of(Iterables.getOnlyElement(predecessors)); }
@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() { addEdge(N1, N2, E12); assertThat(network.predecessors(N2)).containsExactly(N1); // Edge direction handled correctly assertThat(network.predecessors(N1)).isEmpty(); }
@Test public void predecessors_oneEdge() { addEdge(N1, N2, E12); assertThat(network.predecessors(N2)).containsExactly(N1); assertThat(network.predecessors(N1)).containsExactly(N2); }
@Test public void predecessors_selfLoop() { addEdge(N1, N1, E11); assertThat(network.predecessors(N1)).containsExactly(N1); addEdge(N4, N1, E41); assertThat(network.predecessors(N1)).containsExactly(N1, N4); }
@Test public void predecessors_selfLoop() { addEdge(N1, N1, E11); assertThat(network.predecessors(N1)).containsExactly(N1); addEdge(N1, N2, E12); assertThat(network.predecessors(N1)).containsExactly(N1, N2); }
@Override @Test public void predecessors_checkReturnedSetMutability() { addNode(N2); Set<Integer> predecessors = network.predecessors(N2); try { predecessors.add(N1); fail(ERROR_MODIFIABLE_COLLECTION); } catch (UnsupportedOperationException e) { addEdge(N1, N2, E12); assertThat(network.predecessors(N2)).containsExactlyElementsIn(predecessors); } }
@Test public void predecessors_noPredecessors() { addNode(N1); assertThat(network.predecessors(N1)).isEmpty(); }
@Test public void predecessors_nodeNotInGraph() { try { network.predecessors(NODE_NOT_IN_GRAPH); fail(ERROR_NODE_NOT_IN_GRAPH); } catch (IllegalArgumentException e) { assertNodeNotInGraphErrorMessage(e); } }