blob: 1a60836dbb73928647c1e1817e47c9e28ef8bbcd [file] [log] [blame]
/*
* Copyright (C) 2014 The Guava Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.common.graph;
import static com.google.common.truth.Truth.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
/** Tests for {@link ImmutableGraph} and {@link ImmutableValueGraph} . */
@RunWith(JUnit4.class)
public class ImmutableGraphTest {
@Test
public void immutableGraph() {
MutableGraph<String> mutableGraph = GraphBuilder.directed().build();
mutableGraph.addNode("A");
ImmutableGraph<String> immutableGraph = ImmutableGraph.copyOf(mutableGraph);
assertThat(immutableGraph).isNotInstanceOf(MutableValueGraph.class);
assertThat(immutableGraph).isEqualTo(mutableGraph);
mutableGraph.addNode("B");
assertThat(immutableGraph).isNotEqualTo(mutableGraph);
}
@Test
public void immutableValueGraph() {
MutableValueGraph<String, Integer> mutableValueGraph = ValueGraphBuilder.directed().build();
mutableValueGraph.addNode("A");
ImmutableValueGraph<String, Integer> immutableValueGraph =
ImmutableValueGraph.copyOf(mutableValueGraph);
assertThat(immutableValueGraph.asGraph()).isInstanceOf(ImmutableGraph.class);
assertThat(immutableValueGraph).isNotInstanceOf(MutableValueGraph.class);
assertThat(immutableValueGraph).isEqualTo(mutableValueGraph);
mutableValueGraph.addNode("B");
assertThat(immutableValueGraph).isNotEqualTo(mutableValueGraph);
}
@Test
public void copyOfImmutableGraph_optimized() {
Graph<String> graph1 = ImmutableGraph.copyOf(GraphBuilder.directed().<String>build());
Graph<String> graph2 = ImmutableGraph.copyOf(graph1);
assertThat(graph2).isSameAs(graph1);
}
@Test
public void copyOfImmutableValueGraph_optimized() {
ValueGraph<String, Integer> graph1 =
ImmutableValueGraph.copyOf(ValueGraphBuilder.directed().<String, Integer>build());
ValueGraph<String, Integer> graph2 = ImmutableValueGraph.copyOf(graph1);
assertThat(graph2).isSameAs(graph1);
}
}