/****************************************************************************/ /* File: DescriptorParserTest.java */ /* Author: F. Georges - H2O Consulting */ /* Date: 2010-12-02 */ /* Tags: */ /* Copyright (c) 2010-2013 Florent Georges (see end of file.) */ /* ------------------------------------------------------------------------ */ package org.expath.pkg.repo.parser; import java.net.URISyntaxException; import javax.xml.transform.Source; import java.net.URI; import org.expath.pkg.repo.Storage.PackageResolver; import java.io.File; import javax.xml.transform.stream.StreamSource; import org.expath.pkg.repo.FileSystemStorage; import org.expath.pkg.repo.Package; import org.expath.pkg.repo.Storage; import org.expath.pkg.repo.URISpace; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; /** * TODO: ... * * @author Florent Georges */ public class DescriptorParserTest { @Test public void testParse() throws Exception { // the SUT DescriptorParser sut = new DescriptorParser(); Source desc = new StreamSource(PKG_DIR + "expath-pkg.xml"); Storage storage = new FileSystemStorage(new File("test/repos/simple")); // get the package Package pkg = sut.parse(desc, "hello-1.1.1", storage, null); // the simple properties assertEquals("the abbrev", "hello", pkg.getAbbrev()); assertEquals("the name", "http://www.example.org/lib/hello", pkg.getName()); assertEquals("the version", "1.1.1", pkg.getVersion()); // the resolver PackageResolver resolver = pkg.getResolver(); assertEquals("the resource (dir) name", "hello-1.1.1", resolver.getResourceName()); assertSourceIsFile("the resource", "expath-pkg.xml", resolver.resolveResource("expath-pkg.xml")); assertSourceIsFile("the component as a resource", "hello/hello.xq", resolver.resolveResource("hello/hello.xq")); assertSourceIsFile("the component", "hello/hello.xsl", resolver.resolveComponent("hello.xsl")); // the resolve method with correct public URIs assertSourceIsFile("resolve XQuery OK", "hello/hello.xq", pkg.resolve("http://www.example.org/hello", URISpace.XQUERY)); assertSourceIsFile("resolve XSLT OK", "hello/hello.xsl", pkg.resolve("http://www.example.org/hello.xsl", URISpace.XSLT)); // the resolve method with wrong public URIs assertNull("resolve non existing", pkg.resolve("http://www.example.org/dummy.xsl", URISpace.XSLT)); assertNull("resolve XQuery within XSLT", pkg.resolve("http://www.example.org/hello", URISpace.XSLT)); assertNull("resolve XSLT within XQuery", pkg.resolve("http://www.example.org/hello.xsl", URISpace.XQUERY)); } static private void assertSourceIsFile(String msg, String relative_file, Source src) throws URISyntaxException { File f = new File(PKG_DIR + relative_file); URI uri = new URI(src.getSystemId()); assertEquals(msg, f.getAbsolutePath(), new File(uri).getAbsolutePath()); } static private final String PKG_DIR = "test/repos/simple/hello-1.1.1/"; } /* ------------------------------------------------------------------------ */ /* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS COMMENT. */ /* */ /* The contents of this file are subject to the Mozilla Public License */ /* Version 1.0 (the "License"); you may not use this file except in */ /* compliance with the License. You may obtain a copy of the License at */ /* http://www.mozilla.org/MPL/. */ /* */ /* Software distributed under the License is distributed on an "AS IS" */ /* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */ /* the License for the specific language governing rights and limitations */ /* under the License. */ /* */ /* The Original Code is: all this file. */ /* */ /* The Initial Developer of the Original Code is Florent Georges. */ /* */ /* Contributor(s): none. */ /* ------------------------------------------------------------------------ */