diff options
Diffstat (limited to 'guava-tests/test/com/google/common/collect/ContiguousSetNonGwtTest.java')
-rw-r--r-- | guava-tests/test/com/google/common/collect/ContiguousSetNonGwtTest.java | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/guava-tests/test/com/google/common/collect/ContiguousSetNonGwtTest.java b/guava-tests/test/com/google/common/collect/ContiguousSetNonGwtTest.java new file mode 100644 index 0000000..d36e471 --- /dev/null +++ b/guava-tests/test/com/google/common/collect/ContiguousSetNonGwtTest.java @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2011 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.collect; + +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.collect.DiscreteDomains.integers; + +import com.google.common.collect.testing.SampleElements; +import com.google.common.collect.testing.SetTestSuiteBuilder; +import com.google.common.collect.testing.TestSetGenerator; +import com.google.common.collect.testing.features.CollectionFeature; +import com.google.common.collect.testing.features.CollectionSize; +import com.google.common.collect.testing.testers.SetHashCodeTester; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +/** + * @author Gregory Kick + */ +public class ContiguousSetNonGwtTest extends TestCase { + public static class BuiltTests extends TestCase { + public static Test suite() { + TestSuite suite = new TestSuite(); + + suite.addTest( + SetTestSuiteBuilder + .using( + new TestIntegerSetGenerator() { + @Override + protected Set<Integer> create(Integer[] elements) { + // reject duplicates at creation, just so that I can use + // that SetFeature below, which stops a test from running + // that doesn't work. hack! + SortedSet<Integer> set = new TreeSet<Integer>(); + Collections.addAll(set, elements); + checkArgument(set.size() == elements.length); + return Ranges.closed(set.first(), set.last()).asSet(integers()); + } + }) + .withFeatures( + CollectionSize.ONE, + CollectionSize.SEVERAL, + CollectionFeature.KNOWN_ORDER, + CollectionFeature.ALLOWS_NULL_QUERIES, + CollectionFeature.NON_STANDARD_TOSTRING, + CollectionFeature.RESTRICTS_ELEMENTS, + CollectionFeature.REJECTS_DUPLICATES_AT_CREATION) + .suppressing(SetHashCodeTester.getHashCodeMethods()) + .named("DiscreteRange.asSet, closed") + .createTestSuite()); + + return suite; + } + } + + abstract static class TestIntegerSetGenerator implements TestSetGenerator<Integer> { + @Override public SampleElements<Integer> samples() { + return new SampleElements<Integer>(1, 2, 3, 4, 5); + } + + @Override public Set<Integer> create(Object... elements) { + Integer[] array = new Integer[elements.length]; + int i = 0; + for (Object e : elements) { + array[i++] = (Integer) e; + } + return create(array); + } + + protected abstract Set<Integer> create(Integer[] elements); + + @Override public Integer[] createArray(int length) { + return new Integer[length]; + } + + @Override public List<Integer> order(List<Integer> insertionOrder) { + return Ordering.natural().sortedCopy(insertionOrder); + } + } + + public void testNothing() { + /* + * It's a warning if a TestCase subclass contains no tests, so we add one. + * Alternatively, we could stop extending TestCase, but I worry that someone + * will add a test in the future and not realize that it's being ignored. + */ + } +} |