package de.axone.tools.watcher;
import static org.testng.Assert.*;
import java.io.File;
import java.io.FileOutputStream;
import org.testng.annotations.Test;
import de.axone.tools.watcher.FileWatcher;
@Test( groups="tools.filewatcher" )
public class FileWatcherTest {
public void testFileWatcher() throws Exception {
File tmp = File.createTempFile( "temp", ".txt" );
FileWatcher watcher = new FileWatcher( tmp, 100 );
assertTrue( watcher.haveChanged() );
assertFalse( watcher.haveChanged() );
synchronized( this ){
this.wait( 1100 ); //Note: Unix ctime min unit is 1s
}
assertFalse( watcher.haveChanged() );
// Touch
FileOutputStream out = new FileOutputStream( tmp );
out.write( 'x' );
out.close();
assertFalse( watcher.haveChanged() );
synchronized( this ){
this.wait( 110 );
}
assertTrue( watcher.haveChanged() );
synchronized( this ){
this.wait( 1100 );
}
assertFalse( watcher.haveChanged() );
boolean ok = tmp.delete();
assertTrue( ok );
assertFalse( watcher.haveChanged() );
synchronized( this ){
this.wait( 110 );
}
assertTrue( watcher.haveChanged() );
assertFalse( watcher.haveChanged() );
}
}