001    /*
002     * $Id: IteratorEnumerationTestCase.java 358692 2005-12-23 03:37:26Z niallp $
003     * $Revision: 358692 $
004     * $Date: 2005-12-23 03:37:26 +0000 (Fri, 23 Dec 2005) $
005     *
006     * ====================================================================
007     *
008     *  Copyright 2005 The Apache Software Foundation
009     * 
010     *  Licensed under the Apache License, Version 2.0 (the "License");
011     *  you may not use this file except in compliance with the License.
012     *  You may obtain a copy of the License at
013     *
014     *      http://www.apache.org/licenses/LICENSE-2.0
015     *
016     *  Unless required by applicable law or agreed to in writing, software
017     *  distributed under the License is distributed on an "AS IS" BASIS,
018     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
019     *  See the License for the specific language governing permissions and
020     *  limitations under the License.
021     *
022     */
023    
024    package org.apache.commons.resources.util;
025    
026    import junit.framework.Test;
027    import junit.framework.TestCase;
028    import junit.framework.TestSuite;
029    import java.util.ArrayList;
030    import java.util.Hashtable;
031    import java.util.Iterator;
032    import java.util.Enumeration;
033    
034    /**
035     * Unit tests for the <code>org.apache.commons.resources.util.IteratorEnumeration</code> class.
036     */
037    public class IteratorEnumerationTestCase extends TestCase {
038        
039        /**
040         * Defines the testcase name for JUnit.
041         *
042         * @param theName the testcase's name.
043         */
044        public IteratorEnumerationTestCase(String theName) {
045            super(theName);
046        }
047    
048        /**
049         * Start the tests.
050         *
051         * @param theArgs the arguments. Not used
052         */
053        public static void main(String[] theArgs) {
054            junit.awtui.TestRunner.main(
055                new String[] { IteratorEnumerationTestCase.class.getName()});
056        }
057    
058        /**
059         * @return a test suite (<code>TestSuite</code>) that includes all methods
060         *         starting with "test"
061         */
062        public static Test suite() {
063            return new TestSuite(IteratorEnumerationTestCase.class);
064        }
065    
066        public void testIterator() {
067    
068            // Wrap an Iterator
069            ArrayList list = new ArrayList();
070            list.add("one");
071            Enumeration enumeration = new IteratorEnumeration(list.iterator());
072            Iterator iterator       = new IteratorEnumeration(list.iterator());
073    
074            // Test Enumeration
075            assertTrue("Enumeration.hasMoreElements(A)", enumeration.hasMoreElements());
076            assertEquals("Enumeration.nextElement", "one", enumeration.nextElement());
077            assertFalse("Enumeration.hasMoreElements(B)", enumeration.hasMoreElements());
078    
079            // Test Iterator
080            assertTrue("Iterator.hasNext(A)", iterator.hasNext());
081            assertEquals("Iterator.next",  "one", iterator.next());
082            assertFalse("Iterator.hasNext(B)", iterator.hasNext());
083            try {
084               iterator.remove();
085               fail("Expected UnsupportedOperationException");
086            } catch(UnsupportedOperationException e) {
087               // expected result
088            }
089    
090        }
091    
092        public void testEnumeration() {
093    
094            // Wrap an Enumeration
095            Hashtable hashtable = new Hashtable();
096            hashtable.put("one", "XXX");
097            Enumeration enumeration = new IteratorEnumeration(hashtable.keys());
098            Iterator iterator       = new IteratorEnumeration(hashtable.keys());
099    
100            // Test Enumeration
101            assertTrue("Enumeration.hasMoreElements(A)", enumeration.hasMoreElements());
102            assertEquals("Enumeration.nextElement", "one", enumeration.nextElement());
103            assertFalse("Enumeration.hasMoreElements(B)", enumeration.hasMoreElements());
104    
105            // Test Iterator
106            assertTrue("Iterator.hasNext(A)", iterator.hasNext());
107            assertEquals("Iterator.next",  "one", iterator.next());
108            assertFalse("Iterator.hasNext(B)", iterator.hasNext());
109    
110            try {
111               iterator.remove();
112               fail("Expected UnsupportedOperationException");
113            } catch(UnsupportedOperationException e) {
114               // expected result
115            }
116    
117            
118        }
119    }