/*
* JBoss, Home of Professional Open Source
* Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors
* as indicated by the @authors tag. All rights reserved.
*/
package org.searchisko.mbox.util;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
/**
* @author Lukáš Vlček (lvlcek@redhat.com)
*/
@RunWith(JUnit4.class)
public class StringUtilTest {
@Test
public void shouldPassCoupleOfBasicTests() {
String originalURL;
String encoded;
StringUtil.URLInfo info;
// http://lists.jboss.org/pipermail/hibernate-announce/2010-April/000077.html
encoded = "aHR0cDovL2xpc3RzLmpib3NzLm9yZy9waXBlcm1haWwvaGliZXJuYXRlLWFubm91bmNlLzIwMTAtQXByaWwvMDAwMDc3Lmh0bWw=";
originalURL = StringUtil.decodeFilenameSafe(encoded);
assertEquals(originalURL, "http://lists.jboss.org/pipermail/hibernate-announce/2010-April/000077.html");
info = StringUtil.getInfo(encoded);
assertEquals(info.getProject(), "hibernate");
assertEquals(info.getListType(), "announce");
// no list type info
// http://lists.jboss.org/pipermail/scribbling/2010-August/000002.html
encoded = "aHR0cDovL2xpc3RzLmpib3NzLm9yZy9waXBlcm1haWwvc2NyaWJibGluZy8yMDEwLUF1Z3VzdC8wMDAwMDIuaHRtbA==";
originalURL = StringUtil.decodeFilenameSafe(encoded);
assertEquals(originalURL, "http://lists.jboss.org/pipermail/scribbling/2010-August/000002.html");
info = StringUtil.getInfo(encoded);
assertEquals(info.getProject(), "scribbling");
assertEquals(info.getListType(), null);
// project name contains '-'
// http://lists.jboss.org/pipermail/jboss-osgi-dev/2009-March/000007.html
encoded = "aHR0cDovL2xpc3RzLmpib3NzLm9yZy9waXBlcm1haWwvamJvc3Mtb3NnaS1kZXYvMjAwOS1NYXJjaC8wMDAwMDcuaHRtbA==";
originalURL = StringUtil.decodeFilenameSafe(encoded);
assertEquals(originalURL, "http://lists.jboss.org/pipermail/jboss-osgi-dev/2009-March/000007.html");
info = StringUtil.getInfo(encoded);
assertEquals(info.getProject(), "jboss-osgi");
assertEquals(info.getListType(), "dev");
}
@Test
public void shouldYieldEmptyListTypeFor_jboss_l10n() {
// http://lists.jboss.org/pipermail/jboss-l10n/2009-March/000007.html
String madeUpUrlForTest = "aHR0cDovL2xpc3RzLmpib3NzLm9yZy9waXBlcm1haWwvamJvc3MtbDEwbi8yMDA5LU1hcmNoLzAwMDAwNy5odG1s";
StringUtil.URLInfo info = StringUtil.getInfo(madeUpUrlForTest);
assertEquals(info.getProject(), "jboss-l10n");
assertEquals(info.getListType(), null);
}
@Test
public void shouldYieldEmptyListTypeFor_jboss_rpm() {
// http://lists.jboss.org/pipermail/jboss-rpm/2012-June/000090.html
String madeUpUrlForTest = "aHR0cDovL2xpc3RzLmpib3NzLm9yZy9waXBlcm1haWwvamJvc3MtcnBtLzIwMTItSnVuZS8wMDAwOTAuaHRtbA==";
StringUtil.URLInfo info = StringUtil.getInfo(madeUpUrlForTest);
assertEquals(info.getProject(), "jboss-rpm");
assertEquals(info.getListType(), null);
}
@Test
public void shouldFailOnIncorrectFileName() {
try {
String madeUpUrlForTest = ".xx";
StringUtil.URLInfo info = StringUtil.getInfo(madeUpUrlForTest);
fail("java.lang.ArrayIndexOutOfBoundsException should have been thrown");
} catch (ArrayIndexOutOfBoundsException e) {
// ok
}
}
@Test
public void shouldParseLuceneMailListEntry() {
// http://mail-archives.apache.org/mod_mbox/lucene-java-user/201003.mbox/%3C8c4e68611003050142nfaa67cj384cd2b3bfaaeb77%40mail.gmail.com%3E
String messageFromLuceneML = "aHR0cDovL21haWwtYXJjaGl2ZXMuYXBhY2hlLm9yZy9tb2RfbWJveC9sdWNlbmUtamF2YS11c2Vy\n" +
"LzIwMTAwMy5tYm94LyUzQzhjNGU2ODYxMTAwMzA1MDE0Mm5mYWE2N2NqMzg0Y2QyYjNiZmFhZWI3\n" +
"NyU0MG1haWwuZ21haWwuY29tJTNF";
StringUtil.URLInfo info = StringUtil.getInfo(messageFromLuceneML);
assertEquals("lucene-java", info.getProject());
assertEquals("user", info.getListType());
}
@Test
public void testProjectName() {
assertEquals(null, StringUtil.getProjectName(null, ""));
assertEquals(" ", StringUtil.getProjectName(" ", null));
assertEquals(" ", StringUtil.getProjectName(" ", ""));
assertEquals("a-b", StringUtil.getProjectName("a-b", " "));
assertEquals("a-b", StringUtil.getProjectName("a-b", ""));
assertEquals("a-b", StringUtil.getProjectName("a-b", null));
assertEquals("a-b", StringUtil.getProjectName("a-b-c", "c"));
assertEquals("a-b_c", StringUtil.getProjectName("a-b_c", "c"));
}
}