Coverage Summary for Class: ListListIteratorTester (com.google.common.collect.testing.testers)
| Class | Method, % | Line, % |
|---|---|---|
| ListListIteratorTester | 88.9% (8/9) | 80% (20/25) |
| ListListIteratorTester$1 | 100% (3/3) | 100% (5/5) |
| Total | 91.7% (11/12) | 83.3% (25/30) |
1 /* 2 * Copyright (C) 2007 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.testers; 18 19 import static com.google.common.collect.testing.IteratorFeature.MODIFIABLE; 20 import static com.google.common.collect.testing.IteratorFeature.UNMODIFIABLE; 21 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_REMOVE; 22 import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_ADD_WITH_INDEX; 23 import static com.google.common.collect.testing.features.ListFeature.SUPPORTS_SET; 24 import static com.google.common.collect.testing.testers.Platform.listListIteratorTesterNumIterations; 25 import static java.util.Collections.singleton; 26 27 import com.google.common.annotations.GwtCompatible; 28 import com.google.common.annotations.GwtIncompatible; 29 import com.google.common.collect.testing.Helpers; 30 import com.google.common.collect.testing.IteratorFeature; 31 import com.google.common.collect.testing.ListIteratorTester; 32 import com.google.common.collect.testing.features.CollectionFeature; 33 import com.google.common.collect.testing.features.ListFeature; 34 import java.lang.reflect.Method; 35 import java.util.List; 36 import java.util.ListIterator; 37 import java.util.Set; 38 import java.util.concurrent.CopyOnWriteArraySet; 39 import org.junit.Ignore; 40 41 /** 42 * A generic JUnit test which tests {@code listIterator} operations on a list. Can't be invoked 43 * directly; please see {@link com.google.common.collect.testing.ListTestSuiteBuilder}. 44 * 45 * @author Chris Povirk 46 * @author Kevin Bourrillion 47 */ 48 @GwtCompatible(emulated = true) 49 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests. 50 public class ListListIteratorTester<E> extends AbstractListTester<E> { 51 @CollectionFeature.Require(absent = SUPPORTS_REMOVE) 52 @ListFeature.Require(absent = {SUPPORTS_SET, SUPPORTS_ADD_WITH_INDEX}) 53 public void testListIterator_unmodifiable() { 54 runListIteratorTest(UNMODIFIABLE); 55 } 56 57 /* 58 * For now, we don't cope with testing this when the list supports only some 59 * modification operations. 60 */ 61 @CollectionFeature.Require(SUPPORTS_REMOVE) 62 @ListFeature.Require({SUPPORTS_SET, SUPPORTS_ADD_WITH_INDEX}) 63 public void testListIterator_fullyModifiable() { 64 runListIteratorTest(MODIFIABLE); 65 } 66 67 private void runListIteratorTest(Set<IteratorFeature> features) { 68 new ListIteratorTester<E>( 69 listListIteratorTesterNumIterations(), 70 singleton(e4()), 71 features, 72 Helpers.copyToList(getOrderedElements()), 73 0) { 74 @Override 75 protected ListIterator<E> newTargetIterator() { 76 resetCollection(); 77 return getList().listIterator(); 78 } 79 80 @Override 81 protected void verify(List<E> elements) { 82 expectContents(elements); 83 } 84 }.test(); 85 } 86 87 public void testListIterator_tooLow() { 88 try { 89 getList().listIterator(-1); 90 fail(); 91 } catch (IndexOutOfBoundsException expected) { 92 } 93 } 94 95 public void testListIterator_tooHigh() { 96 try { 97 getList().listIterator(getNumElements() + 1); 98 fail(); 99 } catch (IndexOutOfBoundsException expected) { 100 } 101 } 102 103 public void testListIterator_atSize() { 104 getList().listIterator(getNumElements()); 105 // TODO: run the iterator through ListIteratorTester 106 } 107 108 /** 109 * Returns the {@link Method} instance for {@link #testListIterator_fullyModifiable()} so that 110 * tests of {@link CopyOnWriteArraySet} can suppress it with {@code 111 * FeatureSpecificTestSuiteBuilder.suppressing()} until <a 112 * href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570575">Sun bug 6570575</a> is fixed. 113 */ 114 @GwtIncompatible // reflection 115 public static Method getListIteratorFullyModifiableMethod() { 116 return Helpers.getMethod(ListListIteratorTester.class, "testListIterator_fullyModifiable"); 117 } 118 119 /** 120 * Returns the {@link Method} instance for {@link #testListIterator_unmodifiable()} so that it can 121 * be suppressed in GWT tests. 122 */ 123 @GwtIncompatible // reflection 124 public static Method getListIteratorUnmodifiableMethod() { 125 return Helpers.getMethod(ListListIteratorTester.class, "testListIterator_unmodifiable"); 126 } 127 }