1 /* 2 * Copyright (C) 2011 The Guava Authors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.google.common.collect; 18 19 import static com.google.common.testing.SerializableTester.reserialize; 20 import static junit.framework.Assert.assertEquals; 21 import static junit.framework.Assert.assertTrue; 22 23 import com.google.common.annotations.GwtCompatible; 24 import com.google.common.annotations.GwtIncompatible; 25 import com.google.common.testing.SerializableTester; 26 import com.google.errorprone.annotations.CanIgnoreReturnValue; 27 import java.util.Collection; 28 import java.util.Set; 29 30 /** 31 * Variant of {@link SerializableTester} that does not require the reserialized object's class to be 32 * identical to the original. 33 * 34 * @author Chris Povirk 35 */ 36 /* 37 * The whole thing is really @GwtIncompatible, but GwtJUnitConvertedTestModule doesn't have a 38 * parameter for non-GWT, non-test files, and it didn't seem worth adding one for this unusual case. 39 */ 40 @GwtCompatible(emulated = true) 41 final class LenientSerializableTester { 42 /* 43 * TODO(cpovirk): move this to c.g.c.testing if we allow for c.g.c.annotations dependencies so 44 * that it can be GWTified? 45 */ 46 @CanIgnoreReturnValue 47 @GwtIncompatible // SerializableTester reserializeAndAssertLenient(Set<E> original)48 static <E> Set<E> reserializeAndAssertLenient(Set<E> original) { 49 Set<E> copy = reserialize(original); 50 assertEquals(original, copy); 51 assertTrue(copy instanceof ImmutableSet); 52 return copy; 53 } 54 55 @CanIgnoreReturnValue 56 @GwtIncompatible // SerializableTester reserializeAndAssertLenient(Multiset<E> original)57 static <E> Multiset<E> reserializeAndAssertLenient(Multiset<E> original) { 58 Multiset<E> copy = reserialize(original); 59 assertEquals(original, copy); 60 assertTrue(copy instanceof ImmutableMultiset); 61 return copy; 62 } 63 64 @CanIgnoreReturnValue 65 @GwtIncompatible // SerializableTester reserializeAndAssertElementsEqual(Collection<E> original)66 static <E> Collection<E> reserializeAndAssertElementsEqual(Collection<E> original) { 67 Collection<E> copy = reserialize(original); 68 assertTrue(Iterables.elementsEqual(original, copy)); 69 assertTrue(copy instanceof ImmutableCollection); 70 return copy; 71 } 72 LenientSerializableTester()73 private LenientSerializableTester() {} 74 } 75