1   package net.sourceforge.jpotpourri.util;
2   
3   import java.io.BufferedWriter;
4   import java.io.File;
5   import java.io.FileWriter;
6   
7   import net.sourceforge.jpotpourri.TestProperties;
8   
9   import org.apache.commons.logging.Log;
10  import org.apache.commons.logging.LogFactory;
11  
12  
13  
14  
15  public class FileUtilTest extends AbstractUtilTestCase {
16  
17  	private static final Log LOG = LogFactory.getLog(FileUtilTest.class);
18  	
19  	public final void testExtractExtensionFile() {
20  		assertEquals("xml", FileUtil.extractExtension(new File("asdf.xml")));
21  		assertEquals("xml", FileUtil.extractExtension(new File("/somewhere/asdf.xml")));
22  
23  		assertEquals("asd", FileUtil.extractExtension(new File("asdf.xml.asd")));
24  		assertEquals("asd", FileUtil.extractExtension(new File("/somewhere/asdf.xml.asd")));
25  
26  		assertNull(FileUtil.extractExtension(new File("asdf")));
27  		assertNull(FileUtil.extractExtension(new File("/somewhere/asdf")));
28  	}
29  
30  	public final void testExtractExtensionString() {
31  		assertEquals("xml", FileUtil.extractExtension("asdf.xml"));
32  		assertEquals("xml", FileUtil.extractExtension("/somewhere/asdf.xml"));
33  
34  		assertEquals("asd", FileUtil.extractExtension("asdf.xml.asd"));
35  		assertEquals("asd", FileUtil.extractExtension("/somewhere/asdf.xml.asd"));
36  		
37  		assertNull(FileUtil.extractExtension("asdf"));
38  		assertNull(FileUtil.extractExtension("/somewhere/asdf"));
39  	}
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  	public final void testDeleteDirectoryRecursive() throws Exception {
62  		final String testRootPath = TestProperties.getInstance().getTestRootPath();
63  		final File testRootFile = new File(testRootPath);
64  		if(testRootFile.exists() == false) {
65  			LOG.debug("Creating test rootfolder: " + testRootPath);
66  			final boolean created = testRootFile.mkdirs();
67  			if(created == false) {
68  				throw new RuntimeException("Could not create test rootfolder [" + testRootPath + "]!");
69  			}
70  		}
71  		final int expectedFileCount = testRootFile.listFiles().length;
72  		
73  		final File dir2DeleteParent = new File(testRootFile, "dir2DeleteParent");
74  		final File dir2DeleteSub = new File(dir2DeleteParent, "dir2DeleteSub");
75  		if(dir2DeleteSub.mkdirs() == false) {
76  			throw new RuntimeException("Could not create directory [" + dir2DeleteSub.getAbsolutePath() + "]!");
77  		}
78  		
79  		final BufferedWriter writer1 = new BufferedWriter(new FileWriter(new File(dir2DeleteParent, "file1_delme")));
80  		try {
81  			writer1.write("abcd");
82  		} finally {
83  			CloseUtil.close(writer1);
84  		}
85  		
86  		final BufferedWriter writer2 = new BufferedWriter(new FileWriter(new File(dir2DeleteSub, "file2_delme")));
87  		try {
88  			writer2.write("efgh");
89  		} finally {
90  			CloseUtil.close(writer2);
91  		}
92  		
93  		FileUtil.deleteDirectoryRecursive(dir2DeleteParent);
94  		
95  		assertEquals(expectedFileCount, testRootFile.listFiles().length);
96  		
97  		try {
98  			FileUtil.deleteDirectoryRecursive(dir2DeleteParent);
99  			fail("Should have thrown exception");
100 		} catch (IllegalArgumentException e) {
101 			
102 			assertTrue(true);
103 		}
104 	}
105 
106 
107 
108 
109 
110 
111 
112 
113 
114 
115 
116 
117 
118 
119 
120 
121 
122 
123 
124 
125 }