1 /* 2 * Copyright (C) 2010 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.testing; 18 19 import com.google.common.annotations.GwtIncompatible; 20 import com.google.common.collect.ImmutableSortedMap; 21 import com.google.common.collect.Lists; 22 import com.google.common.collect.Ordering; 23 import com.google.common.collect.Sets; 24 import com.google.common.collect.testing.features.CollectionFeature; 25 import com.google.common.collect.testing.features.CollectionSize; 26 import com.google.common.testing.SerializableTester; 27 import java.util.Arrays; 28 import java.util.Collections; 29 import java.util.List; 30 import java.util.Map; 31 import java.util.NavigableSet; 32 import java.util.Set; 33 import java.util.SortedSet; 34 import junit.framework.Test; 35 import junit.framework.TestCase; 36 import junit.framework.TestSuite; 37 38 public class SafeTreeSetTest extends TestCase { suite()39 public static Test suite() { 40 TestSuite suite = new TestSuite(); 41 suite.addTestSuite(SafeTreeSetTest.class); 42 suite.addTest( 43 NavigableSetTestSuiteBuilder.using( 44 new TestStringSetGenerator() { 45 @Override 46 protected Set<String> create(String[] elements) { 47 return new SafeTreeSet<>(Arrays.asList(elements)); 48 } 49 50 @Override 51 public List<String> order(List<String> insertionOrder) { 52 return Lists.newArrayList(Sets.newTreeSet(insertionOrder)); 53 } 54 }) 55 .withFeatures( 56 CollectionSize.ANY, 57 CollectionFeature.KNOWN_ORDER, 58 CollectionFeature.GENERAL_PURPOSE) 59 .named("SafeTreeSet with natural comparator") 60 .createTestSuite()); 61 suite.addTest( 62 SetTestSuiteBuilder.using( 63 new TestStringSetGenerator() { 64 @Override 65 protected Set<String> create(String[] elements) { 66 NavigableSet<String> set = new SafeTreeSet<>(Ordering.natural().nullsFirst()); 67 Collections.addAll(set, elements); 68 return set; 69 } 70 71 @Override 72 public List<String> order(List<String> insertionOrder) { 73 return Lists.newArrayList(Sets.newTreeSet(insertionOrder)); 74 } 75 }) 76 .withFeatures( 77 CollectionSize.ANY, 78 CollectionFeature.KNOWN_ORDER, 79 CollectionFeature.GENERAL_PURPOSE, 80 CollectionFeature.ALLOWS_NULL_VALUES) 81 .named("SafeTreeSet with null-friendly comparator") 82 .createTestSuite()); 83 return suite; 84 } 85 86 @GwtIncompatible // SerializableTester testViewSerialization()87 public void testViewSerialization() { 88 Map<String, Integer> map = ImmutableSortedMap.of("one", 1, "two", 2, "three", 3); 89 SerializableTester.reserializeAndAssert(map.entrySet()); 90 SerializableTester.reserializeAndAssert(map.keySet()); 91 assertEquals( 92 Lists.newArrayList(map.values()), 93 Lists.newArrayList(SerializableTester.reserialize(map.values()))); 94 } 95 96 @GwtIncompatible // SerializableTester testEmpty_serialization()97 public void testEmpty_serialization() { 98 SortedSet<String> set = new SafeTreeSet<>(); 99 SortedSet<String> copy = SerializableTester.reserializeAndAssert(set); 100 assertEquals(set.comparator(), copy.comparator()); 101 } 102 103 @GwtIncompatible // SerializableTester testSingle_serialization()104 public void testSingle_serialization() { 105 SortedSet<String> set = new SafeTreeSet<>(); 106 set.add("e"); 107 SortedSet<String> copy = SerializableTester.reserializeAndAssert(set); 108 assertEquals(set.comparator(), copy.comparator()); 109 } 110 111 @GwtIncompatible // SerializableTester testSeveral_serialization()112 public void testSeveral_serialization() { 113 SortedSet<String> set = new SafeTreeSet<>(); 114 set.add("a"); 115 set.add("b"); 116 set.add("c"); 117 SortedSet<String> copy = SerializableTester.reserializeAndAssert(set); 118 assertEquals(set.comparator(), copy.comparator()); 119 } 120 } 121