1 17 18 package org.apache.tools.ant.types.selectors; 19 20 import org.apache.tools.ant.BuildException; 21 import org.apache.tools.ant.Project; 22 import org.apache.tools.ant.BuildFileTest; 23 24 import junit.framework.TestCase; 25 import junit.framework.AssertionFailedError; 26 27 import java.io.File ; 28 29 35 public abstract class BaseSelectorTest extends TestCase { 36 37 private Project project; 38 private TaskdefForMakingBed tbed = null; 39 protected String basedirname = "src/etc/testcases/types"; 40 protected String beddirname = basedirname + "/selectortest"; 41 protected String mirrordirname = basedirname + "/selectortest2"; 42 protected File basedir = new File (basedirname); 43 protected File beddir = new File (beddirname); 44 protected File mirrordir = new File (mirrordirname); 45 protected String [] filenames = {".","asf-logo.gif.md5","asf-logo.gif.bz2", 46 "asf-logo.gif.gz","copy.filterset.filtered","zip/asf-logo.gif.zip", 47 "tar/asf-logo.gif.tar","tar/asf-logo-huge.tar.gz", 48 "tar/gz/asf-logo.gif.tar.gz","tar/bz2/asf-logo.gif.tar.bz2", 49 "tar/bz2/asf-logo-huge.tar.bz2","tar/bz2"}; 50 protected File [] files = new File [filenames.length]; 51 protected File [] mirrorfiles = new File [filenames.length]; 52 53 public BaseSelectorTest(String name) { 54 super(name); 55 } 56 57 public void setUp() { 58 project = new Project(); 59 project.init(); 60 project.setBaseDir(basedir); 61 for (int x = 0; x < files.length; x++) { 62 files[x] = new File (beddir,filenames[x]); 63 mirrorfiles[x] = new File (mirrordir,filenames[x]); 64 } 65 } 66 67 70 public abstract BaseSelector getInstance(); 71 72 73 78 public BaseSelector getSelector() { 79 BaseSelector selector = getInstance(); 80 selector.setProject( getProject() ); 81 return selector; 82 } 83 84 85 public Project getProject() { 86 return project; 87 } 88 89 94 public void testRespondsToError() { 95 BaseSelector s = getInstance(); 96 if (s == null) { 97 return; 98 } 99 s.setError("test error"); 100 try { 101 s.isSelected(beddir,filenames[0],files[0]); 102 fail("Cannot cause BuildException when setError() is called"); 103 } catch (BuildException be) { 104 assertEquals("test error", 105 be.getMessage()); 106 } 107 } 108 109 110 115 public String selectionString(FileSelector selector) { 116 return selectionString(beddir,files,selector); 117 } 118 119 126 public String mirrorSelectionString(FileSelector selector) { 127 return selectionString(mirrordir,mirrorfiles,selector); 128 } 129 130 135 public String selectionString(File basedir, File [] files, FileSelector selector) { 136 StringBuffer buf = new StringBuffer (); 137 for (int x = 0; x < files.length; x++) { 138 if (selector.isSelected(basedir,filenames[x],files[x])) { 139 buf.append('T'); 140 } 141 else { 142 buf.append('F'); 143 } 144 } 145 return buf.toString(); 146 } 147 148 155 public void performTests(FileSelector selector, String expected) { 156 String result = selectionString(selector); 157 String diff = diff(expected, result); 158 String resolved = resolve(diff); 159 assertEquals("Differing files: " + resolved, result, expected); 160 } 161 162 170 public String diff(String expected, String result) { 171 int length1 = expected.length(); 172 int length2 = result.length(); 173 int min = (length1 > length2) ? length2 : length1; 174 StringBuffer sb = new StringBuffer (); 175 for (int i=0; i<min; i++) { 176 sb.append( 177 (expected.charAt(i) == result.charAt(i)) 178 ? "-" 179 : "X" 180 ); 181 } 182 return sb.toString(); 183 } 184 185 186 193 public String resolve(String filelist) { 194 StringBuffer sb = new StringBuffer (); 195 int min = (filenames.length > filelist.length()) 196 ? filelist.length() 197 : filenames.length; 198 for (int i=0; i<min; i++) { 199 if ('X'==filelist.charAt(i)) { 200 sb.append(filenames[i]); 201 sb.append(";"); 202 } 203 } 204 return sb.toString(); 205 } 206 207 208 218 protected void makeBed() { 219 tbed = new TaskdefForMakingBed("setupfiles"); 220 tbed.setUp(); 221 tbed.makeTestbed(); 222 } 223 224 228 protected void cleanupBed() { 229 if (tbed != null) { 230 tbed.tearDown(); 231 tbed = null; 232 } 233 } 234 235 236 243 protected void makeMirror() { 244 tbed = new TaskdefForMakingBed("mirrorfiles"); 245 tbed.setUp(); 246 tbed.makeMirror(); 247 } 248 249 253 protected void cleanupMirror() { 254 if (tbed != null) { 255 tbed.deleteMirror(); 256 tbed = null; 257 } 258 } 259 260 private class TaskdefForMakingBed extends BuildFileTest { 261 262 TaskdefForMakingBed(String name) { 263 super(name); 264 } 265 266 public void setUp() { 267 configureProject("src/etc/testcases/types/selectors.xml"); 268 } 269 270 public void tearDown() { 271 executeTarget("cleanup"); 272 } 273 274 public void makeTestbed() { 275 executeTarget("setupfiles"); 276 } 277 278 public void makeMirror() { 279 executeTarget("mirrorfiles"); 280 } 281 282 public void deleteMirror() { 283 executeTarget("cleanup.mirrorfiles"); 284 } 285 } 286 287 288 289 } 290 | Popular Tags |