You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by cl...@apache.org on 2013/12/15 12:40:16 UTC

svn commit: r1551016 [1/2] - in /jena/Experimental/new-test/src/test: java/ java/com/hp/hpl/jena/n3/ java/com/hp/hpl/jena/rdf/model/ java/com/hp/hpl/jena/testing_framework/ resources/com/hp/hpl/jena/n3/

Author: claude
Date: Sun Dec 15 11:40:13 2013
New Revision: 1551016

URL: http://svn.apache.org/r1551016
Log:
Added n3 tests

Added:
    jena/Experimental/new-test/src/test/java/GraphMemPlainTest.java   (with props)
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/IRIResolverTest.java   (with props)
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterCommonTest.java   (with props)
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterPPTest.java   (with props)
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterParameterizedTest.java   (with props)
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterPlainTest.java   (with props)
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterTest.java   (with props)
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterTriplesTest.java   (with props)
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3TurtleJenaWriterTest.java   (with props)
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractRDFWriterTest.java   (with props)
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TupleItem.java   (with props)
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TupleSet.java   (with props)
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/README_LICENSE
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/a1.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/contexts.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/lists-simple.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/lstring.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/make-results
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/make-tests
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-parser-tests
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-reader-tests
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-01.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-02.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-03.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-04.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-05.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-06.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-07.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-08.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-09.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-10.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-11.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-12.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-13.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-14.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-15.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-16.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-17.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-18.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-19.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-20.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-21.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-22.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-23.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-24.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-25.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-26.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-27.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-28.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-29.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-30.ttl
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-tests
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/path1.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/path2.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/quantifiers.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/qvars1.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/qvars2.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-01.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-02.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-03.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-04.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-05.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-06.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-07.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-08.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-09.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-10.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-11.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-12.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-13.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-14.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-15.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-16.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-17.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-18.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-19.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-20.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-21.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-22.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-23.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-24.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-25.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-26.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-27.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-result-28.nt
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-01.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-02.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-03.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-04.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-05.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-06.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-07.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-08.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-09.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-10.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-11.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-12.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-13.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-14.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-15.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-16.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-17.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-18.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-19.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-20.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-21.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-22.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-23.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-24.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-25.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-26.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-27.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/rdf-test-28.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/resolves-rdf.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/sep-term.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/sib.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/strquot.n3
    jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/t10.n3

Added: jena/Experimental/new-test/src/test/java/GraphMemPlainTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/GraphMemPlainTest.java?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/GraphMemPlainTest.java (added)
+++ jena/Experimental/new-test/src/test/java/GraphMemPlainTest.java Sun Dec 15 11:40:13 2013
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+
+
+
+import java.util.HashSet;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+import org.xenei.junit.contract.Contract.Inject;
+
+import com.hp.hpl.jena.graph.Triple;
+import com.hp.hpl.jena.graph.impl.CollectionGraph;
+import com.hp.hpl.jena.sparql.graph.GraphMemPlain;
+import com.hp.hpl.jena.testing_framework.AbstractGraphProducer;
+import org.xenei.junit.contract.IProducer;
+
+@RunWith(ContractSuite.class)
+@ContractImpl(GraphMemPlain.class)
+public class GraphMemPlainTest {
+
+	protected IProducer<GraphMemPlain> graphProducer = new AbstractGraphProducer<GraphMemPlain>() {
+
+		@Override
+		protected GraphMemPlain createNewGraph() {
+			return new GraphMemPlain();
+		}
+
+	};
+
+	@Inject
+	public IProducer<GraphMemPlain> getGraphProducer() {
+		return graphProducer;
+	}
+
+}

