1 4 package org.oddjob.io; 5 6 import java.io.File ; 7 import java.io.IOException ; 8 import java.util.Arrays ; 9 import java.util.HashSet ; 10 import java.util.Set ; 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 cwd = new File (".").getAbsoluteFile().getParentFile(); 20 21 22 public void testAboveAndBelow() throws IOException { 23 File f = new File ("a/b/*/c/*"); 24 AboveAndBelow ab1 = new AboveAndBelow(f); 25 26 assertEquals(new File ("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 ("a/b/*"), ab2.parent); 33 assertEquals("c", ab2.name); 34 assertEquals(new File ("*"), ab2.below); 35 assertFalse(ab2.top); 36 37 AboveAndBelow ab3 = new AboveAndBelow(ab2); 38 assertEquals(new File ("a/b"), ab3.parent); 39 assertEquals("*", ab3.name); 40 assertEquals(new File ("c/*"), ab3.below); 41 assertFalse(ab3.top); 42 43 AboveAndBelow ab4 = new AboveAndBelow(ab3); 44 assertEquals(new File ("a"), ab4.parent); 45 assertEquals("b", ab4.name); 46 assertEquals(new File ("*/c/*"), ab4.below); 47 assertFalse(ab4.top); 48 49 AboveAndBelow ab5 = new AboveAndBelow(ab4); 50 assertEquals(new File (".").getAbsoluteFile().getParentFile(), ab5.parent); 51 assertEquals("a", ab5.name); 52 assertEquals(new File ("b/*/c/*"), ab5.below); 53 assertTrue(ab5.top); 54 } 55 56 public void testAboveAndBelow2() throws IOException { 57 File f = new File ("/"); 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 { 67 File f = new File ("/a/b"); 68 69 AboveAndBelow ab1 = new AboveAndBelow(f); 70 71 assertEquals(new File ("/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 ("/"), ab2.parent); 79 assertEquals("a", ab2.name); 80 assertEquals(new File ("b"), ab2.below); 81 assertTrue(ab2.top); 82 } 83 84 public void testSplitRelative() { 85 DirectorySplit test = new DirectorySplit(new File ("a/b/*/c/*")); 86 assertEquals(3, test.getSize()); 87 88 assertEquals(new File ("a/b"), test.getParentFile()); 89 assertEquals("*", test.getName()); 90 91 test = test.next("x"); 92 93 assertEquals(new File ("a/b/x"), test.getParentFile()); 94 assertEquals("c", test.getName()); 95 96 test = test.next("c"); 97 98 assertEquals(new File ("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 ("/a/b/*/c/*")); 106 assertEquals(3, test.getSize()); 107 108 assertEquals(new File ("/a/b"), test.getParentFile()); 109 assertEquals("*", test.getName()); 110 111 test = test.next("x"); 112 113 assertEquals(new File ("/a/b/x"), test.getParentFile()); 114 assertEquals("c", test.getName()); 115 116 test = test.next("c"); 117 118 assertEquals(new File ("/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 [] result = test.findFiles(); 128 assertEquals(2, result.length); 129 130 Set set = new HashSet (Arrays.asList(result)); 131 assertTrue(set.contains(new File ("test/io/reference/test1.txt"))); 132 assertTrue(set.contains(new File ("test/io/reference/test2.txt"))); 133 } 134 135 public void testHarder() { 136 WildcardSpec test = new WildcardSpec("test/io/reference/*/x/*.txt"); 137 138 File [] result = test.findFiles(); 139 assertEquals(2, result.length); 140 141 Set set = new HashSet (Arrays.asList(result)); 142 assertTrue(set.contains(new File ("test/io/reference/a/x/test3.txt"))); 143 assertTrue(set.contains(new File ("test/io/reference/b/x/test4.txt"))); 144 } 145 146 public void testHarder2() { 147 WildcardSpec test = new WildcardSpec( 148 new File (cwd, "test/io/reference/*/*/*.txt").getPath()); 149 150 File [] result = test.findFiles(); 151 assertEquals(3, result.length); 152 153 Set set = new HashSet (Arrays.asList(result)); 154 assertTrue(set.contains(new File (cwd, "test/io/reference/a/x/test3.txt"))); 155 assertTrue(set.contains(new File (cwd, "test/io/reference/b/x/test4.txt"))); 156 assertTrue(set.contains(new File (cwd, "test/io/reference/a/y/test5.txt"))); 157 } 158 } 159 | Popular Tags |