/*
* 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.util;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import fr.ens.biologie.genomique.eoulsan.util.StringUtils;
public class StringUtilsTest {
@Test
public void testBasename() {
assertEquals("toto", StringUtils.basename("toto.tar.gz"));
}
@Test
public void testExtension() {
assertEquals("toto", StringUtils.basename("toto.tar.gz"));
}
@Test
public void testCompressionExtension() {
assertEquals(".gz", StringUtils.compressionExtension("toto.tar.gz"));
assertEquals(".bz2", StringUtils.compressionExtension("toto.tar.bz2"));
assertEquals(".zip", StringUtils.compressionExtension("toto.tar.zip"));
assertEquals(".lzo", StringUtils.compressionExtension("toto.tar.lzo"));
assertEquals(".deflate",
StringUtils.compressionExtension("toto.tar.deflate"));
assertEquals("", StringUtils.compressionExtension("toto.tar"));
assertEquals("", StringUtils.compressionExtension("toto"));
}
@Test
public void testfilenameWithoutCompressionExtension() {
assertEquals("toto.tar",
StringUtils.filenameWithoutCompressionExtension("toto.tar.gz"));
assertEquals("toto.tar",
StringUtils.filenameWithoutCompressionExtension("toto.tar"));
assertEquals("toto",
StringUtils.filenameWithoutCompressionExtension("toto"));
}
// @Test
// public void testRemoveNonAlphaAtEndOfString() {
// fail("Not yet implemented");
// }
//
// @Test
// public void testToTimeHumanReadable() {
// fail("Not yet implemented");
// }
//
// @Test
// public void testFastSplitStringListOfString() {
// fail("Not yet implemented");
// }
//
// @Test
// public void testFastSplitStringStringArray() {
// fail("Not yet implemented");
// }
@Test
public void testSubStringAfterFirstTab() {
assertEquals("titi\ttata",
StringUtils.subStringAfterFirstTab("toto\ttiti\ttata"));
assertEquals("toto\ttiti\ttata",
StringUtils.subStringAfterFirstTab("\ttoto\ttiti\ttata"));
assertEquals("toto", StringUtils.subStringAfterFirstTab("toto"));
assertEquals("toto", StringUtils.subStringAfterFirstTab("toto"));
}
@Test
public void testSubStringBeforeFirstTab() {
assertEquals("toto",
StringUtils.subStringBeforeFirstTab("toto\ttiti\ttata"));
assertEquals("toto", StringUtils.subStringBeforeFirstTab("toto"));
}
@Test
public void testProtectGFF() {
assertEquals("toto", StringUtils.protectGFF("toto"));
assertEquals("toto%09", StringUtils.protectGFF("toto\t"));
assertEquals("toto%20", StringUtils.protectGFF("toto "));
assertEquals("toto%20titi", StringUtils.protectGFF("toto titi"));
assertEquals("t\\\\oto%20titi", StringUtils.protectGFF("t\\oto titi"));
assertEquals("toto\\;titi", StringUtils.protectGFF("toto;titi"));
assertEquals("toto\\=titi", StringUtils.protectGFF("toto=titi"));
assertEquals("toto\\%titi", StringUtils.protectGFF("toto%titi"));
assertEquals("toto\\&titi", StringUtils.protectGFF("toto&titi"));
assertEquals("toto\\,titi", StringUtils.protectGFF("toto,titi"));
}
@Test
public void testDeprotectGFF() {
assertEquals("toto\t", StringUtils.deProtectGFF("toto%09"));
assertEquals("toto ", StringUtils.deProtectGFF("toto%20"));
assertEquals("toto titi", StringUtils.deProtectGFF("toto%20titi"));
assertEquals("t\\oto titi", StringUtils.deProtectGFF("t\\\\oto%20titi"));
assertEquals("toto;titi", StringUtils.deProtectGFF("toto\\;titi"));
assertEquals("toto=titi", StringUtils.deProtectGFF("toto\\=titi"));
assertEquals("toto%titi", StringUtils.deProtectGFF("toto\\%titi"));
assertEquals("toto&titi", StringUtils.deProtectGFF("toto\\&titi"));
assertEquals("toto,titi", StringUtils.deProtectGFF("toto\\,titi"));
}
@Test
public void testReplacePrefix() {
assertNull(StringUtils.replacePrefix(null, "toto", "titi"));
assertEquals("ticoucou",
StringUtils.replacePrefix("totocoucou", "toto", "ti"));
assertEquals("titicoucou",
StringUtils.replacePrefix("totocoucou", "toto", "titi"));
assertEquals("coucou", StringUtils.replacePrefix("totocoucou", "toto", ""));
assertEquals("tititotocoucou",
StringUtils.replacePrefix("totocoucou", "", "titi"));
assertEquals("s3n://sgdb-test/titi.txt",
StringUtils.replacePrefix("s3://sgdb-test/titi.txt", "s3:/", "s3n:/"));
}
@Test
public void testSerializeStringArray() {
assertEquals("[]",
StringUtils.serializeStringArray(Arrays.asList(new String[] {})));
assertEquals("[]",
StringUtils.serializeStringArray(Collections.singletonList("")));
assertEquals("[toto]",
StringUtils.serializeStringArray(Collections.singletonList("toto")));
assertEquals("[toto,titi]",
StringUtils.serializeStringArray(Arrays.asList("toto", "titi")));
assertEquals("[to\\,to]",
StringUtils.serializeStringArray(Collections.singletonList("to,to")));
assertEquals("[to\\\\to]",
StringUtils.serializeStringArray(Collections.singletonList("to\\to")));
}
@Test
public void testDeserializeStringArray() {
List<String> r = StringUtils.deserializeStringArray("[]");
assertEquals(1, r.size());
assertEquals("", r.get(0));
r = StringUtils.deserializeStringArray(" [] ");
assertEquals(1, r.size());
assertEquals("", r.get(0));
r = StringUtils.deserializeStringArray("[toto]");
assertEquals(1, r.size());
assertEquals("toto", r.get(0));
r = StringUtils.deserializeStringArray("[toto,]");
assertEquals(2, r.size());
assertEquals("toto", r.get(0));
assertEquals("", r.get(1));
r = StringUtils.deserializeStringArray("[,toto]");
assertEquals(2, r.size());
assertEquals("", r.get(0));
assertEquals("toto", r.get(1));
r = StringUtils.deserializeStringArray("[tata,titi,toto]");
assertEquals(3, r.size());
assertEquals("tata", r.get(0));
assertEquals("titi", r.get(1));
assertEquals("toto", r.get(2));
r = StringUtils.deserializeStringArray("[tata\\,,ti\\,ti,to\\to]");
assertEquals(3, r.size());
assertEquals("tata,", r.get(0));
assertEquals("ti,ti", r.get(1));
assertEquals("to\\to", r.get(2));
}
@Test
public void testToLetter() {
assertEquals('-', StringUtils.toLetter(-1));
assertEquals('a', StringUtils.toLetter(0));
assertEquals('b', StringUtils.toLetter(1));
assertEquals('c', StringUtils.toLetter(2));
assertEquals('z', StringUtils.toLetter(25));
assertEquals('-', StringUtils.toLetter(26));
}
@Test
public void testSplitStringIterator() {
String s = "12345678901234567890";
for (String split : StringUtils.splitStringIterator(s, 30)) {
assertEquals("12345678901234567890", split);
}
for (String split : StringUtils.splitStringIterator(s, 10)) {
assertEquals("1234567890", split);
}
int i = 0;
for (String split : StringUtils.splitStringIterator(s, 11)) {
if (i == 0) {
assertEquals("12345678901", split);
} else if (i == 1) {
assertEquals("234567890", split);
}
i++;
}
i = 0;
for (String split : StringUtils.splitStringIterator(s, 5)) {
if (i == 0 || i == 2) {
assertEquals("12345", split);
} else if (i == 1 || i == 3) {
assertEquals("67890", split);
}
i++;
}
i = 0;
for (String split : StringUtils.splitStringIterator(s, 3)) {
if (i == 0) {
assertEquals("123", split);
} else if (i == 1) {
assertEquals("456", split);
} else if (i == 2) {
assertEquals("789", split);
} else if (i == 3) {
assertEquals("012", split);
} else if (i == 4) {
assertEquals("345", split);
} else if (i == 5) {
assertEquals("678", split);
} else if (i == 6) {
assertEquals("90", split);
} else {
assertTrue(false);
}
i++;
}
}
@Test
public void testSplitShellCommandLine() {
assertNull(StringUtils.splitShellCommandLine(null));
assertTrue(StringUtils.splitShellCommandLine("").isEmpty());
assertEquals(asList("titi", "toto", "tata"),
StringUtils.splitShellCommandLine("titi toto tata"));
assertEquals(asList("titi", "toto", "tata"),
StringUtils.splitShellCommandLine(" titi toto tata "));
assertEquals(asList("titi", "toto", "tata"),
StringUtils.splitShellCommandLine(" titi \"toto\" tata "));
assertEquals(asList("titi", "toto tata"),
StringUtils.splitShellCommandLine(" titi \"toto tata\""));
assertEquals(asList("titi", " toto ", "tata"),
StringUtils.splitShellCommandLine(" titi \" toto \" tata\""));
assertEquals(asList("titi", "toto", "tata"),
StringUtils.splitShellCommandLine(" titi toto \"tata"));
assertEquals(asList("titi", "toto", "tata"),
StringUtils.splitShellCommandLine(" titi toto \"tata\""));
assertEquals(asList("titi", "toto", "tata"),
StringUtils.splitShellCommandLine("\"titi\" toto \"tata\""));
assertEquals(asList("titi", "toto", "tata"),
StringUtils.splitShellCommandLine("\'titi\' toto \'tata\'"));
assertEquals(asList("titi", "toto tata"),
StringUtils.splitShellCommandLine(" titi \'toto tata\'"));
assertEquals(asList("titi", "toto\"tata"),
StringUtils.splitShellCommandLine("titi \'toto\"tata\'"));
assertEquals(asList("titi", "toto\'tata"),
StringUtils.splitShellCommandLine("titi \"toto\'tata\""));
assertEquals(asList("titi", "to\"to", "ta\'ta"),
StringUtils.splitShellCommandLine(" titi \'to\"to\' \"ta\'ta\" "));
}
public void testDoubleQuotes() {
assertNull(StringUtils.doubleQuotes(null));
assertEquals("\"\"", StringUtils.doubleQuotes(""));
assertEquals("\"toto\"", StringUtils.doubleQuotes("toto"));
}
@Test
public void testUnDoubleQuotes() {
assertNull(StringUtils.unDoubleQuotes(null));
assertEquals("", StringUtils.unDoubleQuotes("\"\""));
assertEquals("toto", StringUtils.unDoubleQuotes("\"toto\""));
assertEquals("toto\"", StringUtils.unDoubleQuotes("toto\""));
assertEquals("\"toto", StringUtils.unDoubleQuotes("\"toto"));
assertEquals("", StringUtils.unDoubleQuotes(""));
assertEquals("a", StringUtils.unDoubleQuotes("a"));
assertEquals("ab", StringUtils.unDoubleQuotes("ab"));
assertEquals("abc", StringUtils.unDoubleQuotes("abc"));
}
}