package net.sf.cotta;
import net.sf.cotta.memory.InMemoryFileSystem;
import net.sf.cotta.physical.PhysicalFileSystemTestCase;
import net.sf.cotta.test.assertion.CodeBlock;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
public class TFileFactoryTest extends PhysicalFileSystemTestCase {
public void testEncodingForConstructor() {
TFileFactory factory = new TFileFactory(new InMemoryFileSystem());
ensure.that(factory.defaultEncoding()).isNotEmpty();
TFileFactory factoryWithEncoding = new TFileFactory(new InMemoryFileSystem(), "encoding");
ensure.that(factoryWithEncoding.defaultEncoding()).eq("encoding");
}
public void testNotLoadFromAnHttpUrl() throws Exception {
final URL url = new URL("http://cotta.sourceforge.net");
ensure.that(TFileFactory.canConvertUrl(url)).eq(false);
}
public void testFailConvertingFromHttpUrl() throws Exception {
final URL url = new URL("http://cotta.sourceforge.net");
ensure.code(new CodeBlock() {
public void execute() throws Exception {
TFileFactory.fileFromUrl(url);
}
}).throwsException(IllegalArgumentException.class);
}
public void testSupportFileUrl() throws Exception {
File file = new File("/tmp/directory/file.txt");
URL url = file.toURL();
ensure.that(TFileFactory.canConvertUrl(url)).eq(true);
}
public void testConvertFromFileUrl() throws Exception {
File file = new File("/tmp/directory/file.txt");
URL url = file.toURL();
TFile tfile = TFileFactory.fileFromUrl(url);
ensure.that("file.txt").eq(tfile.name());
}
public void testSupportJarUrl() throws Exception {
final URL url = String.class.getResource("String.class");
ensure.that(TFileFactory.canConvertUrl(url)).eq(true);
}
public void testLoadTFileFromResourceUrl() throws TIoException {
//Given
URL url = getClass().getResource("/" + String.class.getName().replace('.', '/') + ".class");
//When
TFile file = TFileFactory.fileFromUrl(url);
//Ensure
ensure.that(file.extname()).eq("jar");
ensure.that(file.basename().equals("rt") || file.basename().equals("classes")).eq(true);
ensure.that(file.exists()).eq(true);
}
public void testHandleResourceUrlWithSpaceInIt() throws MalformedURLException {
//Given
URL url = getClass().getResource("/" + String.class.getName().replace('.', '/') + ".class");
int index = url.getFile().indexOf('!');
ensure.that(url.getFile()).contains("!");
URL urlWithSpaceInJarFilePath = new URL(url.getProtocol(), url.getHost(), url.getPort(),
"file://C:/Documents and Settings/user/.m2/repository/selenium/selenium.jar" + url.getFile().substring(index));
//When
TFile file = TFileFactory.fileFromUrl(urlWithSpaceInJarFilePath);
//Ensure
ensure.that(file.name()).eq("selenium.jar");
}
public void testCreateTFileDirectlyFromJavaFile() throws Exception {
//Given
TFile file = new TFileFactory(fileSystem()).dir("tmp").file("content.txt");
file.save("content");
//When
TFile actual = TFileFactory.physicalFile(new File("tmp", "content.txt"));
//Ensure
ensure.that(actual.load()).eq("content");
}
public void testCreateTDirectoryDirectlyFromJavaFile() throws TIoException {
//Given
TDirectory directory = new TFileFactory(fileSystem()).dir("tmp").dir("child");
directory.ensureExists();
//When
TDirectory actual = TFileFactory.physicalDir(new File("tmp", "child"));
//Ensure
ensure.that(actual.exists()).eq(true);
}
public void testStaticPhysicalFactoryMethod() {
TFileFactory physical = TFileFactory.physical();
ensure.that(physical).sameAs(TFileFactory.physical());
}
public void testInMemoryFactoryMethod() {
TFileFactory inMemory = TFileFactory.inMemory();
ensure.that(inMemory.getFileSystem()).isA(InMemoryFileSystem.class);
}
}