Author: rgoers
Date: Wed Mar 11 23:18:58 2009
New Revision: 752689

URL: http://svn.apache.org/viewvc?rev=752689&view=rev
Log:
Add unit test for DefaultFileMonitor

Added:
    
commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs/impl/test/DefaultFileMonitorTests.java

Added: 
commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs/impl/test/DefaultFileMonitorTests.java
URL: 
http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs/impl/test/DefaultFileMonitorTests.java?rev=752689&view=auto
==============================================================================
--- 
commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs/impl/test/DefaultFileMonitorTests.java
 (added)
+++ 
commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs/impl/test/DefaultFileMonitorTests.java
 Wed Mar 11 23:18:58 2009
@@ -0,0 +1,122 @@
+package org.apache.commons.vfs.impl.test;
+
+import org.apache.commons.AbstractVfsTestCase;
+import org.apache.commons.vfs.FileObject;
+import org.apache.commons.vfs.FileChangeEvent;
+import org.apache.commons.vfs.FileSystemManager;
+import org.apache.commons.vfs.VFS;
+import org.apache.commons.vfs.FileListener;
+import org.apache.commons.vfs.impl.DefaultFileMonitor;
+
+import java.io.File;
+import java.io.FileWriter;
+
+/**
+ * Test to verify DefaultFileMonitor
+ */
+public class DefaultFileMonitorTests extends AbstractVfsTestCase
+{
+    private FileSystemManager fsManager;
+    private File testDir;
+    private int changeStatus = 0;
+    private File testFile;
+
+    public void setUp() throws Exception
+    {
+        super.setUp();
+        fsManager = VFS.getManager();
+        testDir = AbstractVfsTestCase.getTestDirectoryFile();
+        changeStatus = 0;
+        testFile = new File(testDir, "testReload.properties");
+
+        if (testFile.exists())
+        {
+            testFile.delete();
+        }
+    }
+
+    public void tearDown() throws Exception
+    {
+        if (testFile != null && testFile.exists())
+        {
+            testFile.delete();
+        }
+        super.tearDown();
+    }
+
+    public void testFileCreated() throws Exception
+    {
+        FileObject fileObj = 
fsManager.resolveFile(testFile.toURL().toString());
+        DefaultFileMonitor monitor = new DefaultFileMonitor(new 
TestFileListener());
+        monitor.setDelay(100);
+        monitor.addFile(fileObj);
+        monitor.start();
+        writeToFile(testFile);
+        Thread.sleep(500);
+        assertTrue("No event occurred", changeStatus != 0);
+        assertTrue("Incorrect event", changeStatus == 3);
+        monitor.stop();
+    }
+
+    public void testFileDeleted() throws Exception
+    {
+        writeToFile(testFile);
+        FileObject fileObj = 
fsManager.resolveFile(testFile.toURL().toString());
+        DefaultFileMonitor monitor = new DefaultFileMonitor(new 
TestFileListener());
+        monitor.setDelay(100);
+        monitor.addFile(fileObj);
+        monitor.start();
+        testFile.delete();
+        Thread.sleep(500);
+        assertTrue("No event occurred", changeStatus != 0);
+        assertTrue("Incorrect event", changeStatus == 2);
+        monitor.stop();
+    }
+
+    public void testFileModified() throws Exception
+    {
+        writeToFile(testFile);
+        FileObject fileObj = 
fsManager.resolveFile(testFile.toURL().toString());
+        DefaultFileMonitor monitor = new DefaultFileMonitor(new 
TestFileListener());
+        monitor.setDelay(100);
+        monitor.addFile(fileObj);
+        monitor.start();
+        // Need a long delay to insure the new timestamp doesn't truncate to 
be the same as
+        // the current timestammp. Java only guarantees the timestamp will be 
to 1 second.
+        Thread.sleep(1000);
+        long value = System.currentTimeMillis();
+        boolean rc = testFile.setLastModified(value);
+        Thread.sleep(300);
+        assertTrue("No event occurred", changeStatus != 0);
+        assertTrue("Incorrect event", changeStatus == 1);
+        monitor.stop();
+    }
+
+    private void writeToFile(File file) throws Exception
+    {
+        FileWriter out = new FileWriter(file);
+        out.write("string=value1");
+        out.flush();
+        out.close();
+    }
+
+
+    public class TestFileListener implements FileListener
+    {
+        public void fileChanged(FileChangeEvent event) throws Exception
+        {
+            changeStatus = 1;
+        }
+
+        public void fileDeleted(FileChangeEvent event) throws Exception
+        {
+            changeStatus = 2;
+        }
+
+        public void fileCreated(FileChangeEvent event) throws Exception
+        {
+            changeStatus = 3;
+        }
+    }
+
+}


Reply via email to