aboutsummaryrefslogtreecommitdiffstats
path: root/guava-tests/test/com/google/common/collect/ContiguousSetNonGwtTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'guava-tests/test/com/google/common/collect/ContiguousSetNonGwtTest.java')
-rw-r--r--guava-tests/test/com/google/common/collect/ContiguousSetNonGwtTest.java110
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.
+ */
+ }
+}