/* * Copyright (C) 2016 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 com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterators; import com.google.errorprone.annotations.CanIgnoreReturnValue; import java.util.Set; /** Utility methods used in various common.graph tests. */ final class TestUtil { private TestUtil() {} static void assertStronglyEquivalent(Graph<?> graphA, Graph<?> graphB) { // Properties not covered by equals() assertThat(graphA.allowsSelfLoops()).isEqualTo(graphB.allowsSelfLoops()); assertThat(graphA.nodeOrder()).isEqualTo(graphB.nodeOrder()); assertThat(graphA).isEqualTo(graphB); } static void assertStronglyEquivalent(ValueGraph<?, ?> graphA, ValueGraph<?, ?> graphB) { // Properties not covered by equals() assertThat(graphA.allowsSelfLoops()).isEqualTo(graphB.allowsSelfLoops()); assertThat(graphA.nodeOrder()).isEqualTo(graphB.nodeOrder()); assertThat(graphA).isEqualTo(graphB); } static void assertStronglyEquivalent(Network<?, ?> networkA, Network<?, ?> networkB) { // Properties not covered by equals() assertThat(networkA.allowsParallelEdges()).isEqualTo(networkB.allowsParallelEdges()); assertThat(networkA.allowsSelfLoops()).isEqualTo(networkB.allowsSelfLoops()); assertThat(networkA.nodeOrder()).isEqualTo(networkB.nodeOrder()); assertThat(networkA.edgeOrder()).isEqualTo(networkB.edgeOrder()); assertThat(networkA).isEqualTo(networkB); } /** * In some cases our graph implementations return custom sets that define their own size() and * contains(). Verify that these sets are consistent with the elements of their iterator. */ @CanIgnoreReturnValue static <T> Set<T> sanityCheckSet(Set<T> set) { assertThat(set).hasSize(Iterators.size(set.iterator())); for (Object element : set) { assertThat(set).contains(element); } assertThat(set).doesNotContain(new Object()); assertThat(set).isEqualTo(ImmutableSet.copyOf(set)); return set; } }