View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.collections.primitives;
18  
19  import java.util.Iterator;
20  import java.util.NoSuchElementException;
21  
22  import org.apache.commons.collections.iterators.AbstractTestIterator;
23  import org.apache.commons.collections.primitives.adapters.DoubleIteratorIterator;
24  
25  /**
26   * @version $Revision: 480451 $ $Date: 2006-11-29 02:45:08 -0500 (Wed, 29 Nov 2006) $
27   * @author Rodney Waldhoff
28   */
29  public abstract class TestDoubleIterator extends AbstractTestIterator {
30  
31      // conventional
32      // ------------------------------------------------------------------------
33  
34      public TestDoubleIterator(String testName) {
35          super(testName);
36      }
37  
38      // collections testing framework
39      // ------------------------------------------------------------------------
40  
41      public Iterator makeEmptyIterator() {
42          return DoubleIteratorIterator.wrap(makeEmptyDoubleIterator());
43      }
44  
45      public Iterator makeFullIterator() {
46          return DoubleIteratorIterator.wrap(makeFullDoubleIterator());
47      }
48  
49  
50      protected abstract DoubleIterator makeEmptyDoubleIterator();
51      protected abstract DoubleIterator makeFullDoubleIterator();
52      protected abstract double[] getFullElements();
53  
54      // tests
55      // ------------------------------------------------------------------------
56      
57      public void testNextHasNextRemove() {
58          double[] elements = getFullElements();
59          DoubleIterator iter = makeFullDoubleIterator();
60          for(int i=0;i<elements.length;i++) {
61              assertTrue(iter.hasNext());
62              assertEquals(elements[i],iter.next(),0f);
63              if(supportsRemove()) {
64                  iter.remove();
65              }
66          }        
67          assertTrue(! iter.hasNext() );
68      }
69  
70      public void testEmptyDoubleIterator() {
71          assertTrue( ! makeEmptyDoubleIterator().hasNext() );
72          try {
73              makeEmptyDoubleIterator().next();
74              fail("Expected NoSuchElementException");
75          } catch(NoSuchElementException e) {
76              // expected
77          }
78          if(supportsRemove()) {
79              try {
80                  makeEmptyDoubleIterator().remove();
81                  fail("Expected IllegalStateException");
82              } catch(IllegalStateException e) {
83                  // expected
84              }
85          }        
86      }
87  
88      public void testRemoveBeforeNext() {
89          if(supportsRemove()) {
90              try {
91                  makeFullDoubleIterator().remove();
92                  fail("Expected IllegalStateException");
93              } catch(IllegalStateException e) {
94                  // expected
95              }
96          }        
97      }
98  
99      public void testRemoveAfterRemove() {
100         if(supportsRemove()) {
101             DoubleIterator iter = makeFullDoubleIterator();
102             iter.next();
103             iter.remove();
104             try {
105                 iter.remove();
106                 fail("Expected IllegalStateException");
107             } catch(IllegalStateException e) {
108                 // expected
109             }
110         }        
111     }
112 }