/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.sparql.syntax; import junit.framework.TestCase ; import org.apache.jena.datatypes.xsd.XSDDatatype ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.NodeFactory ; import org.apache.jena.shared.PrefixMapping ; import org.apache.jena.shared.impl.PrefixMappingImpl ; import org.apache.jena.sparql.sse.Item ; import org.apache.jena.sparql.sse.SSE ; import org.apache.jena.vocabulary.XSD ; import org.junit.AfterClass ; import org.junit.BeforeClass ; import org.junit.Test ; public class TestSSE_Forms extends TestCase { static PrefixMapping pmap = new PrefixMappingImpl() ; static { pmap.setNsPrefix("xsd", XSD.getURI()) ; pmap.setNsPrefix("ex", "http://example/") ; } private static PrefixMapping original ; @BeforeClass public static void beforeClass() { original = SSE.getPrefixMapRead() ; PrefixMapping pmaptest = new PrefixMappingImpl() .setNsPrefixes(original) .removeNsPrefix("") .removeNsPrefix("ex") ; } @AfterClass public static void afterClass() { SSE.setPrefixMapRead(original) ; } // ---- Assume ParseHandlerResolver from here on @Test public void testBase_01() { Item r = Item.createNode(NodeFactory.createURI("http://example/x")) ; testItem("(base <http://example/> <x>)", r) ; } @Test public void testBase_02() { Item r = Item.createNode(NodeFactory.createURI("http://example/x")) ; testItem("(base <http://HOST/> (base <http://example/xyz> <x>))", r) ; } @Test public void testBase_03() { Item r = SSE.parse("(1 <http://example/xyz>)", null) ; testItem("(base <http://example/> (1 <xyz>))", r) ; } @Test public void testBase_04() { Item r = SSE.parse("(1 <http://example/xyz>)", null) ; testItem("(1 (base <http://example/> <xyz>))", r) ; } @Test public void testBase_05() { Item r = SSE.parse("(<http://example/xyz> <http://EXAMPLE/other#foo>)", null) ; testItem("((base <http://example/> <xyz>) (base <http://EXAMPLE/other> <#foo>))", r) ; } @Test public void testBase_06() { Item r = SSE.parse("(<http://example/xyz> <http://EXAMPLE/other#foo>)", null) ; testItem("(base <http://example/> (<xyz> (base <http://EXAMPLE/other> <#foo>)))", r) ; } @Test public void testBase_07() { Item r = SSE.parse("(<http://example/xyz> <http://EXAMPLE/other#foo>)", null) ; testItem("(base <http://EXAMPLE/other#> ((base <http://example/> <xyz>) <#foo>))", r) ; } // ---- @Test public void testPrefix_01() { Item r = Item.createNode(NodeFactory.createURI("http://example/abc")) ; testItem("(prefix ((ex: <http://example/>)) ex:abc)", r); } @Test public void testPrefix_02() { Item r = Item.createNode(NodeFactory.createURI("http://EXAMPLE/abc")) ; testItem("(prefix ((ex: <http://example/>)) (prefix ((ex: <http://EXAMPLE/>)) ex:abc))", r); } @Test public void testPrefix_03() { Item r = SSE.parse("(<http://example/abc>)" , null) ; testItem("(prefix ((ex: <http://example/>)) (ex:abc))", r); } @Test public void testPrefix_04() { Item r = SSE.parse("(<http://EXAMPLE/abc>)" , null) ; testItem("(prefix ((ex: <http://example/>)) ( (prefix ((ex: <http://EXAMPLE/>)) ex:abc) ))", r); } @Test public void testPrefix_05() { Item r = SSE.parse("(<http://example/abc>)" , null) ; testItem("(prefix ((ex: <http://example/>)) ( (prefix ((x: <http://EXAMPLE/>)) ex:abc) ))", r); } // ---- Form @Test public void testForm_01() { // Special form of nothing. Item item = SSE.parse("(prefix ((ex: <http://example/>)))") ; assertNull(item) ; } @Test public void testForm_02() { // Special form of nothing. Item item = SSE.parse("(base <http://example/>)") ; assertNull(item) ; } // ---- // URI resolving. @Test public void testTypedLit_r1() { Node node = NodeFactory.createLiteral("3", XSDDatatype.XSDinteger) ; testItem("'3'^^xsd:integer", Item.createNode(node)) ; } @Test public void testBasePrefix_01() { Item r = SSE.parse("<http://example/abc>" , null) ; testItem("(base <http://example/> (prefix ((x: <>)) x:abc) )", r); } private void testItem(String str, Item result) { Item item = SSE.parse(str) ; assertEquals(result, item) ; } }