package com.flicklib.folderscanner;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.Collections;
import java.util.List;
import org.apache.commons.vfs2.CacheStrategy;
import org.apache.commons.vfs2.FileName;
import org.apache.commons.vfs2.FileObject;
import org.apache.commons.vfs2.FileSystem;
import org.apache.commons.vfs2.FileSystemException;
import org.apache.commons.vfs2.FileSystemOptions;
import org.apache.commons.vfs2.cache.WeakRefFilesCache;
import org.apache.commons.vfs2.impl.DefaultFileSystemManager;
import org.apache.commons.vfs2.provider.ram.RamFileProvider;
import org.junit.Before;
import org.junit.Test;
public class ScanningTests {
DefaultFileSystemManager manager;
Scanner scanner;
@Before
public void setup() throws FileSystemException {
scanner = new AdvancedFolderScanner(new MovieNameExtractor());
manager = new DefaultFileSystemManager();
manager.setFilesCache(new WeakRefFilesCache());
manager.setCacheStrategy(CacheStrategy.ON_RESOLVE);
manager.addProvider("mock", new RamFileProvider() {
@Override
protected FileSystem doCreateFileSystem(FileName name, FileSystemOptions fileSystemOptions) throws FileSystemException {
return new MockFileSystem(name, fileSystemOptions);
}
});
Builder b = new Builder(manager).get("mock://root").setFolder();
{
Builder folder = b.get("testCase1").setFolder().get("Tamara.Drewe.2010.DVDRip.XviD").setFolder();
folder.get("file1.avi").setSize(50000000);
folder.get("file2.avi").setSize(40000000);
folder.get("file1.srt").setSize(50000);
folder.get("file2.srt").setSize(50000);
}
}
@Test
public void test() throws FileSystemException {
FileObject file = manager.resolveFile("mock://root/testCase1");
List<FileGroup> files = scanner.scan(Collections.singleton(file), new MockAsyncMonitor());
assertNotNull("files", files);
assertEquals("files size", 1, files.size());
FileGroup first = files.get(0);
assertEquals("title", "tamara drewe", first.getTitle());
assertEquals("audio", "en", first.getAudioLanguage().getLanguage());
assertEquals("location", 1, first.getLocations().size());
FileLocation fl = first.getLocations().iterator().next();
assertEquals("location label", "testCase1", fl.getLabel());
assertEquals("location path", "mock:///root/testCase1/Tamara.Drewe.2010.DVDRip.XviD", fl.getPath().toString());
assertEquals("file list", 4, first.getFiles().size());
assertNotNull("file1.avi found", first.getFileByName("file1.avi"));
assertNotNull("file2.avi found", first.getFileByName("file2.avi"));
assertNotNull("file1.srt found", first.getFileByName("file1.srt"));
assertNotNull("file2.srt found", first.getFileByName("file2.srt"));
}
}