diff options
Diffstat (limited to 'guava-tests/test/com/google/common/graph/ImmutableNetworkTest.java')
-rw-r--r-- | guava-tests/test/com/google/common/graph/ImmutableNetworkTest.java | 72 |
1 files changed, 71 insertions, 1 deletions
diff --git a/guava-tests/test/com/google/common/graph/ImmutableNetworkTest.java b/guava-tests/test/com/google/common/graph/ImmutableNetworkTest.java index e138656e2..5de3cf751 100644 --- a/guava-tests/test/com/google/common/graph/ImmutableNetworkTest.java +++ b/guava-tests/test/com/google/common/graph/ImmutableNetworkTest.java @@ -46,7 +46,7 @@ public class ImmutableNetworkTest { ImmutableNetwork.copyOf(NetworkBuilder.directed().<String, String>build()); Network<String, String> network2 = ImmutableNetwork.copyOf(network1); - assertThat(network2).isSameAs(network1); + assertThat(network2).isSameInstanceAs(network1); } @Test @@ -74,4 +74,74 @@ public class ImmutableNetworkTest { assertThat(network.edgesConnecting("A", "B")).containsExactly("AB"); assertThat(network.edgesConnecting("B", "A")).containsExactly("AB"); } + + @Test + public void immutableNetworkBuilder_appliesNetworkBuilderConfig() { + ImmutableNetwork<String, Integer> emptyNetwork = + NetworkBuilder.directed() + .allowsSelfLoops(true) + .nodeOrder(ElementOrder.<String>natural()) + .<String, Integer>immutable() + .build(); + + assertThat(emptyNetwork.isDirected()).isTrue(); + assertThat(emptyNetwork.allowsSelfLoops()).isTrue(); + assertThat(emptyNetwork.nodeOrder()).isEqualTo(ElementOrder.<String>natural()); + } + + /** + * Tests that the ImmutableNetwork.Builder doesn't change when the creating NetworkBuilder + * changes. + */ + @Test + @SuppressWarnings("CheckReturnValue") + public void immutableNetworkBuilder_copiesNetworkBuilder() { + NetworkBuilder<String, Object> networkBuilder = + NetworkBuilder.directed() + .allowsSelfLoops(true) + .<String>nodeOrder(ElementOrder.<String>natural()); + ImmutableNetwork.Builder<String, Integer> immutableNetworkBuilder = + networkBuilder.<String, Integer>immutable(); + + // Update NetworkBuilder, but this shouldn't impact immutableNetworkBuilder + networkBuilder.allowsSelfLoops(false).nodeOrder(ElementOrder.<String>unordered()); + + ImmutableNetwork<String, Integer> emptyNetwork = immutableNetworkBuilder.build(); + + assertThat(emptyNetwork.isDirected()).isTrue(); + assertThat(emptyNetwork.allowsSelfLoops()).isTrue(); + assertThat(emptyNetwork.nodeOrder()).isEqualTo(ElementOrder.<String>natural()); + } + + @Test + public void immutableNetworkBuilder_addNode() { + ImmutableNetwork<String, Integer> network = + NetworkBuilder.directed().<String, Integer>immutable().addNode("A").build(); + + assertThat(network.nodes()).containsExactly("A"); + assertThat(network.edges()).isEmpty(); + } + + @Test + public void immutableNetworkBuilder_putEdgeFromNodes() { + ImmutableNetwork<String, Integer> network = + NetworkBuilder.directed().<String, Integer>immutable().addEdge("A", "B", 10).build(); + + assertThat(network.nodes()).containsExactly("A", "B"); + assertThat(network.edges()).containsExactly(10); + assertThat(network.incidentNodes(10)).isEqualTo(EndpointPair.ordered("A", "B")); + } + + @Test + public void immutableNetworkBuilder_putEdgeFromEndpointPair() { + ImmutableNetwork<String, Integer> network = + NetworkBuilder.directed() + .<String, Integer>immutable() + .addEdge(EndpointPair.ordered("A", "B"), 10) + .build(); + + assertThat(network.nodes()).containsExactly("A", "B"); + assertThat(network.edges()).containsExactly(10); + assertThat(network.incidentNodes(10)).isEqualTo(EndpointPair.ordered("A", "B")); + } } |