@Test public void edgesConnecting_selfLoop() { addEdge(N1, N1, E11); assertThat(network.edgesConnecting(N1, N1)).containsExactly(E11); addEdge(N1, N2, E12); assertThat(network.edgesConnecting(N1, N2)).containsExactly(E12); assertThat(network.edgesConnecting(N2, N1)).containsExactly(E12); assertThat(network.edgesConnecting(N1, N1)).containsExactly(E11); }
@Test public void edgesConnecting_oneEdge() { addEdge(N1, N2, E12); assertThat(network.edgesConnecting(N1, N2)).containsExactly(E12); // Passed nodes should be in the correct edge direction, first is the // source node and the second is the target node assertThat(network.edgesConnecting(N2, N1)).isEmpty(); }
@Test public void edgesConnecting_selfLoop() { addEdge(N1, N1, E11); assertThat(network.edgesConnecting(N1, N1)).containsExactly(E11); addEdge(N1, N2, E12); assertThat(network.edgesConnecting(N1, N2)).containsExactly(E12); assertThat(network.edgesConnecting(N1, N1)).containsExactly(E11); }
@Test public void edgesConnecting_orderMismatch() { addEdge(N1, N2, E12); assertThat(network.edgesConnecting(ENDPOINTS_N2N1)).containsExactly(E12); assertThat(network.edgesConnecting(ENDPOINTS_N1N2)).containsExactly(E12); }
@Test public void createUndirected_expectedNodeCount() { MutableNetwork<Integer, String> undirectedGraph = NetworkBuilder.undirected().expectedNodeCount(NODE_COUNT).build(); assertThat(undirectedGraph.addEdge(N1, N2, E12)).isTrue(); assertThat(undirectedGraph.edgesConnecting(N1, N2)).isEqualTo(ImmutableSet.of(E12)); assertThat(undirectedGraph.edgesConnecting(N2, N1)).isEqualTo(ImmutableSet.of(E12)); }
@Test public void createUndirected_expectedEdgeCount() { MutableNetwork<Integer, String> undirectedGraph = NetworkBuilder.undirected().expectedEdgeCount(EDGE_COUNT).build(); assertThat(undirectedGraph.addEdge(N1, N2, E12)).isTrue(); assertThat(undirectedGraph.edgesConnecting(N1, N2)).isEqualTo(ImmutableSet.of(E12)); assertThat(undirectedGraph.edgesConnecting(N2, N1)).isEqualTo(ImmutableSet.of(E12)); }
@Test public void edgesConnecting_parallelEdges() { assertTrue(addEdge(N1, N2, E12)); assertTrue(addEdge(N1, N2, E12_A)); assertThat(network.edgesConnecting(N1, N2)).containsExactly(E12, E12_A); // Passed nodes should be in the correct edge direction, first is the // source node and the second is the target node assertThat(network.edgesConnecting(N2, N1)).isEmpty(); }
@Test public void addEdge_existingNodes() { // Adding nodes initially for safety (insulating from possible future // modifications to proxy methods) addNode(N1); addNode(N2); assertThat(addEdge(N1, N2, E12)).isTrue(); assertThat(network.edges()).contains(E12); assertThat(network.edgesConnecting(N1, N2)).containsExactly(E12); assertThat(network.edgesConnecting(N2, N1)).containsExactly(E12); }
@Test public void createDirected_multigraph() { MutableNetwork<Integer, String> directedMultigraph = NetworkBuilder.directed().allowsParallelEdges(true).build(); assertThat(directedMultigraph.addEdge(N1, N2, E12)).isTrue(); assertThat(directedMultigraph.addEdge(N1, N2, E12_A)).isTrue(); assertThat(directedMultigraph.edgesConnecting(N1, N2)).isEqualTo(ImmutableSet.of(E12, E12_A)); assertThat(directedMultigraph.edgesConnecting(N2, N1)).isEmpty(); }
@Override @Test public void addEdge_selfLoop() { assertThat(addEdge(N1, N1, E11)).isTrue(); assertThat(network.edges()).contains(E11); assertThat(network.edgesConnecting(N1, N1)).containsExactly(E11); }
@Test public void removeEdge_existingSelfLoopEdge() { addEdge(N1, N1, E11); assertThat(network.removeEdge(E11)).isTrue(); assertThat(network.edges()).doesNotContain(E11); assertThat(network.edgesConnecting(N1, N1)).isEmpty(); } }
@Test public void removeEdge_existingSelfLoopEdge() { addEdge(N1, N1, E11); assertThat(network.removeEdge(E11)).isTrue(); assertThat(network.edges()).doesNotContain(E11); assertThat(network.edgesConnecting(N1, N1)).isEmpty(); } }
@Test public void createUndirected_multigraph() { MutableNetwork<Integer, String> undirectedMultigraph = NetworkBuilder.undirected().allowsParallelEdges(true).build(); assertThat(undirectedMultigraph.addEdge(N1, N2, E12)).isTrue(); assertThat(undirectedMultigraph.addEdge(N1, N2, E12_A)).isTrue(); assertThat(undirectedMultigraph.addEdge(N2, N1, E21)).isTrue(); assertThat(undirectedMultigraph.edgesConnecting(N1, N2)) .isEqualTo(ImmutableSet.of(E12, E12_A, E21)); }
@Override @Test public void addEdge_parallelSelfLoopEdge() { assertTrue(addEdge(N1, N1, E11)); assertTrue(addEdge(N1, N1, E11_A)); assertThat(network.edgesConnecting(N1, N1)).containsExactly(E11, E11_A); }
@Test public void edgesConnecting_orderMismatch() { addEdge(N1, N2, E12); try { Set<String> unused = network.edgesConnecting(EndpointPair.unordered(N1, N2)); fail("Expected IllegalArgumentException: " + ENDPOINTS_MISMATCH); } catch (IllegalArgumentException e) { assertThat(e).hasMessageThat().contains(ENDPOINTS_MISMATCH); } }
@Test public void edgesConnecting_parallelSelfLoopEdges() { assertTrue(addEdge(N1, N1, E11)); assertTrue(addEdge(N1, N1, E11_A)); assertThat(network.edgesConnecting(N1, N1)).containsExactly(E11, E11_A); }
@Override @Test public void addEdge_parallelSelfLoopEdge() { assertTrue(addEdge(N1, N1, E11)); assertTrue(addEdge(N1, N1, E11_A)); assertThat(network.edgesConnecting(N1, N1)).containsExactly(E11, E11_A); }
@Override @Test public void addEdge_parallelEdge() { assertTrue(addEdge(N1, N2, E12)); assertTrue(addEdge(N1, N2, E12_A)); assertThat(network.edgesConnecting(N1, N2)).containsExactly(E12, E12_A); }
@Test public void removeEdge_existingEdge() { addEdge(N1, N2, E12); assertTrue(network.removeEdge(E12)); assertFalse(network.removeEdge(E12)); assertThat(network.edges()).doesNotContain(E12); assertThat(network.edgesConnecting(N1, N2)).isEmpty(); }
@Test public void removeEdge_parallelEdge() { addEdge(N1, N2, E12); addEdge(N1, N2, E12_A); addEdge(N2, N1, E21); assertTrue(network.removeEdge(E12_A)); assertThat(network.edgesConnecting(N1, N2)).containsExactly(E12, E21); }