package org.exist.source;
import org.exist.security.PermissionDeniedException;
import org.junit.Test;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Paths;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class SourceFactoryTest {
@Test
public void getSourceFromFile_contextAbsoluteFileUrl_locationAbsoluteUrl() throws IOException, PermissionDeniedException, URISyntaxException {
final URL mainUrl = getClass().getResource("main.xq");
final String contextPath = mainUrl.toString();
final URL libraryUrl = getClass().getResource("library.xqm");
final String location = libraryUrl.toString();
final Source source = SourceFactory.getSource(null, contextPath, location, false);
assertTrue(source instanceof FileSource);
assertEquals(new java.io.File(libraryUrl.toURI()).getAbsolutePath(), source.getKey());
}
@Test
public void getSourceFromFile_contextAbsoluteFile_locationAbsoluteFile() throws IOException, PermissionDeniedException, URISyntaxException {
final URL mainUrl = getClass().getResource("main.xq");
final String contextPath = Paths.get(mainUrl.toURI()).toAbsolutePath().toString();
final URL libraryUrl = getClass().getResource("library.xqm");
final String location = Paths.get(libraryUrl.toURI()).toAbsolutePath().toString();
final Source source = SourceFactory.getSource(null, contextPath, location, false);
assertTrue(source instanceof FileSource);
assertEquals(new java.io.File(libraryUrl.toURI()).getAbsolutePath(), source.getKey());
}
@Test
public void getSourceFromFile_contextAbsoluteFileUrl_locationRelative() throws IOException, PermissionDeniedException, URISyntaxException {
final URL mainUrl = getClass().getResource("main.xq");
final String contextPath = mainUrl.toString();
final String location = "library.xqm";
final Source source = SourceFactory.getSource(null, contextPath, location, false);
assertTrue(source instanceof FileSource);
assertEquals(new java.io.File(getClass().getResource("library.xqm").toURI()).getAbsolutePath(), source.getKey());
}
@Test
public void getSourceFromFile_contextAbsoluteFile_locationRelative() throws IOException, PermissionDeniedException, URISyntaxException {
final URL mainUrl = getClass().getResource("main.xq");
final String contextPath = Paths.get(mainUrl.toURI()).toAbsolutePath().toString();
final String location = "library.xqm";
final Source source = SourceFactory.getSource(null, contextPath, location, false);
assertTrue(source instanceof FileSource);
assertEquals(new java.io.File(getClass().getResource("library.xqm").toURI()).getAbsolutePath(), source.getKey());
}
@Test
public void getSourceFromFile_contextAbsoluteDir_locationRelative() throws IOException, PermissionDeniedException, URISyntaxException {
final URL mainUrl = getClass().getResource("main.xq");
final String contextPath = Paths.get(mainUrl.toURI()).getParent().toString();
//final String contextPath = mainParent.substring(0, mainParent.lastIndexOf('/'));
final String location = "library.xqm";
final Source source = SourceFactory.getSource(null, contextPath, location, false);
assertTrue(source instanceof FileSource);
assertEquals(Paths.get(getClass().getResource("library.xqm").toURI()).toString(), source.getKey());
}
@Test
public void getSourceFromResource_contextAbsoluteFileUrl_locationRelative() throws IOException, PermissionDeniedException {
final String contextPath = "resource:org/exist/source/main.xq";
final String location = "library.xqm";
final Source source = SourceFactory.getSource(null, contextPath, location, false);
assertTrue(source instanceof ClassLoaderSource);
assertEquals(getClass().getResource("library.xqm"), source.getKey());
}
@Test
public void getSourceFromResource_contextAbsoluteFileUrl_locationAbsoluteUrl() throws IOException, PermissionDeniedException {
final String contextPath = "resource:org/exist/source/main.xq";
final String location = "resource:org/exist/source/library.xqm";
final Source source = SourceFactory.getSource(null, contextPath, location, false);
assertTrue(source instanceof ClassLoaderSource);
assertEquals(getClass().getResource("library.xqm"), source.getKey());
}
}