package org.openrdf.repository.object;
import junit.framework.TestCase;
import org.openrdf.model.impl.URIImpl;
import org.openrdf.repository.object.compiler.JavaNameResolver;
public class JavaNameResolverTest extends TestCase {
public void testPackageName() throws Exception {
assertEquals("fred", packageName("fred"));
assertEquals("_123abc", packageName("123abc"));
assertEquals("f._3red", packageName("f.3red"));
assertEquals("f._red", packageName("f._red"));
}
/**
* Test for http://www.openrdf.org/issues/browse/ALI-18
*/
public void testInvalidWindowsPackageNames() throws Exception {
// Remember that old COPY CON FILE
// .. well, those device names are still invalid on Windows
// http://msdn.microsoft.com/en-us/library/aa561308.aspx
//
// Thus our JAR would not be unzippable on Windows
assertEquals("_con", packageName("con"));
assertEquals("_lpt1", packageName("lpt1"));
// But not replaced if not surrounded by .
assertEquals("conx", packageName("conx"));
assertEquals("xcon", packageName("xcon"));
// Case insensitive
assertEquals("_CoM2", packageName("CoM2"));
// Also if there's a prefix
assertEquals("fred._con", packageName("fred.con"));
assertEquals("fred._lpt1", packageName("fred.lpt1"));
// or anywhere earlier
assertEquals("_con.fred", packageName("con.fred"));
assertEquals("_lpt1.soup", packageName("lpt1.soup"));
assertEquals("fred._lpt1.soup", packageName("fred.lpt1.soup"));
// This is silly, I know, but the $ could screw up the regex
assertEquals("a._clock$.b", packageName("a.clock$.b"));
}
private String packageName(String packageName) {
JavaNameResolver resolver = new JavaNameResolver();
resolver.bindPackageToNamespace(packageName, "http://example.com/");
return resolver.getPackageName(new URIImpl("http://example.com/MyClass"));
}
}