Clover coverage report -
Coverage timestamp: Fri Nov 19 2004 13:41:51 PST
file stats: LOC: 114   Methods: 4
NCLOC: 82   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
FileSystemWatcherTest.java 75% 98.3% 100% 95.8%
coverage coverage
 1    package photospace.vfs.event;
 2   
 3    import java.io.*;
 4    import java.util.*;
 5    import org.apache.commons.io.*;
 6    import org.apache.commons.logging.*;
 7    import junit.framework.*;
 8    import photospace.vfs.*;
 9   
 10   
 11    public class FileSystemWatcherTest
 12    extends TestCase
 13    implements FileEventListener
 14    {
 15    private static final Log log = LogFactory.getLog(FileSystemWatcherTest.class);
 16   
 17    List fileEvents = new ArrayList();
 18    List folderEvents = new ArrayList();
 19   
 20  1 public synchronized void testFileEvents() throws Exception
 21    {
 22  1 File testDir = new File(System.getProperties().getProperty("java.io.tmpdir"), "test");
 23  1 File testFile = new File(testDir, "foo.jpg");
 24  1 if (testDir.exists()) FileUtils.forceDelete(testDir);
 25   
 26  1 testDir.mkdir();
 27  1 assertTrue(testDir.exists());
 28  1 assertTrue(testDir.isDirectory());
 29   
 30  1 FileSystemWatcher watcher = new FileSystemWatcher();
 31  1 watcher.setSleep(100);
 32  1 watcher.setFilter(new MetaFileFilter());
 33  1 watcher.addRoot(testDir);
 34  1 watcher.addListener(this);
 35  1 watcher.start();
 36   
 37  1 wait(800);
 38   
 39    // create new file
 40  1 testFile.createNewFile();
 41  1 wait(800);
 42   
 43  1 FileEvent lastFileEvent = popLastFileEvent();
 44  1 assertEquals(FileEvent.CREATED, lastFileEvent.getType());
 45  1 assertEquals(testFile.getCanonicalFile(), lastFileEvent.getSource());
 46   
 47  1 FileEvent lastFolderEvent = popLastFolderEvent();
 48  1 assertEquals(FileEvent.UPDATED, lastFolderEvent.getType());
 49  1 assertEquals(testDir.getCanonicalFile(), lastFolderEvent.getSource());
 50   
 51    // update file
 52  1 testFile.setLastModified(new Date().getTime());
 53  1 wait(800);
 54   
 55  1 lastFileEvent = popLastFileEvent();
 56  1 assertEquals(FileEvent.UPDATED, lastFileEvent.getType());
 57  1 assertEquals(testFile.getCanonicalFile(), lastFileEvent.getSource());
 58   
 59  1 lastFolderEvent = popLastFolderEvent();
 60  1 assertNull(lastFolderEvent);
 61   
 62  1 assertEquals(2, watcher.getSnapshot().size());
 63   
 64    // delete file
 65  1 testFile.delete();
 66  1 wait(800);
 67   
 68  1 lastFileEvent = popLastFileEvent();
 69  1 assertEquals(FileEvent.DELETED, lastFileEvent.getType());
 70  1 assertEquals(testFile.getCanonicalFile(), lastFileEvent.getSource());
 71   
 72  1 lastFolderEvent = popLastFolderEvent();
 73  1 assertEquals(FileEvent.UPDATED, lastFolderEvent.getType());
 74  1 assertEquals(testDir.getCanonicalFile(), lastFolderEvent.getSource());
 75   
 76  1 assertEquals(1, watcher.getSnapshot().size());
 77   
 78    // create sub directory
 79  1 File subDir = new File(testDir, "subdir");
 80  1 subDir.mkdir();
 81  1 assertTrue(subDir.exists());
 82  1 wait(800);
 83   
 84  1 lastFolderEvent = popLastFolderEvent();
 85  1 assertEquals(FileEvent.CREATED, lastFolderEvent.getType());
 86  1 assertEquals(subDir.getCanonicalFile(), lastFolderEvent.getSource());
 87   
 88  1 lastFolderEvent = popLastFolderEvent();
 89  1 assertEquals(FileEvent.UPDATED, lastFolderEvent.getType());
 90  1 assertEquals(testDir.getCanonicalFile(), lastFolderEvent.getSource());
 91   
 92  1 assertEquals(2, watcher.getSnapshot().size());
 93    }
 94   
 95  7 public void handleFileEvent(FileEvent event)
 96    {
 97  4 if (event.getSource().isDirectory()) folderEvents.add(event);
 98  3 else fileEvents.add(event);
 99    }
 100   
 101  3 public FileEvent popLastFileEvent()
 102    {
 103  0 if (fileEvents.isEmpty()) return null;
 104  3 return (FileEvent) fileEvents.remove(fileEvents.size() - 1);
 105    }
 106   
 107  5 public FileEvent popLastFolderEvent()
 108    {
 109  1 if (folderEvents.isEmpty()) return null;
 110  4 return (FileEvent) folderEvents.remove(folderEvents.size() - 1);
 111    }
 112   
 113   
 114    }