1 package liquibase.resource;
2
3 import static org.junit.Assert.*;
4 import org.junit.Before;
5 import org.junit.Test;
6
7 import java.io.File;
8 import java.io.IOException;
9 import java.net.URI;
10 import java.net.URISyntaxException;
11 import java.net.URL;
12 import java.util.Enumeration;
13
14
15 public class FileSystemFileOpenerTest {
16 FileSystemResourceAccessor opener;
17
18 @Before
19 public void createFileOpener() throws URISyntaxException {
20 File thisClassFile = new File(new URI(this.getClass().getClassLoader().getResource("liquibase/resource/FileSystemResourceAccessor.class").toExternalForm()));
21 String packageDirectory = thisClassFile.getParent();
22
23
24 opener = new FileSystemResourceAccessor(packageDirectory);
25 }
26
27 @Test(expected = IllegalArgumentException.class)
28 public void onlyAcceptsDirectories() throws URISyntaxException {
29 File thisClassFile = new File(new URI(this.getClass().getClassLoader().getResource("liquibase/resource/FileSystemResourceAccessor.class").toExternalForm()));
30
31 ResourceAccessor o = new FileSystemResourceAccessor(thisClassFile.getAbsolutePath());
32 }
33
34 @Test
35 public void singleFileTest() throws IOException {
36 assertNotNull(opener.getResourceAsStream("FileSystemResourceAccessor.class"));
37 }
38
39 @Test
40 public void multipleFileTest() throws IOException {
41 Enumeration<URL> files = opener.getResources(".");
42 boolean found = false;
43 while(files.hasMoreElements()) {
44 URL u = files.nextElement();
45 found |=u.getFile().lastIndexOf("FileSystemResourceAccessor")>-1;
46 }
47 assertTrue(found);
48 }
49
50 @Test
51 public void ahphabeticalOrderTest() throws IOException {
52 Enumeration<URL> files = opener.getResources(".");
53 boolean correct = false;
54 String lastFile = null;
55 while(files.hasMoreElements()) {
56 URL u = files.nextElement();
57 String currentFile = u.getFile().substring(u.getFile().lastIndexOf("/") + 1);
58 if (lastFile != null) {
59 correct |= lastFile.compareTo(currentFile) < 0;
60 }
61 lastFile = currentFile;
62 }
63
64 assertTrue(correct);
65 }
66 }