package co.codewizards.cloudstore.core.oio.nio;
import static org.assertj.core.api.Assertions.*;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import co.codewizards.cloudstore.core.oio.File;
import co.codewizards.cloudstore.core.oio.FileFactory;
import co.codewizards.cloudstore.core.oio.IoFileFactory;
import co.codewizards.cloudstore.core.oio.nio.NioFileFactory;
@RunWith(value = Parameterized.class)
public class FileFactoryTest {
public FileFactory fileFactory;
public FileFactoryTest(final FileFactory fileFactory) {
this.fileFactory = fileFactory;
}
@Test
public final void createFile_string() {
System.out.println("fileFactory=" + fileFactory.getClass().getSimpleName());
final String fileName = "asdf";
final File f = fileFactory.createFile(fileName);
System.out.println("create file: " + f);
assertThat(f.getAbsolutePath().contains(fileName)).isTrue();
}
@Test
public final void createFile_file() {
System.out.println("fileFactory=" + fileFactory.getClass().getSimpleName());
final String fileName = "asdf";
final java.io.File ioFile = new java.io.File("asdf");
final File f = fileFactory.createFile(ioFile);
System.out.println("created file: " + f);
assertThat(f.getAbsolutePath().contains(fileName)).isTrue();
}
@Test
public final void createFile_uri() throws URISyntaxException {
System.out.println("fileFactory=" + fileFactory.getClass().getSimpleName());
final String fileName = "asdf";
final URI uri = new URI("file:/tmp/" + fileName);
final File f = fileFactory.createFile(uri);
System.out.println("created file: " + f);
assertThat(f.getAbsolutePath().contains(fileName)).isTrue();
}
@Test
public final void createFile_parentChild() {
System.out.println("fileFactory=" + fileFactory.getClass().getSimpleName());
final String parentName = "foo";
final String childName = "bar";
final File f = fileFactory.createFile(parentName, childName);
System.out.println("created file: " + f);
assertThat(f.getAbsolutePath().contains(parentName)).isTrue();
assertThat(f.getAbsolutePath().contains(childName)).isTrue();
}
@Test
public final void createFile_parentChildFile() {
System.out.println("fileFactory=" + fileFactory.getClass().getSimpleName());
final String parentName = "foo";
final String childName = "bar";
final File parentFile = fileFactory.createFile(parentName);
final File f = fileFactory.createFile(parentFile, childName);
System.out.println("created file: " + f);
assertThat(f.getAbsolutePath().contains(parentName)).isTrue();
assertThat(f.getAbsolutePath().contains(childName)).isTrue();
}
@Test
public final void createTempDirectory() throws IOException {
System.out.println("fileFactory=" + fileFactory.getClass().getSimpleName());
final String prefix = "asdf";
final File f = fileFactory.createTempDirectory(prefix);
System.out.println("created file: " + f);
assertThat(f.isDirectory()).isTrue();
assertThat(f.getAbsolutePath().contains(prefix)).isTrue();
}
@Test
public final void createTempFile() throws IOException {
System.out.println("fileFactory=" + fileFactory.getClass().getSimpleName());
final String prefix = "foo";
final String suffix = "bar";
final File f = fileFactory.createTempFile(prefix, suffix);
System.out.println("created file: " + f);
assertThat(f.isFile()).isTrue();
assertThat(f.getAbsolutePath().contains(prefix)).isTrue();
assertThat(f.getAbsolutePath().contains(suffix)).isTrue();
}
@Test
public final void createTempFile_parentDir() throws IOException {
System.out.println("fileFactory=" + fileFactory.getClass().getSimpleName());
final String parentPrefix = "asdf";
final File parentDir = fileFactory.createTempDirectory(parentPrefix);
assertThat(parentDir.isDirectory()).isTrue();
assertThat(parentDir.getAbsolutePath().contains(parentPrefix)).isTrue();
final String prefix = "foo";
final String suffix = "bar";
final File f = fileFactory.createTempFile(prefix, suffix, parentDir);
System.out.println("created file: " + f);
assertThat(f.isFile()).isTrue();
assertThat(f.getAbsolutePath().contains(prefix)).isTrue();
assertThat(f.getAbsolutePath().contains(suffix)).isTrue();
}
@Parameterized.Parameters
public static Collection<Object[]> instancesToTest() {
return Arrays.asList(
new Object[] { new NioFileFactory() },
new Object[] { new IoFileFactory() }
);
}
}