KickJava   Java API By Example, From Geeks To Geeks.

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


1 /*
2  * Copyright (c) 2005, Rob Gordon.
3  */

4 package org.oddjob.io;
5
6 import java.io.ByteArrayInputStream JavaDoc;
7 import java.io.File 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.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 /**
23  *
24  * @author Rob Gordon.
25  */

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 JavaDoc[] { new File JavaDoc("lib/core/*.jar") });
32         File JavaDoc[] fs = (File JavaDoc[]) f.valueFor(File JavaDoc[].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 JavaDoc[] { new File JavaDoc("lib/core/*.jar") });
42
43         File JavaDoc[] fs = (File JavaDoc[]) f.valueFor(File JavaDoc[].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 JavaDoc xml = "<files files='*.txt'/>";
53         
54         FilesType ft = (FilesType) Helper.createTypeFromXml(xml);
55         
56         assertEquals(new File JavaDoc("*.txt"), ft.getFiles()[0]);
57     }
58     
59     public void testXMLCreate2() {
60         String JavaDoc 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 JavaDoc set = new HashSet JavaDoc(Arrays.asList(ft.getFiles()));
77         assertTrue(set.contains(new File JavaDoc("test/io/reference/test1.txt")));
78     }
79     
80     public void testXMLCreate3() {
81         String JavaDoc 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 JavaDoc set = new HashSet JavaDoc(Arrays.asList(ft.getFiles()));
96         assertTrue(set.contains(new File JavaDoc("test/io/reference/test1.txt")));
97     }
98     
99     public static class MyFiles extends SimpleJob {
100         File JavaDoc[] files;
101         public void setFiles(File JavaDoc[] files) {
102             this.files = Files.expand(files);
103         }
104         public int execute() {
105             return 0;
106         }
107     }
108     
109     public void testInOddjob() {
110         String JavaDoc 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 JavaDoc(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 JavaDoc {
129         String JavaDoc 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 JavaDoc(xml.getBytes()));
142         oj.run();
143         
144         assertEquals(JobState.COMPLETE, oj.lastJobStateEvent().getJobState());
145         
146         Object JavaDoc v = oj.lookup("v");
147         Object JavaDoc f = PropertyUtils.getProperty(v, "files");
148         File JavaDoc[] files = (File JavaDoc[]) IntrospectionHelper.valueFor(f);
149         assertEquals(2, files.length);
150     }
151 }
152
Popular Tags