Skip to content

Commit

Permalink
AbstractNetwork: fix bug in AbstractNetwork.hasEdgeConnecting() causi…
Browse files Browse the repository at this point in the history
…ng it to throw if either endpoint was not in the graph.

RELNOTES=Fix bug in AbstractNetwork.hasEdgeConnecting() causing it to throw if either endpoint was not in the graph.  Originally reported as GitHub issue #3721.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=282846559
  • Loading branch information
jrtom authored and nick-someone committed Dec 2, 2019
1 parent 0b2aacf commit 2ee7f9d
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 4 deletions.
Expand Up @@ -533,6 +533,22 @@ public void edgesConnecting_nodesNotInGraph() {
}
}

@Test
public void hasEdgeConnecting_disconnectedNodes() {
addNode(N1);
addNode(N2);
assertThat(network.hasEdgeConnecting(N1, N2)).isFalse();
}

@Test
public void hasEdgesConnecting_nodesNotInGraph() {
addNode(N1);
addNode(N2);
assertThat(network.hasEdgeConnecting(N1, NODE_NOT_IN_GRAPH)).isFalse();
assertThat(network.hasEdgeConnecting(NODE_NOT_IN_GRAPH, N2)).isFalse();
assertThat(network.hasEdgeConnecting(NODE_NOT_IN_GRAPH, NODE_NOT_IN_GRAPH)).isFalse();
}

@Test
public void inEdges_noInEdges() {
addNode(N1);
Expand Down
Expand Up @@ -209,7 +209,9 @@ public E edgeConnectingOrNull(EndpointPair<N> endpoints) {

@Override
public boolean hasEdgeConnecting(N nodeU, N nodeV) {
return !edgesConnecting(nodeU, nodeV).isEmpty();
checkNotNull(nodeU);
checkNotNull(nodeV);
return nodes().contains(nodeU) && successors(nodeU).contains(nodeV);
}

@Override
Expand All @@ -218,7 +220,7 @@ public boolean hasEdgeConnecting(EndpointPair<N> endpoints) {
if (!isOrderingCompatible(endpoints)) {
return false;
}
return !edgesConnecting(endpoints.nodeU(), endpoints.nodeV()).isEmpty();
return hasEdgeConnecting(endpoints.nodeU(), endpoints.nodeV());
}

/**
Expand Down
16 changes: 16 additions & 0 deletions guava-tests/test/com/google/common/graph/AbstractNetworkTest.java
Expand Up @@ -540,6 +540,22 @@ public void edgesConnecting_nodesNotInGraph() {
}
}

@Test
public void hasEdgeConnecting_disconnectedNodes() {
addNode(N1);
addNode(N2);
assertThat(network.hasEdgeConnecting(N1, N2)).isFalse();
}

@Test
public void hasEdgesConnecting_nodesNotInGraph() {
addNode(N1);
addNode(N2);
assertThat(network.hasEdgeConnecting(N1, NODE_NOT_IN_GRAPH)).isFalse();
assertThat(network.hasEdgeConnecting(NODE_NOT_IN_GRAPH, N2)).isFalse();
assertThat(network.hasEdgeConnecting(NODE_NOT_IN_GRAPH, NODE_NOT_IN_GRAPH)).isFalse();
}

@Test
public void inEdges_noInEdges() {
addNode(N1);
Expand Down
6 changes: 4 additions & 2 deletions guava/src/com/google/common/graph/AbstractNetwork.java
Expand Up @@ -219,7 +219,9 @@ public Optional<E> edgeConnecting(EndpointPair<N> endpoints) {

@Override
public boolean hasEdgeConnecting(N nodeU, N nodeV) {
return !edgesConnecting(nodeU, nodeV).isEmpty();
checkNotNull(nodeU);
checkNotNull(nodeV);
return nodes().contains(nodeU) && successors(nodeU).contains(nodeV);
}

@Override
Expand All @@ -228,7 +230,7 @@ public boolean hasEdgeConnecting(EndpointPair<N> endpoints) {
if (!isOrderingCompatible(endpoints)) {
return false;
}
return !edgesConnecting(endpoints.nodeU(), endpoints.nodeV()).isEmpty();
return hasEdgeConnecting(endpoints.nodeU(), endpoints.nodeV());
}

/**
Expand Down

0 comments on commit 2ee7f9d

Please sign in to comment.