11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/* 21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright (C) 2009 The Guava Authors 31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License"); 51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * you may not use this file except in compliance with the License. 61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * You may obtain a copy of the License at 71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0 91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unless required by applicable law or agreed to in writing, software 111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS, 121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * See the License for the specific language governing permissions and 141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * limitations under the License. 151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpackage com.google.common.collect.testing; 181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.features.CollectionFeature; 201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.features.CollectionSize; 211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.features.ListFeature; 221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junit.framework.Test; 241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junit.framework.TestSuite; 251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.lang.reflect.Method; 271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.AbstractList; 281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.AbstractSequentialList; 291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.ArrayList; 301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Arrays; 311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Collection; 321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Collections; 331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.LinkedList; 341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.List; 351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.ListIterator; 361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.concurrent.CopyOnWriteArrayList; 371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/** 391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Generates a test suite covering the {@link List} implementations in the 401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * {@link java.util} package. Can be subclassed to specify tests that should 411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * be suppressed. 421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Kevin Bourrillion 441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic class TestsForListsInJavaUtil { 461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static Test suite() { 471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return new TestsForListsInJavaUtil().allTests(); 481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public Test allTests() { 511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert TestSuite suite = new TestSuite("java.util Lists"); 521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(testsForEmptyList()); 531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(testsForSingletonList()); 541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(testsForArraysAsList()); 551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(testsForArrayList()); 561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(testsForLinkedList()); 571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(testsForCopyOnWriteArrayList()); 581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(testsForUnmodifiableList()); 591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(testsForCheckedList()); 601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(testsForAbstractList()); 611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(testsForAbstractSequentialList()); 621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return suite; 631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected Collection<Method> suppressForEmptyList() { 661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.emptySet(); 671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected Collection<Method> suppressForSingletonList() { 691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.emptySet(); 701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected Collection<Method> suppressForArraysAsList() { 721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.emptySet(); 731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected Collection<Method> suppressForArrayList() { 751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.emptySet(); 761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected Collection<Method> suppressForLinkedList() { 781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.emptySet(); 791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected Collection<Method> suppressForCopyOnWriteArrayList() { 811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.emptySet(); 821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected Collection<Method> suppressForUnmodifiableList() { 841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.emptySet(); 851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected Collection<Method> suppressForCheckedList() { 871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.emptySet(); 881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected Collection<Method> suppressForAbstractList() { 901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.emptySet(); 911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected Collection<Method> suppressForAbstractSequentialList() { 931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.emptySet(); 941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public Test testsForEmptyList() { 971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return ListTestSuiteBuilder 981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .using(new TestStringListGenerator() { 991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public List<String> create(String[] elements) { 1001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.emptyList(); 1011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }) 1031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .named("emptyList") 1041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures( 1051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.NONE, 1061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionSize.ZERO) 1071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .suppressing(suppressForEmptyList()) 1081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite(); 1091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public Test testsForSingletonList() { 1121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return ListTestSuiteBuilder 1131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .using(new TestStringListGenerator() { 1141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public List<String> create(String[] elements) { 1151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.singletonList(elements[0]); 1161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }) 1181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .named("singletonList") 1191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures( 1201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.NONE, 1211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_VALUES, 1221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionSize.ONE) 1231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .suppressing(suppressForSingletonList()) 1241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite(); 1251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public Test testsForArraysAsList() { 1281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return ListTestSuiteBuilder 1291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .using(new TestStringListGenerator() { 1301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public List<String> create(String[] elements) { 1311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Arrays.asList(elements.clone()); 1321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }) 1341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .named("Arrays.asList") 1351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures( 1361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ListFeature.SUPPORTS_SET, 1371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_VALUES, 1381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionSize.ANY) 1391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .suppressing(suppressForArraysAsList()) 1401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite(); 1411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public Test testsForArrayList() { 1441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return ListTestSuiteBuilder 1451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .using(new TestStringListGenerator() { 1461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public List<String> create(String[] elements) { 1471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return new ArrayList<String>(MinimalCollection.of(elements)); 1481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }) 1501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .named("ArrayList") 1511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures( 1521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ListFeature.GENERAL_PURPOSE, 1531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_VALUES, 1541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionSize.ANY) 1551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .suppressing(suppressForArrayList()) 1561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite(); 1571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public Test testsForLinkedList() { 1601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return ListTestSuiteBuilder 1611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .using(new TestStringListGenerator() { 1621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public List<String> create(String[] elements) { 1631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return new LinkedList<String>(MinimalCollection.of(elements)); 1641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }) 1661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .named("LinkedList") 1671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures( 1681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ListFeature.GENERAL_PURPOSE, 1691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_VALUES, 1701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionSize.ANY) 1711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .suppressing(suppressForLinkedList()) 1721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite(); 1731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public Test testsForCopyOnWriteArrayList() { 1761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return ListTestSuiteBuilder 1771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .using(new TestStringListGenerator() { 1781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public List<String> create(String[] elements) { 1791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return new CopyOnWriteArrayList<String>( 1801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert MinimalCollection.of(elements)); 1811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }) 1831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .named("CopyOnWriteArrayList") 1841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures( 1851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ListFeature.GENERAL_PURPOSE, 1861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_VALUES, 1871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionSize.ANY) 1881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .suppressing(suppressForCopyOnWriteArrayList()) 1891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite(); 1901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public Test testsForUnmodifiableList() { 1931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return ListTestSuiteBuilder 1941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .using(new TestStringListGenerator() { 1951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public List<String> create(String[] elements) { 1961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert List<String> innerList = new ArrayList<String>(); 1971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collections.addAll(innerList, elements); 1981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.unmodifiableList(innerList); 1991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }) 2011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .named("unmodifiableList/ArrayList") 2021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures( 2031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.NONE, 2041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_VALUES, 2051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionSize.ANY) 2061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .suppressing(suppressForUnmodifiableList()) 2071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite(); 2081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public Test testsForCheckedList() { 2111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return ListTestSuiteBuilder 2121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .using(new TestStringListGenerator() { 2131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public List<String> create(String[] elements) { 2141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert List<String> innerList = new ArrayList<String>(); 2151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collections.addAll(innerList, elements); 2161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return Collections.checkedList(innerList, String.class); 2171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }) 2191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .named("checkedList/ArrayList") 2201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures( 2211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ListFeature.GENERAL_PURPOSE, 2221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.RESTRICTS_ELEMENTS, 2231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_VALUES, 2241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionSize.ANY) 2251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .suppressing(suppressForCheckedList()) 2261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite(); 2271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public Test testsForAbstractList() { 2301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return ListTestSuiteBuilder 2311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .using(new TestStringListGenerator () { 2321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override protected List<String> create(final String[] elements) { 2331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return new AbstractList<String>() { 2341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public int size() { 2351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return elements.length; 2361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public String get(int index) { 2381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return elements[index]; 2391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }; 2411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }) 2431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .named("AbstractList") 2441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures( 2451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.NONE, 2461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_VALUES, 2471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionSize.ANY) 2481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .suppressing(suppressForAbstractList()) 2491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite(); 2501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public Test testsForAbstractSequentialList() { 2531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return ListTestSuiteBuilder 2541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .using(new TestStringListGenerator () { 2551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override protected List<String> create(final String[] elements) { 2561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // For this test we trust ArrayList works 2571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert final List<String> list = new ArrayList<String>(); 2581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collections.addAll(list, elements); 2591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return new AbstractSequentialList<String>() { 2601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public int size() { 2611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return list.size(); 2621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public ListIterator<String> listIterator(int index) { 2641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return list.listIterator(index); 2651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }; 2671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }) 2691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .named("AbstractSequentialList") 2701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures( 2711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ListFeature.GENERAL_PURPOSE, 2721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_VALUES, 2731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionSize.ANY) 2741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .suppressing(suppressForAbstractSequentialList()) 2751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite(); 2761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 278