Propchange: jena/Experimental/new-test/src/test/java/GraphMemPlainTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/IRIResolverTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/IRIResolverTest.java?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/IRIResolverTest.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/IRIResolverTest.java Sun Dec 15 11:40:13 2013
@@ -0,0 +1,409 @@
+/*
+ * 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 com.hp.hpl.jena.n3;
+
+import static org.junit.Assert.*;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import com.hp.hpl.jena.n3.IRIResolver;
+import com.hp.hpl.jena.n3.JenaURIException;
+
+public class IRIResolverTest
+{
+    
+    @Test
+    public void testBase1()
+    {
+    	IRIResolver resolver = new IRIResolver();
+        assertNotNull(resolver.getBaseIRI()) ;
+        String base = resolver.getBaseIRI() ;
+        assertTrue(base.indexOf(':') > 0 ) ; 
+    }
+    
+    @Test
+    public void testBase2()
+    {
+        IRIResolver resolver = new IRIResolver("x") ;
+        assertNotNull(resolver.getBaseIRI()) ;
+        // Active when IRI library integrated - currently the resolver takes a raw base string.
+//        String base = resolver.getBaseIRI() ;
+//        assertTrue(base.indexOf(':') > 0 ) ; 
+    }
+
+    @Test
+    public void testBase3()
+    {
+        String b = IRIResolver.resolveGlobal("x") ;
+        IRIResolver resolver = new IRIResolver(b) ;
+        assertNotNull(resolver.getBaseIRI()) ;
+        String base = resolver.getBaseIRI() ;
+        assertTrue(base.indexOf(':') > 0 ) ; 
+    }
+    
+    @Test
+    public void testBadBase1() {
+    	execException("%G",JenaURIException.class);
+    }
+    @Test
+    public void testBadBase2() {
+    	execException("/%G",JenaURIException.class);
+    }
+    @Test
+    public void testBadBase3() {
+    	execException("file:/%/",JenaURIException.class);
+    }
+    @Test
+    public void testBadBase4() {
+    	execException("http://example.org/%",JenaURIException.class);
+    }
+
+    @Test
+    public void testBadChoice1() {
+    	chooseException("%G",JenaURIException.class);
+    }
+    @Test
+    public void testBadChoice2() {
+    	chooseException("/%G",JenaURIException.class);
+    }
+    @Test
+    public void testBadChoice3() {
+    	chooseException("file:/%/",JenaURIException.class);
+    }
+    @Test
+    public void testChoice1() {
+    	IRIResolver.chooseBaseURI("file:a") ;
+    }
+    @Test
+    public void testChoice2() {
+    	IRIResolver.chooseBaseURI("file:a") ;
+    }
+    // ---- Basic
+    
+    @Test
+    public void testURI_1()   { execTest("", "http://example.org/", "http://example.org/"); }
+    @Test
+    public void testURI_2()   { execTest("", "http://example.org/xyz_2007", "http://example.org/xyz_2007"); }
+    @Test
+    public void testURI_3()   { execTest("", "http://example.org/xyz 2007", "http://example.org/xyz 2007"); }
+    @Test
+    public void testURI_4()   { execTest("", "http://example.org/xyz__2007", "http://example.org/xyz__2007"); }
+    @Test
+    public void testURI_5()   { execTest("", "http://example.org/xyz__abc", "http://example.org/xyz__abc"); }
+    
+    // ---- Relative URIs
+    
+    @Test
+    public void testURI_relX_1()  { execTest("x", "http://example.org/ns", "http://example.org/x"); }
+
+    @Test
+    public void testURI_relX_2()  { execTest("x", "http://example.org/", "http://example.org/x"); }
+    
+    @Test
+    public void testURI2_relHashX_1()  { execTest("#x", "http://example.org/ns", "http://example.org/ns#x"); }
+    
+    @Test
+    public void testURI2_relHashX_2()  { execTest("#x", "http://example.org/ns/", "http://example.org/ns/#x"); }
+
+    @Test
+    public void testURI_blank_1()  { execTest("", "http://example.org/ns", "http://example.org/ns") ; }
+
+    @Test
+    public void testURI_blank_2()  { execTest("", "http://example.org/ns/", "http://example.org/ns/") ; }
+
+    @Test
+    public void testURI_hash_1()  { execTest("#", "http://example.org/ns", "http://example.org/ns#") ; }
+
+    @Test
+    public void testURI_hash_2()  { execTest("#", "http://example.org/ns/", "http://example.org/ns/#") ; }
+
+    @Test
+    public void testBaseHash_1() { execTest("x", "http://example.org/ns#", "http://example.org/x") ; }
+
+    @Test
+    public void testBaseHash_2() { execTest("x", "http://example.org#", "http://example.org/x") ; }
+    
+    @Test
+    public void testBaseHash_3() { execTest("#", "base:x", "base:x#") ; }
+
+//    // Java5: exception
+//    // Java6 & GNUclasspath: correctly get "base:#"
+//    public void testBaseHash_4() { execTest("#", "base:", "base:#") ; }
+
+    @Test
+    public void testScheme_1() { execTest("x", "base:", "base:x") ; }
+
+    @Test
+    public void testScheme_2() { execTest("/x", "base:", "base:/x") ; }
+
+    @Test
+    public void testScheme_3() { execTestMatch("x", "file:", "^file:///.*/x$") ; }
+    
+    @Test
+    public void testScheme_4() { execTestMatch("file:x", null, "^file:///.*/x$") ; }
+    
+//    public void testURI_file_1()  { execTestMatch("file:x", "http://example.org/ns", "^file:///.*/x$") ; }
+
+    @Test
+    public void testURI_file_2()  { execTest("x", "file:///A/B/C", "file:///A/B/x") ; }
+
+    @Test
+    public void testURI_file_3()  { execTest("x", "file:///A/B/", "file:///A/B/x") ; }
+
+
+    // ---- Absolute URIs are left alone 
+    
+    @Test
+    public void testURI_abs_1()   { execTest("http://host/x", "http://example.org/ns", "http://host/x") ; }
+    
+    @Test
+    public void testURI_abs_2()   { execTest("file:///x", "http://example.org/ns", "file:///x") ; }
+
+    @Test
+    public void testURI_abs_3()   { execTest("tag:foo", "http://example.org/ns", "tag:foo") ; }
+
+    @Test
+    public void testURI_abs_4()   { execTest("tag:/foo", "http://example.org/ns", "tag:/foo") ; }
+
+    @Test
+    public void testURI_abs_5()   { execTest("tag:/foo/", "http://example.org/ns", "tag:/foo/") ; }
+
+    @Test
+    public void testURI_abs_6()   { execTest("scheme99:/foo/", "http://example.org/ns", "scheme99:/foo/") ; }
+    
+    // Null base
+    
+    @Test
+    public void testURI_nullBase_1()   { execTest("scheme99:/foo/", null, "scheme99:/foo/") ; }
+    
+    // resolved against current directory
+    @Test
+    public void testURI_nullBase_2()   { execTestMatch("foo", null, ".*/foo") ; }
+
+    // ---- Hierarchical URIs
+
+    @Test
+    public void testHierURI_1()   { execTest("../foo", "file:///dir/file", "file:///foo") ; }
+
+    @Test
+    public void testHierURI_2()   { execTest("../foo", "http://host/dir/file.html", "http://host/foo") ; }
+    
+    @Test
+    public void testHierURI_3()   { execTest("../foo", "http://host/dir/", "http://host/foo") ; }
+
+    @Test
+    public void testHierURI_4()   { execTest("../foo", "http://host/", "http://host/foo") ; }
+    
+    @Test
+    public void testHierURI_5()   { execTest("../foo", "http://host/xyz", "http://host/foo") ; }
+    
+    @Test
+    public void testHierURI_6()   { execTest(".", "http://host/xyz", "http://host/") ; }
+
+    @Test
+    public void testHierURI_7()   { execTest(".", "http://host/xyz/", "http://host/xyz/") ; }
+    
+    @Test
+    public void testHierURI_8()   { execTest(".", "http://host/", "http://host/") ; }
+    
+    @Test
+    public void testHierURI_9()   { execTest(".", "file:///dir/file", "file:///dir/") ; }
+    // ---- File URIs
+    
+    @Test
+    public void testFileURI_1()   { execFileTest("file:///foo", "file:///foo") ; }
+
+    @Test
+    public void testFileURI_2()   { execFileTest("file://foo", "file://foo") ; }
+
+    @Test
+    public void testFileURI_3()   { execFileTest("file:/foo", "file:///foo") ; }
+
+    
+ // Bad.
+    @Test
+    public void testBad_1()   { execException("%G", "http://example.org/", JenaURIException.class); }
+    @Test
+    public void testBad_2()   { execException("foo", "http://example.org/%HH", JenaURIException.class); }
+    @Test
+    public void testBad_3()   { execException("bar", "http://example.org/%3", JenaURIException.class); }
+    
+    
+    @Test
+    public void testBaseEmpty() { execTestMatch("x", "", "^file:///.*/x$") ; }
+
+    // Resolved against current directory.
+    @Test
+    public void testBaseNull() { execTestMatch("x", null, ".*/x" ) ; }
+
+    @Test
+    public void testRelBase_1() {execTestMatch("x", "ns", ".*/x" );  }
+    
+    @Test
+    public void testRelBase_2() { execTestMatch("x", "/ns", ".*/x" ); }
+
+    // ---- Opaque
+    
+    @Test
+    public void testURI_opaque_1()  { execTest("#x", "tag:A", "tag:A#x") ; }
+
+    @Test
+    public void testURI_opaque_2()  { execTest("#x", "urn:x-jena:A", "urn:x-jena:A#x") ; }
+    
+//    public void testURI_opaque_3()  { execException("#x", "urn:x-jena:A", RelativeURIException.class) ; }
+
+    // ---- Opaque file URLs
+    
+    // Should these be errors? Yes.
+    //public void testURI_file_4()  { execTest("x", "file:A", "file:Ax") ; }
+    @Test
+    public void testURI_file_4()  {  execTestMatch("x", "file:A","^file:///.*/x") ;}
+    
+    @Test
+    public void testURI_file_5()  { execTestMatch("#x", "file:A","^file:///.*/A#x") ; }
+    //public void testURI_file_5()  { execException("#x", "file:A", RelativeURIException.class) ; }
+    
+    //public void testURI_file_6()   { execTest("foo", "file:///xyz abc/", "file:///xyz abc/foo" ) ; }
+    
+    @Test
+    public void testURI_file_7()   { execTestMatch("file:foo", "file:xyz", "^file:///.*foo$") ; }
+
+    @Test
+    public void testURI_file_8()   { execTestMatch("file:foo", "file:a b", "^file:///.*foo$") ; }
+    
+    
+    // File URLs - test aren't exact as the depend where they are run.
+    
+    @Test
+    public void testFileURI_rel_1() { execTestFileRelURI("file:foo") ; }
+    
+    @Test
+    public void testFileURI_rel_2() { execTestFileRelURI("file:foo/bar") ; }
+    
+    @Test
+    public void testFileURI_rel_3() { execTestFileRelURI("file:foo/") ; }
+    
+    @Test
+    public void testFileURI_rel_4() { execTestFileRelURI("file:foo/bar/") ; }
+    
+
+    private void execTest(String u, String base, String result)
+    {
+        IRIResolver resolver = new IRIResolver(base) ;
+        String res = resolver.resolve(u) ;
+
+        if (result == null )
+        {
+            assertNull("("+u+","+base+") => <null> :: Got: "+res, res) ;
+            return ;
+        }
+        
+        assertNotNull("("+u+","+base+") => "+result+" :: Got: <null>", res) ;
+        assertTrue("("+u+","+base+") => "+result+" :: Got: "+res, res.equals(result)) ;
+    }
+    
+    // A test for resolved names that depend on where the tests are run.
+    private void execTestMatch(String u, String base, String resultPattern)
+    {
+        IRIResolver resolver = new IRIResolver(base) ;
+        String res = resolver.resolve(u) ;
+
+        if (resultPattern == null )
+        {
+            assertNull("("+u+","+base+") => <null> :: Got: "+res, res) ;
+            return ;
+        }
+        
+        boolean r = res.matches(resultPattern) ;
+        assertTrue("Does not match: "+res+" -- "+resultPattern, r) ;
+    }
+    
+    private void execFileTest(String fn1, String fn2)
+    {
+        String s = IRIResolver.resolveFileURL(fn1) ;
+        assertEquals(s,fn2) ;
+    }
+    
+    private void execTestFileRelURI(String fn)
+    {
+        String relName = fn.substring("file:".length()) ;
+        String s = IRIResolver.resolveFileURL(fn) ;
+        assertTrue("Lost relative name: ("+fn+"=>"+s+")", s.endsWith(relName) ) ;
+        assertTrue("Not absolute: ("+fn+"=>"+s+")", s.startsWith("file:///") ) ;
+    }
+    
+    private void execException(String u, String base, Class<?> ex)
+    {
+        String s = ex.getSimpleName() ;
+        try {
+            IRIResolver resolver = new IRIResolver(base) ;
+            String res = resolver.resolve(u) ;
+            if ( res == null )
+                fail("("+u+","+base+") => <null> :: Expected exception: " +s) ;
+            else
+                fail("("+u+","+base+") => "+res+" :: Expected exception: " +s) ;
+        } catch (Exception ex2)
+        {
+            // Shoudl test whether ex2 is a subclass of ex
+            assertEquals(ex, ex2.getClass()) ;
+        }
+    }
+    
+    private void execException(String base, Class<?> ex)
+    {
+        String s = ex.getSimpleName() ;
+        try {
+            new IRIResolver(base) ;
+                 fail("("+base+") => OK :: Expected exception: " +s) ;
+        } catch (Exception ex2)
+        {
+            // Shoudl test whether ex2 is a subclass of ex
+            assertEquals(ex, ex2.getClass()) ;
+        }
+    }
+
+    private void chooseException(String base, Class<?> ex)
+    {
+        String s = ex.getSimpleName() ;
+        try {
+            IRIResolver.chooseBaseURI(base) ;
+                 fail("("+base+") => OK :: Expected exception: " +s) ;
+        } catch (Exception ex2)
+        {
+            // Shoudl test whether ex2 is a subclass of ex
+            assertEquals(ex, ex2.getClass()) ;
+        }
+    }
+//    private void execTestGlobal(String u, String result)
+//    {
+//        String res = IRIResolver.resolveGlobal(u) ;
+//        if (result == null )
+//        {
+//            assertNull("("+u+") => <null> :: Got: "+res, res) ;
+//            return ;
+//        }
+//        
+//        assertNotNull("("+u+") => "+result+" :: Got: <null>", res) ;
+//        assertTrue("("+u+") => "+result+" :: Got: "+res, res.equals(result)) ;
+//    }
+}

Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/IRIResolverTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterCommonTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterCommonTest.java?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterCommonTest.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterCommonTest.java Sun Dec 15 11:40:13 2013
@@ -0,0 +1,56 @@
+package com.hp.hpl.jena.n3;
+
+import static org.junit.Assert.*;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import com.hp.hpl.jena.rdf.model.AbstractRDFWriterTest;
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.RDFWriter;
+import com.hp.hpl.jena.shared.JenaException;
+import com.hp.hpl.jena.testing_framework.ModelHelper;
+import com.hp.hpl.jena.util.FileUtils;
+
+public class N3JenaWriterCommonTest extends AbstractRDFWriterTest {
+	
+	public N3JenaWriterCommonTest() {
+	}
+
+	@Override
+	protected RDFWriter createWriter() {
+		return new N3JenaWriterCommon();
+	}
+
+	@Override
+	protected String getTestModelFacts()
+	{
+		return "a b c ; a b2 c ;";
+	}
+	
+	@Override	
+	protected void checkWriteResult( String s) {
+		assertTrue( s.indexOf("<eh:/b> <eh:/c>")>-1);
+		assertTrue( s.indexOf("<eh:/b2> <eh:/c>")>-1);
+		assertTrue( s.indexOf("<eh:/a>")>-1);
+	}
+	
+	@Override
+	protected String getFormat() {
+		return "N3";
+	}
+	
+}

Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterCommonTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterPPTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterPPTest.java?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterPPTest.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterPPTest.java Sun Dec 15 11:40:13 2013
@@ -0,0 +1,25 @@
+package com.hp.hpl.jena.n3;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+
+import com.hp.hpl.jena.rdf.model.AbstractRDFWriterTest;
+import com.hp.hpl.jena.rdf.model.RDFWriter;
+
+
+public class N3JenaWriterPPTest extends N3JenaWriterCommonTest {
+	
+	public N3JenaWriterPPTest() {
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	protected RDFWriter createWriter() {
+		return new N3JenaWriterPP();
+	}
+
+}

Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterPPTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterParameterizedTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterParameterizedTest.java?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterParameterizedTest.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterParameterizedTest.java Sun Dec 15 11:40:13 2013
@@ -0,0 +1,119 @@
+package com.hp.hpl.jena.n3;
+
+import static org.junit.Assert.*;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import com.hp.hpl.jena.rdf.model.AbstractRDFWriterTest;
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.rdf.model.RDFWriter;
+import com.hp.hpl.jena.shared.JenaException;
+import com.hp.hpl.jena.testing_framework.ModelHelper;
+import com.hp.hpl.jena.testing_framework.TupleItem;
+import com.hp.hpl.jena.testing_framework.TupleSet;
+import com.hp.hpl.jena.util.FileUtils;
+
+@RunWith( value= Parameterized.class )
+public class N3JenaWriterParameterizedTest  {
+	
+	private static Class<?>[] clazzez = {
+		//N3JenaWriterPlain.class, 
+		//N3JenaWriterPP.class,
+		N3JenaWriter.class,
+		//N3JenaWriterTriples.class,
+		//N3TurtleJenaWriter.class
+	};
+	
+	private RDFWriter rdfWriter;
+	private URL inputFile;
+	
+	public N3JenaWriterParameterizedTest(Class<?> writerClass, URL inputFile, String name ) throws InstantiationException, IllegalAccessException {
+		rdfWriter = (RDFWriter) writerClass.newInstance();
+		this.inputFile = inputFile;
+	}
+
+	public static final String DEFAULT_BASE = "http://example.com/";
+	
+	@Test
+    public void testRoundtrip() throws Exception
+	{
+		Model model = ModelFactory.createDefaultModel();
+		model.read( inputFile.openStream(), DEFAULT_BASE, "N3" );
+		
+		StringWriter writer = new StringWriter();
+		rdfWriter.write(model, writer, DEFAULT_BASE);
+		writer.close() ;
+		
+		StringReader r = new StringReader(writer.toString()) ;
+		Model model2 = ModelFactory.createDefaultModel() ;
+		model2.read(r, DEFAULT_BASE, "N3") ;
+		
+		assertTrue( "Models should be isomorphic", model.isIsomorphicWith(model2) );
+	}
+
+
+	@Parameters(name= "{index}: {2}")
+	public static Collection<Object[]> data() throws Exception {
+		List<Object[]> retval = new ArrayList<Object[]>();
+		InputStream is = N3JenaWriterParameterizedTest.class.getResourceAsStream("n3-writer-tests");
+		//String name = N3JenaWriterParameterizedTest.class.getCanonicalName().replaceAll("\\.", "/");
+		//File baseDir = new File(name).getParentFile();
+		//File testFile = findFile(baseDir, "n3-reader-tests");
+		TupleSet tests = null ;
+		
+		Reader r = new InputStreamReader(is) ;
+		tests = new TupleSet(r) ;
+		List<URL> inputFiles = new ArrayList<URL>();
+	
+		for ( ; tests.hasNext() ; )
+		{
+			List<TupleItem> l = tests.next() ;
+			if ( l.size() != 2 )
+			{
+				throw new JenaException("Error in N3 test configuration file: n3-reader-tests: length of an entry is "+l.size()) ;
+			}
+			inputFiles.add( N3JenaWriterParameterizedTest.class.getResource( l.get(0).get()) );
+		}
+		
+		for (Class<?> clz : clazzez)
+		{
+			
+			for (URL url : inputFiles )
+			{
+				File f = new File( url.getFile() );
+				String nm = String.format( "%s: %s", clz.getSimpleName(), f.getName());
+				retval.add( new Object[] {  clz, url, nm } );
+			}
+		}
+		return retval;
+	}
+
+//	addTest(new Test(testName, inputFile, resultsFile,
+//            N3JenaWriter.n3WriterPrettyPrinter)) ;
+//addTest(new Test(testName, inputFile, resultsFile,
+//            N3JenaWriter.n3WriterPlain)) ;
+//addTest(new Test(testName, inputFile, resultsFile,
+//            N3JenaWriter.n3WriterTriples)) ;
+}

Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterParameterizedTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterPlainTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterPlainTest.java?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterPlainTest.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterPlainTest.java Sun Dec 15 11:40:13 2013
@@ -0,0 +1,24 @@
+package com.hp.hpl.jena.n3;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+
+import com.hp.hpl.jena.rdf.model.AbstractRDFWriterTest;
+import com.hp.hpl.jena.rdf.model.RDFWriter;
+
+
+public class N3JenaWriterPlainTest extends N3JenaWriterCommonTest {
+	
+	public N3JenaWriterPlainTest() {
+	}
+
+	@Override
+	protected RDFWriter createWriter() {
+		return new N3JenaWriterPlain();
+	}
+
+}

Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterPlainTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterTest.java?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterTest.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterTest.java Sun Dec 15 11:40:13 2013
@@ -0,0 +1,25 @@
+package com.hp.hpl.jena.n3;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+
+import com.hp.hpl.jena.rdf.model.AbstractRDFWriterTest;
+import com.hp.hpl.jena.rdf.model.RDFWriter;
+
+
+public class N3JenaWriterTest extends N3JenaWriterCommonTest {
+	
+	public N3JenaWriterTest() {
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	protected RDFWriter createWriter() {
+		return new N3JenaWriter();
+	}
+
+}

Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterTriplesTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterTriplesTest.java?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterTriplesTest.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterTriplesTest.java Sun Dec 15 11:40:13 2013
@@ -0,0 +1,30 @@
+package com.hp.hpl.jena.n3;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+
+import com.hp.hpl.jena.rdf.model.AbstractRDFWriterTest;
+import com.hp.hpl.jena.rdf.model.RDFWriter;
+
+
+public class N3JenaWriterTriplesTest extends N3JenaWriterCommonTest {
+	
+	public N3JenaWriterTriplesTest() {
+	}
+
+	@Override
+	protected RDFWriter createWriter() {
+		return new N3JenaWriterTriples();
+	}
+	
+	@Override	
+	protected void checkWriteResult( String s) {
+		assertTrue( s.contains("<eh:/a>  <eh:/b2> <eh:/c>") );
+		assertTrue( s.contains("<eh:/a>  <eh:/b>  <eh:/c>") );;
+	}
+
+}

Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3JenaWriterTriplesTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3TurtleJenaWriterTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3TurtleJenaWriterTest.java?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3TurtleJenaWriterTest.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3TurtleJenaWriterTest.java Sun Dec 15 11:40:13 2013
@@ -0,0 +1,24 @@
+package com.hp.hpl.jena.n3;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.ContractImpl;
+import org.xenei.junit.contract.ContractSuite;
+
+import com.hp.hpl.jena.rdf.model.AbstractRDFWriterTest;
+import com.hp.hpl.jena.rdf.model.RDFWriter;
+
+
+public class N3TurtleJenaWriterTest extends N3JenaWriterCommonTest {
+	
+	public N3TurtleJenaWriterTest() {
+	}
+
+	@Override
+	protected RDFWriter createWriter() {
+		return new N3TurtleJenaWriter();
+	}
+
+}

Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/n3/N3TurtleJenaWriterTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractRDFWriterTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractRDFWriterTest.java?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractRDFWriterTest.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractRDFWriterTest.java Sun Dec 15 11:40:13 2013
@@ -0,0 +1,138 @@
+package com.hp.hpl.jena.rdf.model;
+
+import static org.junit.Assert.*;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.hp.hpl.jena.testing_framework.ModelHelper;
+
+public abstract class AbstractRDFWriterTest {
+	
+	private static Logger LOG = LoggerFactory
+			.getLogger(AbstractRDFWriterTest.class);
+	
+	protected RDFWriter rdfWriter;
+	
+	protected void setWriter( RDFWriter writer )
+	{
+		this.rdfWriter = writer;
+	}
+	
+	public static final String DEFAULT_BASE = "http://example.com/";
+	
+	public AbstractRDFWriterTest() {
+	}
+	
+	@Before
+	public final void beforeRDFWriterTest()
+	{
+		this.rdfWriter = createWriter();
+	}
+	
+	protected abstract RDFWriter createWriter();
+
+	protected abstract void checkWriteResult( String result );
+	
+	protected abstract String getFormat();
+	
+	protected abstract String getTestModelFacts(); 
+	
+	private Model getTestModel()
+	{
+		return ModelHelper.memModel( getTestModelFacts() );
+	}
+	
+	@Test
+    public void testWriteWriter()
+	{
+		StringWriter writer = new StringWriter();
+		rdfWriter.write( getTestModel(), writer, DEFAULT_BASE );
+		checkWriteResult( writer.getBuffer().toString() ) ;
+	}
+
+	@Test
+    public void testWriteOutputStream() {
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		rdfWriter.write( getTestModel(), baos, DEFAULT_BASE );
+		checkWriteResult( new String(baos.toByteArray()) ) ;
+	}
+
+	@Test
+	public void testSetProperty()
+	{
+		Object o = rdfWriter.setProperty( "test1", "test1a");
+		assertNull( "Should not have returned a value", o );
+		o = rdfWriter.setProperty( "test1", "test1b");
+		assertNotNull( "Should have returned a value", o );
+		assertEquals( o, "test1a");
+		
+		o = rdfWriter.setProperty( "test2", "test2a");
+		assertNull( "Should not have returned a value", o );
+		o = rdfWriter.setProperty( "test2", "test2b");
+		assertNotNull( "Should have returned a value", o );
+		assertEquals( o, "test2a");
+		// can not set null -- no documentation about what this should do
+		// but it throws an exception in some cases where the properties
+		// are map based.
+//		o = rdfWriter.setProperty( "test2", null);
+//		assertNotNull( "Should have returned a value", o );
+//		assertEquals( o, "test2b");
+//		o = rdfWriter.setProperty( "test2", "test2c");
+//		assertNull( "Should not have returned a value", o );
+	}
+
+	@Test
+	public void testSetErrorHandler()
+	{
+		RDFErrorHandler e = new RDFErrorHandler(){
+
+			@Override
+			public void warning(Exception e) {
+				// TODO Auto-generated method stub
+				
+			}
+
+			@Override
+			public void error(Exception e) {
+				// TODO Auto-generated method stub
+				
+			}
+
+			@Override
+			public void fatalError(Exception e) {
+				// TODO Auto-generated method stub
+				
+			}};
+			
+
+		RDFErrorHandler o = rdfWriter.setErrorHandler( e );
+		RDFErrorHandler o2 = rdfWriter.setErrorHandler( o );
+		assertEquals( "Should have returned original error handler", e, o2 );
+	}
+
+	@Test
+    public void testRoundtrip() throws Exception
+	{
+		Model model = getTestModel();
+		StringWriter writer = new StringWriter();
+		rdfWriter.write( getTestModel(), writer, DEFAULT_BASE );
+		
+		writer.close() ;
+		
+		StringReader r = new StringReader(writer.toString()) ;
+		Model model2 = ModelFactory.createDefaultModel() ;
+		model2.read(r, DEFAULT_BASE, getFormat()) ;
+		
+		assertTrue( "Models should be isomorphic", model.isIsomorphicWith(model2) );
+	}
+	
+}

Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractRDFWriterTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TupleItem.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TupleItem.java?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TupleItem.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TupleItem.java Sun Dec 15 11:40:13 2013
@@ -0,0 +1,60 @@
+/*
+ * 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 com.hp.hpl.jena.testing_framework;
+
+/**
+ * The unit found in a line of a tuple.
+ * Can be a string (quoted, possibly with the datatype, or unquoted) or a URI.
+ */
+public class TupleItem
+{
+    public static final int URI      = 0 ;
+    public static final int STRING   = 1 ;
+    public static final int UNKNOWN  = 2 ;
+    public static final int UNQUOTED = 3 ;
+    public static final int ANON     = 4 ;
+
+    String rep ;
+    String datatype ;
+    String asFound ;
+    int itemType ;
+
+    TupleItem(String value, String valAsFound, int type, String dt)
+    {
+        rep = value ;
+        asFound = valAsFound ;
+        itemType = type ;
+        datatype = dt ;
+    }
+
+    public int getType() { return itemType ; }
+
+    public boolean isURI()       { return itemType == URI ; }
+    public boolean isString()    { return itemType == STRING ; }
+    public boolean isUnknown()   { return itemType == UNKNOWN ; }
+    public boolean isUnquoted()  { return itemType == UNQUOTED ; }
+    public boolean isAnon()      { return itemType == ANON ; }
+
+    public String get() { return rep ; }
+    public String getDT() { return datatype ;
+    }
+    public String asQuotedString() { return asFound ; }
+    @Override
+    public String toString() { return rep ; }
+}

Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TupleItem.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TupleSet.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TupleSet.java?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TupleSet.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TupleSet.java Sun Dec 15 11:40:13 2013
@@ -0,0 +1,301 @@
+/*
+ * 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 com.hp.hpl.jena.testing_framework ;
+
+import java.io.* ;
+import java.util.* ;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class TupleSet implements Iterator<List<TupleItem>>
+{
+    BufferedReader in ;
+    public String line = null ;
+    public int lineNumber = 0 ;
+
+    static final char COMMENTCHAR = '#' ;
+    List<TupleItem> current = null ;
+    boolean finished = false ;
+
+    protected static Logger logger = LoggerFactory.getLogger( TupleSet.class );
+    
+    /** Creates new TupleSet */
+    public TupleSet(Reader r)
+    {
+        if ( ! ( r instanceof BufferedReader ) )
+            in = new BufferedReader(r) ;
+        else
+            in = (BufferedReader)r;
+    }
+
+    @Override
+    public boolean hasNext()
+    {
+        if ( finished ) return false ;
+
+        if ( current == null )
+            current = tuple() ;
+        return current != null ;
+    }
+
+    @Override
+    public List<TupleItem> next()
+    {
+        if ( hasNext() )
+        {
+            List<TupleItem> x = current ;
+            current = null ;
+            return x ;
+        }
+        else
+            return null ;
+    }
+
+
+    @Override
+    public void remove()
+    {
+        throw new java.lang.UnsupportedOperationException("TupleSet.remove") ;
+    }
+
+    private List<TupleItem> tuple()
+    {
+
+        try {
+            lineNumber ++ ;
+            line = in.readLine() ;
+        } catch (IOException e) {}
+
+        if ( line == null )
+        {
+            finished = true ;
+            return null ;
+        }
+
+        //System.out.println("Line: "+line) ;
+        List<TupleItem> tuple = new ArrayList<TupleItem>() ;
+        int i = 0 ;
+        int j = 0 ;
+        boolean errorFound = false ;
+
+     tupleLoop:
+        for (;;)
+        {
+            // Move to beginning of next item.
+            i = skipwhitespace(line, j) ;
+
+            if ( i < 0 )
+                break ;
+
+            int iStart = -2 ;       // Points to the beginning of the item as found
+            int jStart = -2 ;       // Points to the item without quotes
+            int iFinish = -2 ;      // Points after the end of the item as found
+            int jFinish = -2 ;      // Points after the end of the item without quotes
+            int dtStart = -2 ;      // Points to start of datatype (after < quote)
+            int dtFinish = -2 ;     // Points to end of datatype
+            int type = TupleItem.UNKNOWN;
+
+            switch (line.charAt(i))
+            {
+                case COMMENTCHAR:
+                    break tupleLoop ;
+                case '<':
+                    type = TupleItem.URI ;
+                    iStart = i ;
+                    jStart = i+1 ;
+                    int newPosn = parseURI(i, line) ;
+                    if (newPosn < 0)
+                    {
+                        errorFound = true;
+                        break tupleLoop;
+                    }
+                    j = newPosn ;
+                    
+                    iFinish = j+1 ;
+                    jFinish = j ;
+                    break ;
+                case '"':
+                    type = TupleItem.STRING ;
+                    iStart = i ;
+                    jStart = i+1 ;
+                    boolean inEscape = false ;
+                    for ( j = i+1 ; j < line.length() ; j++ )
+                    {
+                        char ch = line.charAt(j) ;
+                        if ( inEscape )
+                        {
+                        	// ToDo: escape
+                            inEscape = false ;
+                            continue ;
+                        }
+                        // Not an escape
+                        if ( ch == '"'  )
+                            break ;
+
+                        if ( ch == '\\' )
+                            inEscape = true ;
+                        if ( ch == '\n' || ch == '\r' )
+                        {
+                            errorFound = true ;
+                            break tupleLoop;
+                            
+                        }
+                    }
+                    
+                    // Malformed
+                    if ( j == line.length() )
+                    {
+                        errorFound = true ;
+                        break tupleLoop;
+                    }
+                    
+                    iFinish = j+1 ;
+                    jFinish = j ;
+                    // RDF literals may be followed by their type.
+                         
+                    if ( j < line.length()-3 
+                         && line.charAt(j+1) == '^'
+                         && line.charAt(j+2) == '^'
+                         && line.charAt(j+3) == '<' )
+                    {
+                        dtFinish = parseURI(j+3, line) ;
+                        dtStart = j+4 ;
+                        if (dtFinish < 0)
+                        {
+                            errorFound = true;
+                            break tupleLoop;
+                        }
+                        j = dtFinish+1 ;
+                        //String dt = line.substring(dtStart, dtFinish) ;
+                        //System.out.println("I see a datatype:"+dt) ;
+                    }
+                    
+                    break ;
+                case '_':
+                    type = TupleItem.ANON ;
+                    iStart = i ;
+                    for ( j = i+1 ; j < line.length() ; j++ )
+                    {
+                        char ch = line.charAt(j) ;
+                        if ( ch == ' '  || ch == '\t' || ch == '.' )
+                            break ;
+                        if ( ! Character.isLetterOrDigit(ch) && ! (ch == '_') && ! (ch == ':') )
+                        {
+                            errorFound = true ;
+                            break tupleLoop ;
+                        }
+                    }
+                    iFinish = j ;
+                    jStart = iStart ;
+                    jFinish = iFinish ;
+                    break ;
+                case '.':
+                case '\n':
+                case '\r':
+                    return tuple ;
+                default:
+                    type = TupleItem.UNQUOTED ;
+                    iStart = i ;
+                    jStart = i ;
+                    for ( j = i+1 ; j < line.length() ; j++ )
+                    {
+                        char ch = line.charAt(j) ;
+                        if ( ch == ' '  || ch == '\t' || ch == '.' )
+                            break ;
+
+                        //if ( ! Character.isLetterOrDigit(line.charAt(i)) )
+                        //{
+                        //    errorFound = true ;
+                        //    break tupleLoop;
+                        //}
+                    }
+                    // Malformed
+                    if ( j == line.length()+1 )
+                    {
+                        errorFound = true ;
+                        break tupleLoop;
+                    }
+                    iFinish = j ;
+                    jFinish = j ;
+                    break ;
+            }
+            String item = line.substring(jStart, jFinish) ;
+            String literal = line.substring(iStart, iFinish) ;
+            String dt = null ;
+            if ( dtStart > 0 )
+                dt = line.substring(dtStart, dtFinish) ;
+            
+            tuple.add(new TupleItem(item, literal, type, dt)) ;
+            j++ ;
+            // End of item.
+        }
+        //End of this line.
+        if ( errorFound )
+        {
+            logger.error( "Error in TupleSet.tuple: " + line );
+            
+            String s = "" ;
+            int k = 0 ;
+            for ( ; k < i ; k++ ) s = s+" " ;
+            s = s+"^" ;
+            for ( ; k < j-1 ; k++ ) s=s+" " ;
+            s = s+"^" ;
+            logger.error( s ) ;
+            return null ;
+        }
+
+        if ( tuple.size() == 0 )
+        {
+            // Nothing found : loop by tail recursion
+            return tuple() ;
+        }
+        return tuple ;
+    }
+
+    private int skipwhitespace(String s, int i)
+    {
+        for ( ; i < s.length() ; i++ )
+        {
+            char ch = s.charAt(i) ;
+            // Horizonal whitespace
+            if ( ch != ' ' && ch != '\t' )
+                return i ;
+        }
+        return -1 ;
+    }
+
+    private int parseURI(int i, String line)
+    {
+        int j;
+        for (j = i + 1; j < line.length(); j++)
+        {
+            char ch = line.charAt(j);
+            if (ch == '>')
+                break;
+            if (ch == '\n' || ch == '\r')
+                return -1;
+        }
+        // Malformed
+        if (j == line.length())
+            return -2;
+        return j ;
+    }
+}

Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TupleSet.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/README_LICENSE
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/README_LICENSE?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/README_LICENSE (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/README_LICENSE Sun Dec 15 11:40:13 2013
@@ -0,0 +1,16 @@
+The following statement applied to all files in this directory unless otherwise noted:
+
+   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.

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/a1.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/a1.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/a1.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/a1.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,38 @@
+# Test the cwm builtins
+
+#@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+#@prefix s: <http://www.w3.org/2000/01/rdf-schema#> .
+#@prefix daml:  <http://www.daml.org/2000/10/daml-ont#> .
+#@prefix dpo:  <http://www.daml.org/2001/03/daml+oil#> .
+#@prefix ex:   <http://www.daml.org/2000/10/daml-ex#> .
+#@prefix log:  <http://www.w3.org/2000/10/swap/log#> .
+
+@prefix : <foo.n3#>.  # Local stuff
+@prefix foo: <foo.n3#>.  # Local stuff
+
+# Usage:   cwm a1.n3 ; cwm a1.n3 -flat
+#
+# Output should conclude all test* a :success and no failures.
+#
+
+""" The idea is that each _:xxx style qname should be taken as an implicitly
+declared anonymous variable.""" :isAbout <>.
+
+:joe :livesIn _:h.
+_:h :in :texas.
+
+:joe :address _:a.
+	_:a  :street "Accacia Avenue".
+ _:a  :number "17".
+ _:a  :town    "anytown USA".
+
+_:p a :phone.
+_:p :areacode "555".
+_:p :otherdigits "555-1212".
+_:p :owner :joe.
+_:p :location _:a.
+
+
+ 
+
+#ends

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/contexts.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/contexts.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/contexts.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/contexts.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,18 @@
+# Test data in notation3 http://www.w3.org/DesignIssues/Notation3.html
+#    
+@prefix u: <http://www.example.org/utilities#> .
+@prefix : <#> .
+
+:assumption = { :fred u:knows :john .
+                :john u:knows :mary .} .
+
+:conclusion = { :fred u:knows :mary . } .
+
+# The empty context is trivially true.
+# Check that we can input it and output it!
+
+:trivialTruth = { }.
+
+# ENDS
+
+

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/lists-simple.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/lists-simple.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/lists-simple.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/lists-simple.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,60 @@
+# Test list syntax
+#
+#  With no {} so it can be translated in DAML easily
+#
+
+@prefix t: <test#> .
+@prefix : <test#> .
+@prefix log: <http://www.w3.org/2000/10/swap/log#> .
+
+# This is cheating a bit - in case output of first and rest is needed.
+
+@prefix dpo: <http://www.daml.org/2001/03/daml+oil#>.
+
+# Other interesting unimplemented syntaxes ...
+#[ log:first :a;
+#  ont:rest thatWhich has ont:first :b; 
+#  ont:rest thatWhich has ont:first :c; 
+#  ont:rest thatWhich has ont:first :d; 
+#  ont:rest thatWhich has ont:first :e ];
+#
+# etc
+#
+#( :a :b :c :d :e )
+#_________________________________________
+# cwm output from one version:
+#:threeItems = ( :b :c :d ) .
+#
+#:nested =( :first :second ( :left3 :right3 ) :fourth )  .
+#
+#:emptyList = ( ) .
+#
+#:listOf2Empties = (()()) .
+#
+#:twoAnons = ([a :mother][a :father]).
+#
+
+# :a_threebrackets = ( ( ( :fff ) ) ) .
+
+[ :anonVerb12 :anonObj12 ] :verb12 :obj12.
+
+:threeItems = ( :b :c :d ) .
+
+:nested =( :first :second ( :left3 :right3 ) :fourth )  .
+
+:emptyList = ( ) .
+
+:listOf2Empties = (()()) .
+
+:twoAnons = ([a :mother][a :father]).
+
+() :verb0 :object0.
+( "subj1" ) :verb1 :object1.
+( "subj2a" "subj2b" ) :verb2 :object2.
+
+# Supressed: - see lists.n3 for version with this in
+# :twoFormulae = ({:a a :mother} {:b a :father}).
+
+
+#ENDS
+

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/lstring.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/lstring.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/lstring.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/lstring.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,26 @@
+#   Just see whether this can be input and re-output
+#
+# usage:     cwm lstring.n3 | cwm
+#
+@prefix : <#>.
+
+
+ """     @prefix : <http://www.w3.org/2000/10/swap/test/crypto/acc.n3#> .
+     @prefix crypto: <http://www.w3.org/2000/10/swap/crypto#> .
+     @prefix log: <http://www.w3.org/2000/10/swap/log#> .
+     @prefix os: <http://www.w3.org/2000/10/swap/os#> .
+     @prefix string: <http://www.w3.org/2000/10/swap/string#> .
+    
+    \"\"\"
+MzE5MDcKCjM2ODkyMzAyMDE1MzgwMjY2NTU5MzgzNjMyMDQyOTM1Mjc4MDk3MzAwNzE4ODMzOTY3
+NTY3NTk1Njg5MjE2Mjk0NzkyMzUyNTQ3OTQzMjI4MjM2MDEwNjQwMTAyMjcxODk0OTY2MzgzNjQ1
+NDQyODQ5Njg3MzUzOTM2NzAyMTI5NDgxNDg4MzIxMzUyODEyMTc1NjIxNjE0NjE5Mzk2MDY4MjE2
+Nzk1MzY0NjAxNjE0MzM5NDYzOTIyMDMwMDE4NTEyODMyMTg0NDIyMzI3MzcxNzE5MjcxMzY0ODY1
+MjEzMzU1OTc4Nzk0OTIyMzQ4NDU5NTUxMTQ2MTcyNjE0MTk3ODI2NTg0NDA2Mzg2OTQwMTcwNTE4
+OTY0MDQzNzMxNzEyODc1OTk3NjAyNjE4ODUzNDQ1Mw=3D=3D
+\"\"\"     a :RequestKey;
+         :authorityName <Tiina>;
+         :junk "327462sjsdfjsakdhfkjsafd32164321" .
+""" a :test_string.
+    
+#ends

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/make-results
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/make-results?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/make-results (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/make-results Sun Dec 15 11:40:13 2013
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+#DIR="Tests/"
+DIR=""
+
+if [ $# -eq 0 ]
+then
+    FILES="${DIR}rdf-test-*.n3"
+else
+    FILES="$@"
+    fi
+
+for x in $FILES
+do
+  #echo $x
+    B="$(basename $x .n3)"
+    # Test 08 is the literals test - it is more liberal than cwm
+    # Test 19/20 are the named lists test - it is more liberal than cwm
+    case "$B" in 
+	"rdf-test-08" | "rdf-test-19" | "rdf-test-20" )
+	echo "    # Skipping $x"
+	continue ;;
+    esac
+
+    N="${B#rdf-test-}"
+    R="${DIR}rdf-result-$N.nt"
+
+    if [ -s "$R" ]
+    then
+	echo "    # $R exists"
+	continue
+	fi
+    
+    echo "( # $x => $R"
+    echo "   echo \"# cwm: $x => $R\""
+    echo "   cwm --ntriples $x | sed -e 's!file:/[^>]*/!file:///base/!g'"
+    echo ") 2>/dev/null > $R"
+    echo
+    done

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/make-tests
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/make-tests?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/make-tests (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/make-tests Sun Dec 15 11:40:13 2013
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+#DIR="Tests/"
+DIR=""
+
+for x in ${DIR/}rdf-test-*.n3
+do
+    B="$(basename $x .n3)"
+    N="${B#rdf-test-}"
+    R="${DIR}rdf-result-$N.nt"
+    echo "<$x>    <$R> ."
+    done

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-parser-tests
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-parser-tests?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-parser-tests (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-parser-tests Sun Dec 15 11:40:13 2013
@@ -0,0 +1,19 @@
+## From the W3C SWAP test suite and other places
+## Parse - no production of RDF
+## Some of the W3C tests are about the logic after parsing
+## so these test are not always actually testing anything new in jena.n3
+
+<a1.n3>			<> .
+<contexts.n3>		<> .
+<lists-simple.n3>	<> .
+<lstring.n3>		<> .
+<path1.n3>		<> .
+<path2.n3>		<> .
+<quantifiers.n3>	<> .
+<qvars1.n3>		<> .
+<qvars2.n3>		<> .
+<resolves-rdf.n3>	<> .
+<sep-term.n3>		<> .
+<sib.n3>		<> .
+<strquot.n3>		<> .
+<t10.n3>		<> .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-reader-tests
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-reader-tests?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-reader-tests (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-reader-tests Sun Dec 15 11:40:13 2013
@@ -0,0 +1,38 @@
+# Tests for the N3 parser/Jena reader
+
+<rdf-test-01.n3>    <rdf-result-01.nt> .
+<rdf-test-02.n3>    <rdf-result-02.nt> .
+<rdf-test-03.n3>    <rdf-result-03.nt> .
+<rdf-test-04.n3>    <rdf-result-04.nt> .
+<rdf-test-05.n3>    <rdf-result-05.nt> .
+<rdf-test-06.n3>    <rdf-result-06.nt> .
+<rdf-test-07.n3>    <rdf-result-07.nt> .
+<rdf-test-08.n3>    <rdf-result-08.nt> .
+<rdf-test-09.n3>    <rdf-result-09.nt> .
+<rdf-test-10.n3>    <rdf-result-10.nt> .
+
+<rdf-test-11.n3>    <rdf-result-11.nt> .
+<rdf-test-12.n3>    <rdf-result-12.nt> .
+<rdf-test-13.n3>    <rdf-result-13.nt> .
+<rdf-test-14.n3>    <rdf-result-14.nt> .
+<rdf-test-15.n3>    <rdf-result-15.nt> .
+<rdf-test-16.n3>    <rdf-result-16.nt> .
+<rdf-test-17.n3>    <rdf-result-17.nt> .
+<rdf-test-18.n3>    <rdf-result-18.nt> .
+<rdf-test-19.n3>    <rdf-result-19.nt> .
+<rdf-test-20.n3>    <rdf-result-20.nt> .
+
+<rdf-test-21.n3>    <rdf-result-21.nt> .
+<rdf-test-22.n3>    <rdf-result-22.nt> .
+<rdf-test-23.n3>    <rdf-result-23.nt> .
+<rdf-test-24.n3>    <rdf-result-24.nt> .
+<rdf-test-25.n3>    <rdf-result-25.nt> .
+
+<rdf-test-26.n3>    <rdf-result-26.nt> .
+
+<rdf-test-27.n3>    <rdf-result-27.nt> .
+<rdf-test-28.n3>    <rdf-result-28.nt> .
+
+## ?? Need a test with \u escapes in a qname.
+## Currently does not work. Parser doesn't check for \u escapes in URIs.
+

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-01.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-01.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-01.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-01.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,3 @@
+@prefix a: <http://foo/a#> .
+@prefix : <> .
+# Empty model.

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-02.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-02.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-02.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-02.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,13 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "String tests".
+
+a:b a:p01 "123".
+a:b a:p02 "123-\"-\'-quote".
+a:b a:p03 '123-\"-\'-quote'.
+
+a:b a:p10 """Triple double-quoted string with single quotes (" ') and newline
+in it""".
+a:b a:p11 '''Triple single-quoted string with single quotes (" ') and newline 
+in it'''.

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-03.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-03.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-03.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-03.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,7 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "Compound statements, same resource" .
+
+a:b a:p1 "123" ; a:p1 "456" .
+a:b a:p2 a:v1 ; a:p3 a:v2 .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-04.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-04.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-04.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-04.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,8 @@
+@prefix a: <http://foo/a#> .
+@prefix b: <http://foo/b#> .
+@prefix : <#> .
+
+:test :comment "Multiple values" .
+
+a:b a:p1 "123" ; a:p1 "456" .
+b:b a:p2 a:v1 ; a:p3 a:v2 .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-05.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-05.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-05.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-05.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,6 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "BNode" .
+
+[ a:p a:v ] .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-06.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-06.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-06.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-06.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,6 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "BNode as single object" .
+
+a:b a:oneRef [ a:pp "1" ; a:qq "2" ].

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-07.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-07.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-07.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-07.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,9 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "BNode but shared" .
+
+a:b1 a:twoRef _:a .
+a:b2 a:twoRef _:a .
+
+_:a :- [ a:pp "1" ; a:qq "2" ].

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-08.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-08.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-08.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-08.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,9 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "Not a bnode" .
+
+a:b1 a:twoRef <http://host/> .
+a:b2 a:twoRef <http://host/> .
+
+<http://host/> :- [ a:pp "1" ; a:qq "2" ].

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-09.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-09.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-09.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-09.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,8 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "Not a bnode.  Ref once." .
+
+a:b1 a:oneRef <http://host/> .
+
+<http://host/> :- [ a:pp "1" ; a:qq "2" ].

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-10.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-10.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-10.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-10.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,10 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "Syntactic keywords".
+
+_:a => a:something .
+
+a:b a <http://www.w3.org/2000/01/rdf-schema#resource> .
+
+a:this = a:that .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-11.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-11.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-11.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-11.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,8 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "RDF collections as lists: unattached lists" .
+
+("1" "2" "3").
+# This is not a statement.
+().

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-12.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-12.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-12.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-12.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,9 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "RDF collections as lists".
+
+a:list3 a:p ("1" "2" "3").
+
+a:list0 a:p ().
+

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-13.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-13.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-13.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-13.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,8 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "RDF collections as lists" .
+
+a:list0 a:p ().
+
+_:list0 a:p ().

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-14.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-14.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-14.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-14.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,6 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "RDF collections as lists: nil list with property".
+
+() a:prop "nilProp" .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-15.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-15.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-15.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-15.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,24 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "RDF collections as lists : but with attached property so not well-formed lists" .
+
+# This is the list ("1" "2" "3" "4")
+
+_:a1 rdf:first "1" .
+_:a1 rdf:rest  _:a2 .
+
+_:a2 rdf:first "2" .
+_:a2 rdf:rest  _:a3 .
+
+_:a3 rdf:first "3" .
+_:a3 rdf:rest  _:a4 .
+
+_:a4 rdf:first "4" .
+_:a4 rdf:rest rdf:nil .
+
+# This adds a property to the middle element.
+# Tail ("3" "4") should be pretty printed.
+
+_:a2 a:prop "value" .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-16.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-16.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-16.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-16.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,10 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "RDF collections as lists : with compound items".
+a:a a:p ( [ a:p2 "v1" ] 
+	  <http://resource1>
+	  <http://resource2>
+	  ("inner list") ) .
+	
+<http://resource1> a:p "value" .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-17.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-17.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-17.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-17.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,20 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+:test :comment "Complex DAML List: duplicate properties".
+
+# This is the list ("1" "2" "3").
+
+_:a1 rdf:first "1" .
+_:a1 rdf:rest  _:a2 .
+
+_:a2 rdf:first "2" .
+_:a2 rdf:rest  _:a3 .
+
+_:a3 rdf:first "3" .
+_:a3 rdf:rest () .
+
+# This adds a property to the middle element.
+# Could pretty print the tail ("3")
+
+_:a2 rdf:first "TWO" .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-18.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-18.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-18.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-18.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,6 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "Nested bNodes" .
+
+a:a a:p [ a:p2 [ a:p3 "v1" , "v2" ; a:p4 "v3" ] ; a:p5 "v4" ] .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-19.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-19.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-19.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-19.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,10 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "Shared RDF collections as lists" .
+
+:a :p _:list .
+:b :p _:list .
+
+_:list :- ("1" "2") .
+

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-20.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-20.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-20.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-20.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,13 @@
+@prefix a: <http://foo/a#> .
+@prefix : <#> .
+
+:test :comment "Shared RDF lists tails" .
+
+:a :p :list .
+:b :p :list .
+
+:list :- ("1" "2") .
+
+("a" "b") .
+
+:list2 :- ("3" "4") .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-21.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-21.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-21.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-21.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,7 @@
+# Test names with .'s in potential qnames.
+
+@prefix foo:    <http://example.org/foo#> .
+@prefix : <#> .
+
+<http://example.org/foo#local.name>
+    <http://example.org/foo#p.local.name> :localname .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-22.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-22.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-22.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-22.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,10 @@
+# Test datatypes.
+
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+@prefix x: <http://host/ns#> .
+@prefix : <#> .
+
+[ :prop1 "123" ;
+  :prop1 "123"^^xsd:string ;
+  :prop1 "123"^^xsd:integer ;
+] .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-23.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-23.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-23.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-23.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,8 @@
+# Test lang tags
+
+@prefix : <#> .
+
+[ :prop "chat"@fr ;
+  :prop "chat"@en ;
+  :prop "chat" ;
+] .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-24.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-24.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-24.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-24.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,8 @@
+# XML literals
+
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix x: <http://host/ns#> .
+
+[ x:p1 "<foo>bar</foo>"^^rdf:XMLLiteral ;
+  x:p2 "<foo>bar</foo>" ;
+] .

Added: jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-25.n3
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-25.n3?rev=1551016&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-25.n3 (added)
+++ jena/Experimental/new-test/src/test/resources/com/hp/hpl/jena/n3/n3-writer-test-25.n3 Sun Dec 15 11:40:13 2013
@@ -0,0 +1,11 @@
+# Datatypes and language tags
+
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix x: <http://host/ns#> .
+
+[ x:p1 "<foo>bar</foo>"@en-us^^rdf:XMLLiteral ;
+	# Two below are same statement
+  x:p2 "<foo>bar</foo>"^^rdf:XMLLiteral@en-us ;
+  x:p2 "<foo>bar</foo>"@en-us^^rdf:XMLLiteral ;
+  x:p3 "text"@en ;
+] .