/** @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> */
public class ScannerTestCase extends AbstractTestCase {
@Test
public void testFoo() throws IOException {
RAMFileSystem fs = new RAMFileSystem();
FileSystemScanner<String[]> scanner = FileSystemScanner.createTimestamped(fs);
//
Snapshot<String[]> snapshot = scanner.take();
assertEquals(Collections.<String, Change>emptyMap(), snapshot.getChanges());
//
String[] foo = fs.makePath(fs.getRoot(), "foo");
waitForOneMillis();
snapshot = snapshot.scan();
assertEquals(Collections.<String, Change>emptyMap(), snapshot.getChanges());
//
String[] bar = fs.makePath(foo, "bar.txt");
fs.updateResource(bar, new Resource(""));
waitForOneMillis();
snapshot = snapshot.scan();
assertEquals(Collections.singletonMap("/foo/bar.txt", Change.ADD), snapshot.getChanges());
waitForOneMillis();
snapshot = snapshot.scan();
assertEquals(Collections.<String, Change>emptyMap(), snapshot.getChanges());
//
fs.updateResource(bar, new Resource("value"));
waitForOneMillis();
snapshot = snapshot.scan();
assertEquals(Collections.singletonMap("/foo/bar.txt", Change.UPDATE), snapshot.getChanges());
//
fs.removePath(bar);
waitForOneMillis();
snapshot = snapshot.scan();
assertEquals(Collections.singletonMap("/foo/bar.txt", Change.REMOVE), snapshot.getChanges());
waitForOneMillis();
snapshot = snapshot.scan();