package liquibase.resource; import static org.easymock.EasyMock.*; import org.junit.After; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Enumeration; import java.util.Vector; public class CompositeFileOpenerTest { ResourceAccessor first; ResourceAccessor second; ResourceAccessor hasDir; ResourceAccessor noDir; CompositeResourceAccessor composite; InputStream validStream; Enumeration<URL> empty; Enumeration<URL> hasElements; @Before public void setUp() throws IOException { first = createMock(ResourceAccessor.class); second = createMock(ResourceAccessor.class); composite = new CompositeResourceAccessor(first,second); validStream = this.getClass().getClassLoader().getResourceAsStream("liquibase/resource/CompositeFileOpenerTest.class"); empty = new Vector<URL>().elements(); hasElements = this.getClass().getClassLoader().getResources("liquibase"); } @After public void tearDown() throws IOException { validStream.close(); } @Test public void streamFirstHas() throws IOException { expect(first.getResourceAsStream("file")).andReturn(validStream); replay(first); replay(second); InputStream is = composite.getResourceAsStream("file"); assertEquals(validStream,is); verify(first); verify(second); } @Test public void streamSecondHas() throws IOException { expect(first.getResourceAsStream("file")).andReturn(null); expect(second.getResourceAsStream("file")).andReturn(validStream); replay(first); replay(second); InputStream is = composite.getResourceAsStream("file"); assertEquals(validStream,is); verify(first); verify(second); } @Test public void streamNeitherHas() throws IOException { expect(first.getResourceAsStream("file")).andReturn(null); expect(second.getResourceAsStream("file")).andReturn(null); replay(first); replay(second); InputStream is = composite.getResourceAsStream("file"); assertNull(is); verify(first); verify(second); } @Test public void resourcesFirstHas() throws IOException { expect(first.getResources("file")).andReturn(hasElements); //expect(second.getResources("file")).andReturn(empty); replay(first); replay(second); Enumeration<URL> urls = composite.getResources("file"); // assertEquals(hasElements,urls); verify(first); verify(second); } @Test public void resourcesSecondHas() throws IOException { expect(first.getResources("file")).andReturn(empty); expect(second.getResources("file")).andReturn(hasElements); replay(first); replay(second); Enumeration<URL> urls = composite.getResources("file"); // assertEquals(hasElements,urls); verify(first); verify(second); } @Test public void resourcesNeitherHas() throws IOException { expect(first.getResources("file")).andReturn(empty); expect(second.getResources("file")).andReturn(empty); replay(first); replay(second); Enumeration<URL> urls = composite.getResources("file"); assertFalse(urls.hasMoreElements()); assertFalse(urls == empty); verify(first); verify(second); } }