001package org.jadira.bindings.core.utils.lang;
002
003import static org.junit.Assert.assertEquals;
004import static org.junit.Assert.assertFalse;
005import static org.junit.Assert.assertTrue;
006import static org.junit.Assert.fail;
007
008import java.util.Iterator;
009import java.util.NoSuchElementException;
010import java.util.Vector;
011
012import org.junit.BeforeClass;
013import org.junit.Test;
014
015public class IterableEnumerationTest {
016
017    private static final Vector<String> ELEMENTS = new Vector<String>();
018    
019    @BeforeClass
020    public static void setup() {
021        ELEMENTS.add("FOO");
022        ELEMENTS.add("BAR");
023        ELEMENTS.add("THE_END");
024    }
025    
026    @Test
027    public void testIterableEnumeration() {
028        
029        Iterable<String> testIterable = new IterableEnumeration<String>(ELEMENTS.elements());
030        Iterator<String> myIter = testIterable.iterator();
031        
032        testValues(myIter);
033
034        testIterable = IterableEnumeration.wrapEnumeration(ELEMENTS.elements());
035        myIter = testIterable.iterator();
036        
037        testValues(myIter);
038
039    }
040
041    private void testValues(Iterator<String> myIter) {
042        
043        assertTrue(myIter.hasNext());
044        assertEquals("FOO", myIter.next());
045        assertTrue(myIter.hasNext());
046        assertEquals("BAR", myIter.next());
047        assertTrue(myIter.hasNext());
048        assertEquals("THE_END", myIter.next());
049        assertFalse(myIter.hasNext());
050        try {
051            myIter.next();
052            fail("Should throw NoSuchElementException");
053        } catch (NoSuchElementException e) {
054            // expected
055        }
056    }
057}