package ru.kkey; import org.junit.After; import org.junit.Assert; import org.junit.Test; import ru.kkey.core.FileItem; import ru.kkey.core.Source; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Tests use framework {@link FSBuilder} * * @author anstarovoyt */ public abstract class FileSourceTestBase { Source fsSource; @After public void after() { try { if (fsSource != null) { fsSource.destroy(); } } catch (RuntimeException e) { } } @Test public void testSimpleBack() { List<String> paths = Arrays.asList("dir", " dir", " file", " file 1", " file 2"); createBuilder().build(paths); fsSource = createSource(); fsSource.goInto(item("dir", true)); fsSource.goInto(item("dir", true)); fsSource.listFiles(); // fsSource.goBack(); List<String> actual = toNames(fsSource.listFiles()); List<String> expected = Arrays.asList("dir", "file 1", "file 2"); Assert.assertEquals(expected, actual); } @Test public void testSimpleInto() { List<String> paths = Arrays.asList("dir", " dir 11", " file 11"); createBuilder().build(paths); fsSource = createSource(); fsSource.goInto(item("dir", true)); List<String> actual = toNames(fsSource.listFiles()); List<String> expected = Arrays.asList("dir 11", "file 11"); Assert.assertEquals(expected, actual); } @Test public void testSimpleList() { List<String> paths = Arrays.asList("dir 1", "dir 2", "dir 3", "file 1"); createBuilder().build(paths); fsSource = createSource(); List<String> actual = toNames(fsSource.listFiles()); Assert.assertEquals(paths, actual); } @Test public void testSimpleOrder() { List<String> paths = Arrays.asList("dir 2", "dir 1", "dir 3", "file 2", "file 1", "file 3"); createBuilder().build(paths); fsSource = createSource(); List<String> actual = toNames(fsSource.listFiles()); List<String> expected = Arrays.asList("dir 1", "dir 2", "dir 3", "file 1", "file 2", "file 3"); Assert.assertEquals(expected, actual); } @Test public void testSimpleReadFile() { List<String> paths = Arrays.asList("dir", " file 11", " file 12"); createBuilder().build(paths); fsSource = createSource(); fsSource.goInto(item("dir", true)); byte[] file = fsSource.getFile(item("file 11", false)); Assert.assertArrayEquals("file 11".getBytes(), file); } @Test public void testTreeInto() { List<String> paths = Arrays.asList("dir 1", " dir 11", " file 11", "dir 2", " dir 21", " dir 211", " dir 2111", " file 211", " file 212"); createBuilder().build(paths); fsSource = createSource(); fsSource.goInto(item("dir 2", true)); fsSource.goInto(item("dir 21", true)); List<String> actual = toNames(fsSource.listFiles()); List<String> expected = Arrays.asList("dir 211", "file 211", "file 212"); Assert.assertEquals(expected, actual); } protected abstract FSBuilder createBuilder(); protected abstract Source createSource(); protected FileItem item(String name, boolean isDir) { return new FileItem(name, isDir); } protected List<String> toNames(List<FileItem> items) { List<String> result = new ArrayList<>(); for (FileItem item : items) { result.add(item.getName()); } return result; } }