1 4 package org.oddjob.io; 5 6 import java.io.ByteArrayInputStream ; 7 import java.io.File ; 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.apache.commons.beanutils.PropertyUtils; 15 import org.apache.log4j.Logger; 16 import org.oddjob.Helper; 17 import org.oddjob.Oddjob; 18 import org.oddjob.arooa.reflect.IntrospectionHelper; 19 import org.oddjob.framework.SimpleJob; 20 import org.oddjob.state.JobState; 21 22 26 public class FilesTypeTest extends TestCase { 27 private static final Logger logger = Logger.getLogger(FilesTypeTest.class); 28 29 public void testPattern() { 30 FilesType f = new FilesType(); 31 f.setFiles(new File [] { new File ("lib/core/*.jar") }); 32 File [] fs = (File []) f.valueFor(File [].class); 33 assertTrue(fs.length > 1); 34 for (int i = 0; i < fs.length; ++i) { 35 System.out.println(fs[i]); 36 } 37 } 38 39 public void testNestedFileList() { 40 FilesType f = new FilesType(); 41 f.setFiles(new File [] { new File ("lib/core/*.jar") }); 42 43 File [] fs = (File []) f.valueFor(File [].class); 44 assertTrue(fs.length > 1); 45 46 for (int i = 0; i < fs.length; ++i) { 47 System.out.println(fs[i]); 48 } 49 } 50 51 public void testXMLCreate() { 52 String xml = "<files files='*.txt'/>"; 53 54 FilesType ft = (FilesType) Helper.createTypeFromXml(xml); 55 56 assertEquals(new File ("*.txt"), ft.getFiles()[0]); 57 } 58 59 public void testXMLCreate2() { 60 String xml = 61 "<files>" + 62 " <files>" + 63 " <files files='test/io/reference/test*.txt'/>" + 64 " <files files='test/io/reference/test2.txt'/>" + 65 " </files>" + 66 "</files>"; 67 68 FilesType ft = (FilesType) Helper.createTypeFromXml(xml); 69 70 assertEquals(3, ft.getFiles().length); 71 72 logger.debug(ft.getFiles()[0]); 73 logger.debug(ft.getFiles()[1]); 74 logger.debug(ft.getFiles()[2]); 75 76 Set set = new HashSet (Arrays.asList(ft.getFiles())); 77 assertTrue(set.contains(new File ("test/io/reference/test1.txt"))); 78 } 79 80 public void testXMLCreate3() { 81 String xml = 82 "<files>" + 83 " <files>" + 84 " <files files='test/io/reference/test*.txt'/>" + 85 " </files>" + 86 "</files>"; 87 88 FilesType ft = (FilesType) Helper.createTypeFromXml(xml); 89 90 assertEquals(2, ft.getFiles().length); 91 92 logger.debug(ft.getFiles()[0]); 93 logger.debug(ft.getFiles()[1]); 94 95 Set set = new HashSet (Arrays.asList(ft.getFiles())); 96 assertTrue(set.contains(new File ("test/io/reference/test1.txt"))); 97 } 98 99 public static class MyFiles extends SimpleJob { 100 File [] files; 101 public void setFiles(File [] files) { 102 this.files = Files.expand(files); 103 } 104 public int execute() { 105 return 0; 106 } 107 } 108 109 public void testInOddjob() { 110 String xml = "<oddjob>" + 111 "<sequential>" + 112 "<variables id='v'><system name='java.home'/></variables>" + 113 "<mine id='mine' class='" + MyFiles.class.getName() + "' " + 114 "files='${v.java.home}/lib/*.jar'>" + 115 "</mine>" + 116 "</sequential></oddjob>"; 117 118 Oddjob oj = new Oddjob(); 119 oj.setInput(new ByteArrayInputStream (xml.getBytes())); 120 oj.run(); 121 122 assertEquals(JobState.COMPLETE, oj.lastJobStateEvent().getJobState()); 123 124 MyFiles mine = (MyFiles) oj.lookup("mine"); 125 assertTrue(mine.files.length > 1); 126 } 127 128 public void testInOddjob2() throws Exception { 129 String xml = "<oddjob>" + 130 "<variables id='v'>" + 131 "<files name='files'>" + 132 " <files>" + 133 " <files files='test/io/reference/test*.txt'/>" + 134 " <files files='test/io/reference/test2.txt'/>" + 135 " </files>" + 136 "</files>" + 137 "</variables>" + 138 "</oddjob>"; 139 140 Oddjob oj = new Oddjob(); 141 oj.setInput(new ByteArrayInputStream (xml.getBytes())); 142 oj.run(); 143 144 assertEquals(JobState.COMPLETE, oj.lastJobStateEvent().getJobState()); 145 146 Object v = oj.lookup("v"); 147 Object f = PropertyUtils.getProperty(v, "files"); 148 File [] files = (File []) IntrospectionHelper.valueFor(f); 149 assertEquals(2, files.length); 150 } 151 } 152 | Popular Tags |