/*
* Eoulsan development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public License version 2.1 or
* later and CeCILL-C. This should be distributed with the code.
* If you do not have a copy, see:
*
* http://www.gnu.org/licenses/lgpl-2.1.txt
* http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.txt
*
* Copyright for this code is held jointly by the Genomic platform
* of the Institut de Biologie de l'École normale supérieure and
* the individual authors. These should be listed in @author doc
* comments.
*
* For more information on the Eoulsan project and its aims,
* or to join the Eoulsan Google group, visit the home page
* at:
*
* http://outils.genomique.biologie.ens.fr/eoulsan
*
*/
package fr.ens.biologie.genomique.eoulsan.data;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.junit.Before;
import org.junit.Test;
import fr.ens.biologie.genomique.eoulsan.EoulsanRuntimeDebug;
import fr.ens.biologie.genomique.eoulsan.data.DataFile;
import fr.ens.biologie.genomique.eoulsan.data.protocols.DataProtocolService;
public class DataFileTest {
@Before
public void setUp() throws Exception {
EoulsanRuntimeDebug.initDebugEoulsanRuntime();
}
@Test
public void testHashCode() {
String filename = "toto.txt";
DataFile df = new DataFile(filename);
assertEquals(filename.hashCode(), df.hashCode());
filename = "/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename.hashCode(), df.hashCode());
filename = "file:///home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename.hashCode(), df.hashCode());
filename = "file:/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename.hashCode(), df.hashCode());
filename = "http://www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename.hashCode(), df.hashCode());
filename = "http:/www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename.hashCode(), df.hashCode());
filename = "ftp://ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename.hashCode(), df.hashCode());
filename = "ftp:/ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename.hashCode(), df.hashCode());
filename = "ftp://login:passwd@ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename.hashCode(), df.hashCode());
}
@Test
public void testGetSource() {
String filename = "toto.txt";
DataFile df = new DataFile(filename);
assertEquals(filename, df.getSource());
filename = "/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.getSource());
filename = "file:///home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.getSource());
filename = "file:/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.getSource());
filename = "/home/toto/toto.txt";
df = new DataFile(URI.create(filename));
assertEquals(filename, df.getSource());
filename = "file:///home/toto/toto.txt";
df = new DataFile(URI.create(filename));
assertEquals(filename, df.getSource());
filename = "file:/home/toto/toto.txt";
df = new DataFile(URI.create(filename));
assertEquals(filename, df.getSource());
filename = "http://www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.getSource());
filename = "http:/www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.getSource());
filename = "ftp://ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.getSource());
filename = "ftp:/ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.getSource());
filename = "ftp://login:passwd@ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.getSource());
}
@Test
public void testGetName() {
String filename = "toto.txt";
DataFile df = new DataFile(filename);
assertEquals("toto.txt", df.getName());
filename = "/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("toto.txt", df.getName());
filename = "file:///home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("toto.txt", df.getName());
filename = "file:/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("toto.txt", df.getName());
filename = "http://www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("toto.txt", df.getName());
filename = "http:/www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("toto.txt", df.getName());
filename = "ftp://ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("toto.txt", df.getName());
filename = "ftp:/ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("toto.txt", df.getName());
filename = "ftp://login:passwd@ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("toto.txt", df.getName());
}
@Test
public void testGetParent() throws IOException {
String filename = "toto.txt";
DataFile df = new DataFile(filename);
assertEquals("", df.getParent().getSource());
filename = "/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("/home/toto", df.getParent().getSource());
filename = "file:///home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("file:///home/toto", df.getParent().getSource());
filename = "file:/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("file:/home/toto", df.getParent().getSource());
filename = "http://www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("http://www.toto.com/home/toto", df.getParent().getSource());
filename = "http:/www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("http:/www.toto.com/home/toto", df.getParent().getSource());
filename = "ftp://ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("ftp://ftp.toto.com/home/toto", df.getParent().getSource());
filename = "ftp:/ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("ftp:/ftp.toto.com/home/toto", df.getParent().getSource());
filename = "ftp://login:passwd@ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals("ftp://login:passwd@ftp.toto.com/home/toto",
df.getParent().getSource());
}
@Test
public void testGetProtocol() throws IOException {
DataProtocolService registry = DataProtocolService.getInstance();
assertTrue(registry.isService("file"));
assertTrue(registry.isService("http"));
assertTrue(registry.isService("ftp"));
String filename = "toto.txt";
DataFile df = new DataFile(filename);
assertEquals(registry.newService("file"), df.getProtocol());
filename = "/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(registry.newService("file"), df.getProtocol());
filename = "file:///home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(registry.newService("file"), df.getProtocol());
filename = "file:/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(registry.newService("file"), df.getProtocol());
filename = "http://www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(registry.newService("http"), df.getProtocol());
filename = "http:/www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(registry.newService("http"), df.getProtocol());
try {
new DataFile("toto://www.toto.com/home/toto/toto.txt").getProtocol();
assertTrue(false);
} catch (IOException e) {
assertTrue(true);
}
}
@Test
public void testToFile() throws IOException, URISyntaxException {
String filename = "toto.txt";
DataFile df = new DataFile(filename);
assertEquals(new File(filename), df.toFile());
filename = "/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(new File(filename), df.toFile());
filename = "file:///home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(new File(new URI(filename)), df.toFile());
filename = "file:/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(new File(new URI(filename)), df.toFile());
}
@Test
public void testToUri() throws IOException, URISyntaxException {
DataProtocolService registry = DataProtocolService.getInstance();
assertTrue(registry.isService("file"));
assertTrue(registry.isService("http"));
assertTrue(registry.isService("ftp"));
String filename = "toto.txt";
DataFile df = new DataFile(filename);
assertEquals(new URI(filename), df.toUri());
filename = "/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(new URI(filename), df.toUri());
filename = "file:///home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(new URI(filename), df.toUri());
filename = "file:/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(new URI(filename), df.toUri());
filename = "http://www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(new URI(filename), df.toUri());
filename = "http:/www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(new URI(filename), df.toUri());
filename = ":/www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertNull(df.toUri());
}
@Test
public void testToString() {
String filename = "toto.txt";
DataFile df = new DataFile(filename);
assertEquals(filename, df.toString());
filename = "/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.toString());
filename = "file:///home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.toString());
filename = "file:/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.toString());
filename = "http://www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.toString());
filename = "http:/www.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.toString());
filename = "ftp://ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.toString());
filename = "ftp:/ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.toString());
filename = "ftp://login:passwd@ftp.toto.com/home/toto/toto.txt";
df = new DataFile(filename);
assertEquals(filename, df.toString());
}
@Test
public void testEqualsObject() {
String filename = "toto.txt";
DataFile df1 = new DataFile(filename);
DataFile df2 = new DataFile(filename);
assertEquals(df1, df2);
filename = "/home/toto/toto.txt";
df1 = new DataFile(filename);
df2 = new DataFile(filename);
assertEquals(df1, df2);
filename = "file:///home/toto/toto.txt";
df1 = new DataFile(filename);
df2 = new DataFile(filename);
assertEquals(df1, df2);
df1 = new DataFile("file:/home/toto/toto.txt");
df2 = new DataFile("file:///home/toto/toto.txt");
assertNotSame(df1, df2);
assertNotSame(df1, "file:/home/toto/toto.txt");
}
@Test
public void testDataFile() {
try {
new DataFile((String) null);
assertTrue(false);
} catch (NullPointerException e) {
assertTrue(true);
}
new DataFile("toto:/www.toto.com/home/toto/toto.txt");
assertTrue(true);
}
}