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   * @author christoph.pickl@bmi.gv.at
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  //	public final void testCopyFile() {
42  //		fail("Not yet implemented");
43  //	}
44  //
45  //	public final void testCopyDirectoryRecursive() {
46  //		fail("Not yet implemented");
47  //	}
48  //
49  //	public final void testFormatFileSize() {
50  //		fail("Not yet implemented");
51  //	}
52  //
53  //	public final void testFormatFileSizeGb() {
54  //		fail("Not yet implemented");
55  //	}
56  //
57  //	public final void testGetGigaByteFromKiloByte() {
58  //		fail("Not yet implemented");
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 			// should fail, because directory is already delete
102 			assertTrue(true);
103 		}
104 	}
105 //	public final void testIsHiddenFile() {
106 //		fail("Not yet implemented");
107 //	}
108 //
109 //	public final void testGetFileContentsFromJar() {
110 //		fail("Not yet implemented");
111 //	}
112 //
113 //	public final void testExtractLastFolderName() {
114 //		fail("Not yet implemented");
115 //	}
116 //
117 //	public final void testGetSizeRecursive() {
118 //		fail("Not yet implemented");
119 //	}
120 //
121 //	public final void testGetParentByPath() {
122 //		fail("Not yet implemented");
123 //	}
124 
125 }