KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > oddjob > io > WildcardSpecTest


1 /*
2  * (c) Rob Gordon 2005
3  */

4 package org.oddjob.io;
5
6 import java.io.File JavaDoc;
7 import java.io.IOException JavaDoc;
8 import java.util.Arrays JavaDoc;
9 import java.util.HashSet JavaDoc;
10 import java.util.Set JavaDoc;
11
12 import junit.framework.TestCase;
13
14 import org.oddjob.io.WildcardSpec.AboveAndBelow;
15 import org.oddjob.io.WildcardSpec.DirectorySplit;
16
17 public class WildcardSpecTest extends TestCase {
18
19     File JavaDoc cwd = new File JavaDoc(".").getAbsoluteFile().getParentFile();
20     
21     
22     public void testAboveAndBelow() throws IOException JavaDoc {
23         File JavaDoc f = new File JavaDoc("a/b/*/c/*");
24         AboveAndBelow ab1 = new AboveAndBelow(f);
25         
26         assertEquals(new File JavaDoc("a/b/*/c"), ab1.parent);
27         assertEquals("*", ab1.name);
28         assertNull(ab1.below);
29         assertFalse(ab1.top);
30
31         AboveAndBelow ab2 = new AboveAndBelow(ab1);
32         assertEquals(new File JavaDoc("a/b/*"), ab2.parent);
33         assertEquals("c", ab2.name);
34         assertEquals(new File JavaDoc("*"), ab2.below);
35         assertFalse(ab2.top);
36
37         AboveAndBelow ab3 = new AboveAndBelow(ab2);
38         assertEquals(new File JavaDoc("a/b"), ab3.parent);
39         assertEquals("*", ab3.name);
40         assertEquals(new File JavaDoc("c/*"), ab3.below);
41         assertFalse(ab3.top);
42         
43         AboveAndBelow ab4 = new AboveAndBelow(ab3);
44         assertEquals(new File JavaDoc("a"), ab4.parent);
45         assertEquals("b", ab4.name);
46         assertEquals(new File JavaDoc("*/c/*"), ab4.below);
47         assertFalse(ab4.top);
48
49         AboveAndBelow ab5 = new AboveAndBelow(ab4);
50         assertEquals(new File JavaDoc(".").getAbsoluteFile().getParentFile(), ab5.parent);
51         assertEquals("a", ab5.name);
52         assertEquals(new File JavaDoc("b/*/c/*"), ab5.below);
53         assertTrue(ab5.top);
54     }
55     
56     public void testAboveAndBelow2() throws IOException JavaDoc {
57         File JavaDoc f = new File JavaDoc("/");
58         AboveAndBelow ab1 = new AboveAndBelow(f);
59         
60         assertNull(ab1.parent);
61         assertEquals("", ab1.name);
62         assertNull(ab1.below);
63         assertTrue(ab1.top);
64    }
65         
66     public void testAboveAndBelow3() throws IOException JavaDoc {
67         File JavaDoc f = new File JavaDoc("/a/b");
68         
69         AboveAndBelow ab1 = new AboveAndBelow(f);
70         
71         assertEquals(new File JavaDoc("/a"), ab1.parent);
72         assertEquals("b", ab1.name);
73         assertNull(ab1.below);
74         assertFalse(ab1.top);
75         
76         AboveAndBelow ab2 = new AboveAndBelow(ab1);
77         
78         assertEquals(new File JavaDoc("/"), ab2.parent);
79         assertEquals("a", ab2.name);
80         assertEquals(new File JavaDoc("b"), ab2.below);
81         assertTrue(ab2.top);
82    }
83     
84     public void testSplitRelative() {
85         DirectorySplit test = new DirectorySplit(new File JavaDoc("a/b/*/c/*"));
86         assertEquals(3, test.getSize());
87                 
88         assertEquals(new File JavaDoc("a/b"), test.getParentFile());
89         assertEquals("*", test.getName());
90         
91         test = test.next("x");
92         
93         assertEquals(new File JavaDoc("a/b/x"), test.getParentFile());
94         assertEquals("c", test.getName());
95         
96         test = test.next("c");
97         
98         assertEquals(new File JavaDoc("a/b/x/c"), test.getParentFile());
99         assertEquals("*", test.getName());
100         
101         assertNull(test.next("foo"));
102     }
103     
104     public void testSplitAbsolute() {
105         DirectorySplit test = new DirectorySplit(new File JavaDoc("/a/b/*/c/*"));
106         assertEquals(3, test.getSize());
107                 
108         assertEquals(new File JavaDoc("/a/b"), test.getParentFile());
109         assertEquals("*", test.getName());
110         
111         test = test.next("x");
112         
113         assertEquals(new File JavaDoc("/a/b/x"), test.getParentFile());
114         assertEquals("c", test.getName());
115         
116         test = test.next("c");
117         
118         assertEquals(new File JavaDoc("/a/b/x/c"), test.getParentFile());
119         assertEquals("*", test.getName());
120         
121         assertNull(test.next("foo"));
122     }
123     
124     public void testSimple() {
125         WildcardSpec test = new WildcardSpec("test/io/reference/test*");
126
127         File JavaDoc[] result = test.findFiles();
128         assertEquals(2, result.length);
129         
130         Set JavaDoc set = new HashSet JavaDoc(Arrays.asList(result));
131         assertTrue(set.contains(new File JavaDoc("test/io/reference/test1.txt")));
132         assertTrue(set.contains(new File JavaDoc("test/io/reference/test2.txt")));
133     }
134     
135     public void testHarder() {
136         WildcardSpec test = new WildcardSpec("test/io/reference/*/x/*.txt");
137
138         File JavaDoc[] result = test.findFiles();
139         assertEquals(2, result.length);
140         
141         Set JavaDoc set = new HashSet JavaDoc(Arrays.asList(result));
142         assertTrue(set.contains(new File JavaDoc("test/io/reference/a/x/test3.txt")));
143         assertTrue(set.contains(new File JavaDoc("test/io/reference/b/x/test4.txt")));
144     }
145
146     public void testHarder2() {
147         WildcardSpec test = new WildcardSpec(
148                 new File JavaDoc(cwd, "test/io/reference/*/*/*.txt").getPath());
149
150         File JavaDoc[] result = test.findFiles();
151         assertEquals(3, result.length);
152         
153         Set JavaDoc set = new HashSet JavaDoc(Arrays.asList(result));
154         assertTrue(set.contains(new File JavaDoc(cwd, "test/io/reference/a/x/test3.txt")));
155         assertTrue(set.contains(new File JavaDoc(cwd, "test/io/reference/b/x/test4.txt")));
156         assertTrue(set.contains(new File JavaDoc(cwd, "test/io/reference/a/y/test5.txt")));
157     }
158 }
159
Popular Tags