@Test public void incidentNodes_selfLoop() { addEdge(N1, N1, E11); assertThat(network.incidentNodes(E11).nodeU()).isEqualTo(N1); assertThat(network.incidentNodes(E11).nodeV()).isEqualTo(N1); }
@Test public void incidentNodes_selfLoop() { addEdge(N1, N1, E11); assertThat(network.incidentNodes(E11).source()).isEqualTo(N1); assertThat(network.incidentNodes(E11).target()).isEqualTo(N1); }
@Override @Test public void incidentNodes_oneEdge() { addEdge(N1, N2, E12); assertThat(network.incidentNodes(E12).source()).isEqualTo(N1); assertThat(network.incidentNodes(E12).target()).isEqualTo(N2); }
@Test public void incidentNodes_oneEdge() { addEdge(N1, N2, E12); assertThat(network.incidentNodes(E12)).containsExactly(N1, N2); }
@Test public void incidentNodes_edgeNotInGraph() { try { network.incidentNodes(EDGE_NOT_IN_GRAPH); fail(ERROR_EDGE_NOT_IN_GRAPH); } catch (IllegalArgumentException e) { assertEdgeNotInGraphErrorMessage(e); } }
@Test public void target_oneEdge() { addEdge(N1, N2, E12); assertThat(network.incidentNodes(E12).target()).isEqualTo(N2); }
@Test public void source_selfLoop() { addEdge(N1, N1, E11); assertThat(network.incidentNodes(E11).source()).isEqualTo(N1); }
@Test public void source_oneEdge() { addEdge(N1, N2, E12); assertThat(network.incidentNodes(E12).source()).isEqualTo(N1); }
@Test public void target_selfLoop() { addEdge(N1, N1, E11); assertThat(network.incidentNodes(E11).target()).isEqualTo(N1); }
@Test public void removeEdge_queryAfterRemoval() { addEdge(N1, N2, E12); @SuppressWarnings("unused") EndpointPair<Integer> unused = network.incidentNodes(E12); // ensure cache (if any) is populated assertTrue(network.removeEdge(E12)); try { network.incidentNodes(E12); fail(ERROR_EDGE_NOT_IN_GRAPH); } catch (IllegalArgumentException e) { assertEdgeNotInGraphErrorMessage(e); } } }
@Test public void source_edgeNotInGraph() { try { network.incidentNodes(EDGE_NOT_IN_GRAPH).source(); fail(ERROR_EDGE_NOT_IN_GRAPH); } catch (IllegalArgumentException e) { assertEdgeNotInGraphErrorMessage(e); } }
@Test public void target_edgeNotInGraph() { try { network.incidentNodes(EDGE_NOT_IN_GRAPH).target(); fail(ERROR_EDGE_NOT_IN_GRAPH); } catch (IllegalArgumentException e) { assertEdgeNotInGraphErrorMessage(e); } }
@After public void validateSourceAndTarget() { for (Integer node : network.nodes()) { for (String inEdge : network.inEdges(node)) { EndpointPair<Integer> endpointPair = network.incidentNodes(inEdge); assertThat(endpointPair.source()).isEqualTo(endpointPair.adjacentNode(node)); assertThat(endpointPair.target()).isEqualTo(node); } for (String outEdge : network.outEdges(node)) { EndpointPair<Integer> endpointPair = network.incidentNodes(outEdge); assertThat(endpointPair.source()).isEqualTo(node); assertThat(endpointPair.target()).isEqualTo(endpointPair.adjacentNode(node)); } for (Integer adjacentNode : network.adjacentNodes(node)) { Set<String> edges = network.edgesConnecting(node, adjacentNode); Set<String> antiParallelEdges = network.edgesConnecting(adjacentNode, node); assertThat(node.equals(adjacentNode) || Collections.disjoint(edges, antiParallelEdges)) .isTrue(); } } }
@Test public void testAdjacentNode_nodeNotIncident() { ImmutableList<MutableNetwork<Integer, String>> testNetworks = ImmutableList.of( NetworkBuilder.directed().<Integer, String>build(), NetworkBuilder.undirected().<Integer, String>build()); for (MutableNetwork<Integer, String> network : testNetworks) { network.addEdge(1, 2, "1-2"); EndpointPair<Integer> endpointPair = network.incidentNodes("1-2"); try { endpointPair.adjacentNode(3); fail("Should have rejected adjacentNode() called with a node not incident to edge."); } catch (IllegalArgumentException expected) { } } }
@Override public EndpointPair<N> incidentNodes(E edge) { checkNotNull(edge, "edge"); checkArgument(delegate.edges().contains(edge), EDGE_NOT_IN_TREE, edge); return delegate.incidentNodes(edge); }
@Override public boolean removeEdge(E edge) { checkNotNull(edge, "edge"); delegate.removeEdge(edge); // remove the subtree rooted at this edge's target return removeNode(delegate.incidentNodes(edge).target()); } }
@Override @Test public void incidentNodes_oneEdge() { addEdge(N1, N2, E12); assertThat(network.incidentNodes(E12).source()).isEqualTo(N1); assertThat(network.incidentNodes(E12).target()).isEqualTo(N2); }
@Test public void incidentNodes_edgeNotInGraph() { try { network.incidentNodes(EDGE_NOT_IN_GRAPH); fail(ERROR_EDGE_NOT_IN_GRAPH); } catch (IllegalArgumentException e) { assertEdgeNotInGraphErrorMessage(e); } }
@Test public void source_oneEdge() { addEdge(N1, N2, E12); assertThat(network.incidentNodes(E12).source()).isEqualTo(N1); }
@Test public void target_edgeNotInGraph() { try { network.incidentNodes(EDGE_NOT_IN_GRAPH).target(); fail(ERROR_EDGE_NOT_IN_GRAPH); } catch (IllegalArgumentException e) { assertEdgeNotInGraphErrorMessage(e); } }