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/10/15 22:15:25 UTC

svn commit: r1532512 - in /jena/Experimental/new-test/src/test/java/com/hp/hpl/jena: rdf/model/ rdf/model/temp/ util/iterator/

Author: claude
Date: Tue Oct 15 20:15:24 2013
New Revision: 1532512

URL: http://svn.apache.org/r1532512
Log:
Updated tests

Added:
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ModelExtractTest.java
      - copied, changed from r1530718, jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractModelExtractTest.java
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/util/iterator/WrappedIteratorTest.java
      - copied, changed from r1531665, jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/temp/IteratorTest.java
Removed:
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractIteratorTest.java
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractModelExtractTest.java
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractReifiedStatementsTest.java
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/temp/IteratorTest.java
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/temp/ModelExtractTest.java
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/temp/ModelListObjectTest.java
Modified:
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractModelContractSuite.java
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/LiteralContractTest.java
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ModelContractTests.java
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ResourceContractTests.java
    jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/util/iterator/ExtendedIteratorContractTests.java

Modified: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractModelContractSuite.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractModelContractSuite.java?rev=1532512&r1=1532511&r2=1532512&view=diff
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractModelContractSuite.java (original)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractModelContractSuite.java Tue Oct 15 20:15:24 2013
@@ -3,8 +3,10 @@ package com.hp.hpl.jena.rdf.model;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Set;
 import java.util.StringTokenizer;
 
+import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 import org.xenei.junit.contract.Contract;
@@ -12,7 +14,11 @@ import org.xenei.junit.contract.Contract
 import org.xenei.junit.contract.ContractSuite;
 import org.xenei.junit.contract.Contract.Inject;
 
+import static com.hp.hpl.jena.testing_framework.GraphHelper.arrayToSet;
 import static com.hp.hpl.jena.testing_framework.ModelHelper.*;
+import static org.junit.Assert.assertEquals;
+
+import com.hp.hpl.jena.shared.PrefixMapping;
 import com.hp.hpl.jena.testing_framework.IContainerProducer;
 import com.hp.hpl.jena.testing_framework.AbstractModelProducer;
 import com.hp.hpl.jena.testing_framework.INodeProducer;
@@ -29,7 +35,10 @@ import com.hp.hpl.jena.vocabulary.RDF;
 		// AbstractModelContractSuite.RDFNodeTests.class,
 		AbstractModelContractSuite.ResourceTests.class,
 		AbstractModelContractSuite.StatementTests.class,
-		AbstractModelContractSuite.StatementIterTests.class})
+		AbstractModelContractSuite.StatementIterTests.class,
+		AbstractModelContractSuite.NodeIterTests.class,
+		AbstractModelContractSuite.NameSpaceIteratorTests.class,
+		AbstractModelContractSuite.ReifiedStatementIteratorTests.class})
 // @RunWith( ContractSuite.class )
 public abstract class AbstractModelContractSuite {
 
@@ -40,16 +49,6 @@ public abstract class AbstractModelContr
 		AbstractModelContractSuite.modelProducer = modelProducer;
 	}
 
-	// static protected NodeProducerInterface nodeProducer = new
-	// NodeProducerInterface()
-	// {
-	//
-	// @Override
-	// public RDFNode newRDFNode() {
-	// return modelProducer.newModel().createResource();
-	// }
-	// };
-
 	@RunWith(ContractSuite.class)
 	@ContractImpl(Model.class)
 	public static class ModelContractTests {
@@ -61,45 +60,6 @@ public abstract class AbstractModelContr
 
 	}
 
-	// public static class ModelGraphInterfaceContractTests extends
-	// AbstractModelGraphInterfaceContractTests {
-	//
-	// ModelGraphInterface modelGraphInterface = null;
-	//
-	// @Override
-	// protected ModelGraphInterface getModelGraphInterface() {
-	// if (modelGraphInterface == null)
-	// {
-	// modelGraphInterface = modelProducer.newModel();
-	// }
-	// return modelGraphInterface;
-	// }
-	//
-	// @After
-	// public final void afterModelGraphInterfaceContractTests() {
-	// modelGraphInterface = null;
-	// modelProducer.closeModels();
-	// }
-	//
-	//
-	// }
-	//
-	// public static class PrefixMappingContractTests extends
-	// AbstractPrefixMappingTest {
-	//
-	// @Override
-	// protected PrefixMapping getMapping() {
-	// return modelProducer.newModel();
-	// }
-	//
-	// @After
-	// public final void afterPrefixMappingContractTests() {
-	//
-	// modelProducer.closeModels();
-	// }
-	//
-	// }
-	//
 	public interface A extends Alt {
 	}
 
@@ -399,6 +359,11 @@ public abstract class AbstractModelContr
 			public boolean supportsDelete() {
 				return true;
 			}
+			
+			@Override
+			public boolean isCopy() {
+				return false;
+			}
 
 		};
 
@@ -408,4 +373,202 @@ public abstract class AbstractModelContr
 		}
 
 	}
+	
+	public interface NodeIter extends NodeIterator {
+	}
+
+	@RunWith(ContractSuite.class)
+	@ContractImpl(NodeIter.class)
+	public static class NodeIterTests {
+		IteratorProducer<RDFNode> producer = new IteratorProducer<RDFNode>() {
+			
+			Model m = null;
+			
+			RDFNode[] objs = { rdfNode("p" ), rdfNode( "p2" ), 
+					rdfNode("p3"), rdfNode("o3"),
+					rdfNode("o4" ) };
+			
+			public List<RDFNode> getList() {
+				return Arrays.asList( objs );
+			}
+
+			@Override
+			public NodeIterator newInstance() {
+				return getModel().listObjects();
+			}
+			
+			private Model getModel() {
+				if (m == null)
+				{
+					m = modelProducer.newInstance();
+					Resource s = resource( "s" );
+					Property p = property("p");
+					for (RDFNode o : objs )
+					{
+						m.add( s, p, o );
+					}
+				}
+				return m;
+			}
+
+			@Override
+			public void cleanUp() {
+			}
+			
+			@Override
+			public boolean supportsDelete() {
+				return false;
+			}
+			
+			@Override
+			public boolean isCopy() {
+				return false;
+			}
+
+		};
+
+		@Inject("com.hp.hpl.jena.util.iterator.ExtendedIteratorContractTests.IteratorProducer<%s>")
+		public IteratorProducer<RDFNode> getIteratorProducer() {
+			return producer;
+		}
+
+	}
+	
+	public interface NSIter extends NsIterator {
+	}
+	
+	@RunWith(ContractSuite.class)
+	@ContractImpl(NSIter.class)
+	public static class NameSpaceIteratorTests {
+		IteratorProducer<String> producer = new IteratorProducer<String>() {
+			
+			Model m = null;
+			
+			String[] uris = { "http://example.com/one/",  
+					"http://example.com/two/", 
+					"http://example.com/three/", 
+					"http://example.com/four/", 
+					"http://example.com/five/",
+					RDF.type.getNameSpace()};
+			
+			public List<String> getList() {
+				return Arrays.asList( uris );
+			}
+
+			@Override
+			public NsIterator newInstance() {
+				return getModel().listNameSpaces();
+			}
+			
+			private Model getModel() {
+				if (m == null)
+				{
+					m = modelProducer.newInstance();
+					m.setNsPrefix("one", uris[0]);
+					Resource s = m.createResource( "http://example.com/res/s" );
+					Property p = m.createProperty( uris[0], "uno");
+					RDFNode o = m.createLiteral( "first");
+					m.add(s,p,o);
+					p = m.createProperty( uris[1], "dos");
+					o = m.createLiteral( "second");
+					m.add(s,p,o);
+					p = m.createProperty( uris[2], "tres");
+					o = m.createLiteral( "third");
+					m.add(s,p,o);
+					p = m.createProperty( uris[3], "quatro");
+					o = m.createLiteral( "fourth");
+					m.add(s,p,o);
+					p = RDF.type;
+					o = m.createResource( uris[4]+"cinco");
+					m.add(s,p,o);
+				}
+				return m;
+			}
+
+			@Override
+			public void cleanUp() {
+				if (m!= null)
+				{
+					m.close();
+					m = null;
+				}
+			}
+			
+			@Override
+			public boolean supportsDelete() {
+				return true;
+			}
+			
+			@Override
+			public boolean isCopy() {
+				return true;
+			}
+
+		};
+
+		@Inject("com.hp.hpl.jena.util.iterator.ExtendedIteratorContractTests.IteratorProducer<%s>")
+		public IteratorProducer<String> getIteratorProducer() {
+			return producer;
+		}
+
+	}
+	
+	public interface ReifiedIterator extends RSIterator{}
+	@RunWith(ContractSuite.class)
+	@ContractImpl(ReifiedIterator.class)
+	public static class ReifiedStatementIteratorTests {
+		IteratorProducer<ReifiedStatement> producer = new IteratorProducer<ReifiedStatement>() {
+			
+			Model m = null;
+			List<ReifiedStatement> stmts;
+		
+			
+			public List<ReifiedStatement> getList() {
+				return stmts;
+			}
+
+			@Override
+			public RSIterator newInstance() {
+				return getModel().listReifiedStatements();
+			}
+			
+			private Model getModel() {
+				if (m == null)
+				{
+					m = modelProducer.newInstance();
+					stmts.add( m.createReifiedStatement( statement( "P S O" ) ));
+					stmts.add( m.createReifiedStatement( statement( "P S O2" ) ));
+					stmts.add( m.createReifiedStatement( statement( "P S2 O" ) ));
+					stmts.add( m.createReifiedStatement( statement( "P2 S O" ) ));
+				}
+				return m;
+			}
+
+			@Override
+			public void cleanUp() {
+				if (m!= null)
+				{
+					m.close();
+					m = null;
+				}
+			}
+			
+			@Override
+			public boolean supportsDelete() {
+				return true;
+			}
+			
+			@Override
+			public boolean isCopy() {
+				return true;
+			}
+
+		};
+
+		@Inject("com.hp.hpl.jena.util.iterator.ExtendedIteratorContractTests.IteratorProducer<%s>")
+		public IteratorProducer<ReifiedStatement> getIteratorProducer() {
+			return producer;
+		}
+
+	}
 }

Modified: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/LiteralContractTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/LiteralContractTest.java?rev=1532512&r1=1532511&r2=1532512&view=diff
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/LiteralContractTest.java (original)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/LiteralContractTest.java Tue Oct 15 20:15:24 2013
@@ -63,7 +63,7 @@ public abstract class LiteralContractTes
 		Literal newInstance(long l);
 
 		Literal newInstance(String val, String lang);
-		
+
 		Literal newInstance(Object o);
 
 	}
@@ -269,9 +269,7 @@ public abstract class LiteralContractTes
 		try {
 			lp.newInstance(i).getBoolean();
 			fail("Should have thrown DatatypeFormatException");
-		}
-		catch (DatatypeFormatException expected)
-		{
+		} catch (DatatypeFormatException expected) {
 			// expected
 		}
 	}
@@ -294,9 +292,7 @@ public abstract class LiteralContractTes
 		try {
 			lp.newInstance(f).getBoolean();
 			fail("Should have thrown DatatypeFormatException");
-		}
-		catch (DatatypeFormatException expected)
-		{
+		} catch (DatatypeFormatException expected) {
 			// expected
 		}
 	}
@@ -306,12 +302,11 @@ public abstract class LiteralContractTes
 		double d = 1;
 		try {
 			lp.newInstance(d).getBoolean();
-			fail( "Should have thrown DatatypeFormatException");
-		}
-		catch (DatatypeFormatException expected)
-		{
+			fail("Should have thrown DatatypeFormatException");
+		} catch (DatatypeFormatException expected) {
 			// expected
-		}	}
+		}
+	}
 
 	@Test
 	public void testGetBoolean_string() {
@@ -324,18 +319,14 @@ public abstract class LiteralContractTes
 		try {
 			lp.newInstance(s, l).getBoolean();
 			fail("Should have thrown BadBooleanException");
-		}
-		catch (BadBooleanException expected)
-		{
+		} catch (BadBooleanException expected) {
 			// expected
 		}
 		s = "0";
 		try {
 			lp.newInstance(s, l).getBoolean();
 			fail("Should have thrown BadBooleanException");
-		}
-		catch (BadBooleanException expected)
-		{
+		} catch (BadBooleanException expected) {
 			// expected
 		}
 	}
@@ -356,10 +347,8 @@ public abstract class LiteralContractTes
 		byte b = 1;
 		try {
 			lp.newInstance(true).getByte();
-			fail( "Should have thrown DatatypeFormatException");
-		}
-		catch (DatatypeFormatException expected)
-		{
+			fail("Should have thrown DatatypeFormatException");
+		} catch (DatatypeFormatException expected) {
 			// expected
 		}
 	}
@@ -457,7 +446,7 @@ public abstract class LiteralContractTes
 		}
 
 		f = 1.5f; // non integer value
-		assertEquals( 1, lp.newInstance(f).getByte());
+		assertEquals(1, lp.newInstance(f).getByte());
 	}
 
 	@Test
@@ -546,9 +535,7 @@ public abstract class LiteralContractTes
 		try {
 			lp.newInstance(true).getChar();
 			fail("Should have thrown DatatypeFormatException");
-		}
-		catch (DatatypeFormatException expected)
-		{
+		} catch (DatatypeFormatException expected) {
 			// expected
 		}
 	}
@@ -594,10 +581,8 @@ public abstract class LiteralContractTes
 		double d = 1;
 		try {
 			lp.newInstance(d).getChar();
-			fail( "Should have thrown DatatypeFormatException");
-		}
-		catch (DatatypeFormatException expected)
-		{
+			fail("Should have thrown DatatypeFormatException");
+		} catch (DatatypeFormatException expected) {
 			// expected
 		}
 	}
@@ -608,34 +593,30 @@ public abstract class LiteralContractTes
 		String l = "en";
 		try {
 			assertEquals(s, lp.newInstance(s, l).getChar());
-			fail( "Should have thrown BadCharLiteralException");
-		}
-		catch (BadCharLiteralException expected)
-		{	
+			fail("Should have thrown BadCharLiteralException");
+		} catch (BadCharLiteralException expected) {
 			// expected
 		}
 		s = "1";
 		char c = '1';
 		assertEquals(c, lp.newInstance(s, l).getChar());
-		
-		s = Character.toString( Character.MAX_VALUE );
+
+		s = Character.toString(Character.MAX_VALUE);
 		assertEquals(Character.MAX_VALUE, lp.newInstance(s, l).getChar());
-		
+
 		s += "0";
 		try {
 			lp.newInstance(s, l).getChar();
-		}
-		catch (BadCharLiteralException expected) {
+		} catch (BadCharLiteralException expected) {
 			// expected
 		}
-		s = Character.toString( Character.MIN_VALUE );
+		s = Character.toString(Character.MIN_VALUE);
 		assertEquals(Character.MIN_VALUE, lp.newInstance(s, l).getChar());
-		
+
 		s += "0";
 		try {
 			lp.newInstance(s, l).getChar();
-		}
-		catch (BadCharLiteralException expected) {
+		} catch (BadCharLiteralException expected) {
 			// expected
 		}
 	}
@@ -662,11 +643,11 @@ public abstract class LiteralContractTes
 		// byte
 		byte b = 1;
 		assertEquals(XSDDatatype.XSDint, lp.newInstance(b).getDatatype());
-		
+
 		// short
 		short s = 1;
-		assertEquals(XSDDatatype.XSDint, lp.newInstance(s).getDatatype());		
-		
+		assertEquals(XSDDatatype.XSDint, lp.newInstance(s).getDatatype());
+
 		// int
 		int i = 1;
 		assertEquals(XSDDatatype.XSDint, lp.newInstance(i).getDatatype());
@@ -695,12 +676,11 @@ public abstract class LiteralContractTes
 	public void testGetDatatype_string() {
 		char c = 0x1;
 		assertEquals(XSDDatatype.XSDstring, lp.newInstance(c).getDatatype());
-		
+
 		String s = "true";
 		String l = "en";
 		assertNull(lp.newInstance(s, l).getDatatype());
-		
-		
+
 	}
 
 	@Test
@@ -717,16 +697,6 @@ public abstract class LiteralContractTes
 		byte b = 1;
 		assertEquals(XSDDatatype.XSDint.getURI(), lp.newInstance(b)
 				.getDatatypeURI());
-		
-		// short
-		short s = 1;
-		assertEquals(XSDDatatype.XSDint.getURI(), lp.newInstance(s)
-						.getDatatypeURI());
-		
-		// int
-		int i = 1;
-		assertEquals(XSDDatatype.XSDint.getURI(), lp.newInstance(i)
-				.getDatatypeURI());
 	}
 
 	@Test
@@ -735,15 +705,6 @@ public abstract class LiteralContractTes
 		long l = 1;
 		assertEquals(XSDDatatype.XSDlong.getURI(), lp.newInstance(l)
 				.getDatatypeURI());
-		l = 0;
-		assertEquals(XSDDatatype.XSDlong.getURI(), lp.newInstance(l)
-				.getDatatypeURI());
-		l = 0x7fffffff; // bit pattern ends in 1
-		assertEquals(XSDDatatype.XSDlong.getURI(), lp.newInstance(l)
-				.getDatatypeURI());
-		l = 0x7ffffffe; // bit pattern ends in 0
-		assertEquals(XSDDatatype.XSDlong.getURI(), lp.newInstance(l)
-				.getDatatypeURI());
 	}
 
 	@Test
@@ -751,15 +712,6 @@ public abstract class LiteralContractTes
 		float f = 1;
 		assertEquals(XSDDatatype.XSDfloat.getURI(), lp.newInstance(f)
 				.getDatatypeURI());
-		f = 0;
-		assertEquals(XSDDatatype.XSDfloat.getURI(), lp.newInstance(f)
-				.getDatatypeURI());
-		f = 7; // bit pattern ends in 1
-		assertEquals(XSDDatatype.XSDfloat.getURI(), lp.newInstance(f)
-				.getDatatypeURI());
-		f = 6; // bit pattern ends in 0
-		assertEquals(XSDDatatype.XSDfloat.getURI(), lp.newInstance(f)
-				.getDatatypeURI());
 	}
 
 	@Test
@@ -767,15 +719,6 @@ public abstract class LiteralContractTes
 		double d = 1;
 		assertEquals(XSDDatatype.XSDdouble.getURI(), lp.newInstance(d)
 				.getDatatypeURI());
-		d = 0;
-		assertEquals(XSDDatatype.XSDdouble.getURI(), lp.newInstance(d)
-				.getDatatypeURI());
-		d = 7; // bit pattern ends in 1
-		assertEquals(XSDDatatype.XSDdouble.getURI(), lp.newInstance(d)
-				.getDatatypeURI());
-		d = 6; // bit pattern ends in 0
-		assertEquals(XSDDatatype.XSDdouble.getURI(), lp.newInstance(d)
-				.getDatatypeURI());
 	}
 
 	@Test
@@ -790,30 +733,18 @@ public abstract class LiteralContractTes
 		char c = 0x1;
 		assertEquals(XSDDatatype.XSDstring.getURI(), lp.newInstance(c)
 				.getDatatypeURI());
-		c = 0x0;
-		assertEquals(XSDDatatype.XSDstring.getURI(), lp.newInstance(c)
-				.getDatatypeURI());
-		c = '1';
-		assertEquals(XSDDatatype.XSDstring.getURI(), lp.newInstance(c)
-				.getDatatypeURI());
-		c = '0';
-		assertEquals(XSDDatatype.XSDstring.getURI(), lp.newInstance(c)
-				.getDatatypeURI());
 	}
 
 	@Test
 	public void testGetInt_boolean() {
 		try {
 			lp.newInstance(true).getInt();
-			fail( "Should have thrown DatatypeFormatException");
-		}
-		catch (DatatypeFormatException expected)
-		{
+			fail("Should have thrown DatatypeFormatException");
+		} catch (DatatypeFormatException expected) {
 			// expected
 		}
 	}
 
-
 	@Test
 	public void testGetInt_int() {
 		// int
@@ -821,22 +752,22 @@ public abstract class LiteralContractTes
 		assertEquals(i, lp.newInstance(i).getInt());
 		i = 0;
 		assertEquals(i, lp.newInstance(i).getInt());
-		i = Byte.MAX_VALUE; 
+		i = Byte.MAX_VALUE;
 		assertEquals(i, lp.newInstance(Byte.MAX_VALUE).getInt());
-		
-		i = Byte.MIN_VALUE; 
+
+		i = Byte.MIN_VALUE;
 		assertEquals(i, lp.newInstance(Byte.MIN_VALUE).getInt());
-		
-		i = Short.MAX_VALUE; 
+
+		i = Short.MAX_VALUE;
 		assertEquals(i, lp.newInstance(Short.MAX_VALUE).getInt());
-		
-		i = Short.MIN_VALUE; 
+
+		i = Short.MIN_VALUE;
 		assertEquals(i, lp.newInstance(Short.MIN_VALUE).getInt());
-		
-		i = Integer.MAX_VALUE; 
+
+		i = Integer.MAX_VALUE;
 		assertEquals(i, lp.newInstance(Integer.MAX_VALUE).getInt());
-		
-		i = Integer.MIN_VALUE; 
+
+		i = Integer.MIN_VALUE;
 		assertEquals(i, lp.newInstance(Integer.MIN_VALUE).getInt());
 	}
 
@@ -847,20 +778,18 @@ public abstract class LiteralContractTes
 		assertEquals(1, lp.newInstance(l).getInt());
 		l = 0;
 		assertEquals(0, lp.newInstance(l).getInt());
-		
+
 		try {
 			lp.newInstance(Long.MAX_VALUE).getInt();
-			fail( "Should have thrown IllegalArgumentException");
-		}
-		catch (IllegalArgumentException expected) {
+			fail("Should have thrown IllegalArgumentException");
+		} catch (IllegalArgumentException expected) {
 			// expected
 		}
-		
+
 		try {
 			lp.newInstance(Long.MIN_VALUE).getInt();
-			fail( "Should have thrown IllegalArgumentException");
-		}
-		catch (IllegalArgumentException expected) {
+			fail("Should have thrown IllegalArgumentException");
+		} catch (IllegalArgumentException expected) {
 			// expected
 		}
 	}
@@ -874,14 +803,13 @@ public abstract class LiteralContractTes
 		i = 0;
 		assertEquals(i, lp.newInstance(f).getInt());
 		f = Integer.MAX_VALUE;
-		// this will fail because Float(MAX_INT) = 2.14748365E9 and MAX_INT=2147483647 
-		// so when converting back the float version becomes 2147483650 
+		// this will fail because Float(MAX_INT) = 2.14748365E9 and
+		// MAX_INT=2147483647
+		// so when converting back the float version becomes 2147483650
 		try {
 			lp.newInstance(f).getInt();
-			fail( "Should have thrown IllegalArgumentException");
-		}
-		catch (IllegalArgumentException expected)
-		{
+			fail("Should have thrown IllegalArgumentException");
+		} catch (IllegalArgumentException expected) {
 			// expected
 		}
 
@@ -897,10 +825,10 @@ public abstract class LiteralContractTes
 		}
 
 		f = Float.MIN_VALUE; // just above 0
-		assertEquals( 0, lp.newInstance(f).getInt());
-		
+		assertEquals(0, lp.newInstance(f).getInt());
+
 		f = 1.7f; // truncates non integer value in range
-		assertEquals( 1, lp.newInstance(f).getInt());
+		assertEquals(1, lp.newInstance(f).getInt());
 
 	}
 
@@ -912,30 +840,28 @@ public abstract class LiteralContractTes
 		d = 1.0;
 		i = 1;
 		assertEquals(i, lp.newInstance(d).getInt());
-		d = Integer.MAX_VALUE*1.0;
+		d = Integer.MAX_VALUE * 1.0;
 		assertEquals(Integer.MAX_VALUE, lp.newInstance(d).getInt());
-		
-		d = Integer.MAX_VALUE+1.0;
+
+		d = Integer.MAX_VALUE + 1.0;
 		try {
 			lp.newInstance(d).getInt();
-			fail( "Should have thrown IllegalArgumentException");
-		}
-		catch (IllegalArgumentException expected ) {
+			fail("Should have thrown IllegalArgumentException");
+		} catch (IllegalArgumentException expected) {
 			// expected
 		}
-		
-		d = Integer.MAX_VALUE*1.0;
+
+		d = Integer.MAX_VALUE * 1.0;
 		assertEquals(Integer.MAX_VALUE, lp.newInstance(d).getInt());
-		
-		d = Integer.MIN_VALUE-1.0;
+
+		d = Integer.MIN_VALUE - 1.0;
 		try {
 			lp.newInstance(d).getInt();
-			fail( "Should have thrown IllegalArgumentException");
-		}
-		catch (IllegalArgumentException expected ) {
+			fail("Should have thrown IllegalArgumentException");
+		} catch (IllegalArgumentException expected) {
 			// expected
 		}
-		
+
 		d = 1.7d; // truncates values in range
 		assertEquals(1, lp.newInstance(d).getInt());
 	}
@@ -964,9 +890,7 @@ public abstract class LiteralContractTes
 		try {
 			lp.newInstance(s, l).getInt();
 			fail("Should have thrown NumberFormatException");
-		}
-		catch (NumberFormatException expected)
-		{
+		} catch (NumberFormatException expected) {
 			// expected
 		}
 
@@ -977,9 +901,7 @@ public abstract class LiteralContractTes
 		try {
 			lp.newInstance(s, l).getInt();
 			fail("Should have thrown NumberFormatException");
-		}
-		catch (NumberFormatException expected)
-		{
+		} catch (NumberFormatException expected) {
 			// expected
 		}
 	}
@@ -989,10 +911,8 @@ public abstract class LiteralContractTes
 		char c = 0x1;
 		try {
 			lp.newInstance(c).getInt();
-			fail( "Should have thrown DatatypeFormatException");
-		}
-		catch (DatatypeFormatException expected)
-		{
+			fail("Should have thrown DatatypeFormatException");
+		} catch (DatatypeFormatException expected) {
 			// expected
 		}
 	}
@@ -1007,41 +927,40 @@ public abstract class LiteralContractTes
 		}
 	}
 
-	
 	@Test
 	public void testGetFloat_int() {
 		// int
 		int i = 0;
 		float f = 0.0f;
 		float delta = 0.0f;
-		assertEquals(f, lp.newInstance(i).getFloat(),delta);
+		assertEquals(f, lp.newInstance(i).getFloat(), delta);
 		i = 1;
 		f = 1.0f;
-		assertEquals(f, lp.newInstance(i).getFloat(),delta);
-		
+		assertEquals(f, lp.newInstance(i).getFloat(), delta);
+
 		i = Byte.MAX_VALUE;
-		f = i*1.0f;
-		assertEquals(f, lp.newInstance(i).getFloat(),delta);
-		
+		f = i * 1.0f;
+		assertEquals(f, lp.newInstance(i).getFloat(), delta);
+
 		i = Byte.MIN_VALUE;
-		f = i*1.0f;
-		assertEquals(f, lp.newInstance(i).getFloat(),delta);
-		
+		f = i * 1.0f;
+		assertEquals(f, lp.newInstance(i).getFloat(), delta);
+
 		i = Short.MAX_VALUE;
-		f = i*1.0f;
-		assertEquals(f, lp.newInstance(i).getFloat(),delta);
-		
+		f = i * 1.0f;
+		assertEquals(f, lp.newInstance(i).getFloat(), delta);
+
 		i = Short.MIN_VALUE;
-		f = i*1.0f;
-		assertEquals(f, lp.newInstance(i).getFloat(),delta);
-		
+		f = i * 1.0f;
+		assertEquals(f, lp.newInstance(i).getFloat(), delta);
+
 		i = Integer.MAX_VALUE;
-		f = i*1.0f;
-		assertEquals(f, lp.newInstance(i).getFloat(),delta);
-		
+		f = i * 1.0f;
+		assertEquals(f, lp.newInstance(i).getFloat(), delta);
+
 		i = Integer.MIN_VALUE;
-		f = i*1.0f;
-		assertEquals(f, lp.newInstance(i).getFloat(),delta);
+		f = i * 1.0f;
+		assertEquals(f, lp.newInstance(i).getFloat(), delta);
 	}
 
 	@Test
@@ -1055,10 +974,10 @@ public abstract class LiteralContractTes
 		f = 1.0f;
 		assertEquals(f, lp.newInstance(l).getFloat(), delta);
 		l = Long.MAX_VALUE;
-		f = l*1.0f;
+		f = l * 1.0f;
 		assertEquals(f, lp.newInstance(l).getFloat(), delta);
 		l = Long.MIN_VALUE;
-		f = l*1.0f;
+		f = l * 1.0f;
 		assertEquals(f, lp.newInstance(l).getFloat(), delta);
 	}
 
@@ -1073,9 +992,9 @@ public abstract class LiteralContractTes
 		assertEquals(f, lp.newInstance(f).getFloat(), delta);
 		f = Float.MIN_VALUE;
 		assertEquals(f, lp.newInstance(f).getFloat(), delta);
-		f = Float.MAX_VALUE*-1.0f;
+		f = Float.MAX_VALUE * -1.0f;
 		assertEquals(f, lp.newInstance(f).getFloat(), delta);
-		f = Float.MIN_VALUE*-1.0f;
+		f = Float.MIN_VALUE * -1.0f;
 		assertEquals(f, lp.newInstance(f).getFloat(), delta);
 	}
 
@@ -1092,15 +1011,17 @@ public abstract class LiteralContractTes
 		assertEquals(Float.MAX_VALUE, lp.newInstance(d).getFloat(), delta);
 		d = Float.MIN_VALUE;
 		assertEquals(Float.MIN_VALUE, lp.newInstance(d).getFloat(), delta);
-		
-		assertEquals( Float.POSITIVE_INFINITY, lp.newInstance(Double.MAX_VALUE).getFloat(), delta );
+
+		assertEquals(Float.POSITIVE_INFINITY, lp.newInstance(Double.MAX_VALUE)
+				.getFloat(), delta);
 		d = Double.MAX_VALUE * -1.0;
-		assertEquals( Float.NEGATIVE_INFINITY, lp.newInstance(d).getFloat(), delta );
-		
-		assertEquals( 0.0f, lp.newInstance(Double.MIN_VALUE).getFloat(), delta );
+		assertEquals(Float.NEGATIVE_INFINITY, lp.newInstance(d).getFloat(),
+				delta);
+
+		assertEquals(0.0f, lp.newInstance(Double.MIN_VALUE).getFloat(), delta);
 		d = Double.MIN_VALUE * -1.0;
-		assertEquals( 0.0F, lp.newInstance(d).getFloat(), delta );
-		
+		assertEquals(0.0F, lp.newInstance(d).getFloat(), delta);
+
 	}
 
 	@Test
@@ -1126,13 +1047,14 @@ public abstract class LiteralContractTes
 		assertEquals(Float.MAX_VALUE, lp.newInstance(s, l).getFloat(), delta);
 
 		s += "0";
-		assertEquals(Float.POSITIVE_INFINITY, lp.newInstance(s, l).getFloat(), delta);
+		assertEquals(Float.POSITIVE_INFINITY, lp.newInstance(s, l).getFloat(),
+				delta);
 
 		s = Float.toString(Float.MIN_VALUE);
 		assertEquals(Float.MIN_VALUE, lp.newInstance(s, l).getFloat(), delta);
 
 		// smaller than min_value becomes zero
-		s += "0"; 
+		s += "0";
 		assertEquals(0.0f, lp.newInstance(s, l).getFloat(), delta);
 
 	}
@@ -1142,10 +1064,8 @@ public abstract class LiteralContractTes
 		char c = 0x1;
 		try {
 			lp.newInstance(c).getFloat();
-			fail( "Should have thrown DatatypeFormatException");
-		}
-		catch (DatatypeFormatException expected)
-		{
+			fail("Should have thrown DatatypeFormatException");
+		} catch (DatatypeFormatException expected) {
 			// expected
 		}
 	}
@@ -1170,27 +1090,26 @@ public abstract class LiteralContractTes
 		i = 0;
 		d = 0.0;
 		assertEquals(d, lp.newInstance(i).getDouble(), delta);
-		
+
 		i = Byte.MAX_VALUE; // bit pattern ends in 1
-		d = i*1.0;
+		d = i * 1.0;
 		assertEquals(d, lp.newInstance(i).getDouble(), delta);
 		i = Byte.MIN_VALUE; // bit pattern ends in 0
-		d = i*1.0;
+		d = i * 1.0;
 		assertEquals(d, lp.newInstance(i).getDouble(), delta);
-		
+
 		i = Short.MAX_VALUE; // bit pattern ends in 1
-		d = i*1.0;
+		d = i * 1.0;
 		assertEquals(d, lp.newInstance(i).getDouble(), delta);
 		i = Short.MIN_VALUE; // bit pattern ends in 0
-		d = i*1.0;
+		d = i * 1.0;
 		assertEquals(d, lp.newInstance(i).getDouble(), delta);
-		
-		
+
 		i = Integer.MAX_VALUE; // bit pattern ends in 1
-		d = i*1.0;
+		d = i * 1.0;
 		assertEquals(d, lp.newInstance(i).getDouble(), delta);
 		i = Integer.MIN_VALUE; // bit pattern ends in 0
-		d = i*1.0;
+		d = i * 1.0;
 		assertEquals(d, lp.newInstance(i).getDouble(), delta);
 	}
 
@@ -1205,10 +1124,10 @@ public abstract class LiteralContractTes
 		d = 0;
 		assertEquals(d, lp.newInstance(l).getDouble(), delta);
 		l = Long.MAX_VALUE;
-		d = l*1.0;
+		d = l * 1.0;
 		assertEquals(d, lp.newInstance(l).getDouble(), delta);
-		l = Long.MIN_VALUE; 
-		d = l*1.0;
+		l = Long.MIN_VALUE;
+		d = l * 1.0;
 		assertEquals(d, lp.newInstance(l).getDouble(), delta);
 	}
 
@@ -1240,9 +1159,9 @@ public abstract class LiteralContractTes
 		assertEquals(d, lp.newInstance(d).getDouble(), delta);
 		d = Double.MIN_VALUE;
 		assertEquals(d, lp.newInstance(d).getDouble(), delta);
-		d = Double.MAX_VALUE*-1.0;
+		d = Double.MAX_VALUE * -1.0;
 		assertEquals(d, lp.newInstance(d).getDouble(), delta);
-		d = Double.MIN_VALUE*-1.0;
+		d = Double.MIN_VALUE * -1.0;
 		assertEquals(d, lp.newInstance(d).getDouble(), delta);
 	}
 
@@ -1274,10 +1193,8 @@ public abstract class LiteralContractTes
 		char c = 0x1;
 		try {
 			lp.newInstance(c).getDouble();
-			fail( "Should have thrown DatatypeFormatException");
-		}
-		catch (DatatypeFormatException expected)
-		{
+			fail("Should have thrown DatatypeFormatException");
+		} catch (DatatypeFormatException expected) {
 			// expected
 		}
 	}
@@ -1320,11 +1237,12 @@ public abstract class LiteralContractTes
 		assertEquals(l, lp.newInstance(s, l).getLanguage());
 		s = "false";
 		assertEquals(l, lp.newInstance(s, l).getLanguage());
-		 s = "true";
-		 l = "fr";
+		s = "true";
+		l = "fr";
 		assertEquals(l, lp.newInstance(s, l).getLanguage());
 		s = "false";
-		assertEquals(l, lp.newInstance(s, l).getLanguage());	}
+		assertEquals(l, lp.newInstance(s, l).getLanguage());
+	}
 
 	@Test
 	public void testGetLanguage_char() {
@@ -1346,9 +1264,11 @@ public abstract class LiteralContractTes
 		i = 0;
 		assertEquals("0", lp.newInstance(i).getLexicalForm());
 		i = Integer.MAX_VALUE;
-		assertEquals(Integer.toString(Integer.MAX_VALUE), lp.newInstance(i).getLexicalForm());
+		assertEquals(Integer.toString(Integer.MAX_VALUE), lp.newInstance(i)
+				.getLexicalForm());
 		i = Integer.MIN_VALUE;
-		assertEquals(Integer.toString(Integer.MIN_VALUE), lp.newInstance(i).getLexicalForm());
+		assertEquals(Integer.toString(Integer.MIN_VALUE), lp.newInstance(i)
+				.getLexicalForm());
 	}
 
 	@Test
@@ -1359,9 +1279,11 @@ public abstract class LiteralContractTes
 		l = 0;
 		assertEquals("0", lp.newInstance(l).getLexicalForm());
 		l = Integer.MAX_VALUE;
-		assertEquals(Integer.toString(Integer.MAX_VALUE), lp.newInstance(l).getLexicalForm());
+		assertEquals(Integer.toString(Integer.MAX_VALUE), lp.newInstance(l)
+				.getLexicalForm());
 		l = Integer.MIN_VALUE;
-		assertEquals(Integer.toString(Integer.MIN_VALUE), lp.newInstance(l).getLexicalForm());
+		assertEquals(Integer.toString(Integer.MIN_VALUE), lp.newInstance(l)
+				.getLexicalForm());	
 	}
 
 	@Test
@@ -1371,9 +1293,11 @@ public abstract class LiteralContractTes
 		f = 0;
 		assertEquals("0.0", lp.newInstance(f).getLexicalForm());
 		f = Float.MAX_VALUE;
-		assertEquals(Float.toString(Float.MAX_VALUE), lp.newInstance(f).getLexicalForm());
+		assertEquals(Float.toString(Float.MAX_VALUE), lp.newInstance(f)
+				.getLexicalForm());
 		f = Float.MIN_VALUE;
-		assertEquals(Float.toString(Float.MIN_VALUE), lp.newInstance(f).getLexicalForm());
+		assertEquals(Float.toString(Float.MIN_VALUE), lp.newInstance(f)
+				.getLexicalForm());
 
 	}
 
@@ -1383,8 +1307,10 @@ public abstract class LiteralContractTes
 		assertEquals("1.0", lp.newInstance(d).getLexicalForm());
 		d = 0;
 		assertEquals("0.0", lp.newInstance(d).getLexicalForm());
-		assertEquals(Double.toString(Double.MAX_VALUE), lp.newInstance(Double.MAX_VALUE).getLexicalForm());
-		assertEquals(Double.toString(Double.MIN_VALUE), lp.newInstance(Double.MIN_VALUE).getLexicalForm());
+		assertEquals(Double.toString(Double.MAX_VALUE),
+				lp.newInstance(Double.MAX_VALUE).getLexicalForm());
+		assertEquals(Double.toString(Double.MIN_VALUE),
+				lp.newInstance(Double.MIN_VALUE).getLexicalForm());
 	}
 
 	@Test
@@ -1407,19 +1333,19 @@ public abstract class LiteralContractTes
 		c = 0x0;
 		assertEquals(Character.toString(c), lp.newInstance(c).getLexicalForm());
 		c = Character.MAX_VALUE;
-		assertEquals(Character.toString(Character.MAX_VALUE), lp.newInstance(c).getLexicalForm());
+		assertEquals(Character.toString(Character.MAX_VALUE), lp.newInstance(c)
+				.getLexicalForm());
 		c = Character.MIN_VALUE;
-		assertEquals(Character.toString(Character.MIN_VALUE), lp.newInstance(c).getLexicalForm());	
+		assertEquals(Character.toString(Character.MIN_VALUE), lp.newInstance(c)
+				.getLexicalForm());
 	}
 
 	@Test
 	public void testGetLong_boolean() {
 		try {
 			lp.newInstance(true).getLong();
-			fail( "Should have thrown DatatypeFormatException");
-		}
-		catch (DatatypeFormatException expected)
-		{
+			fail("Should have thrown DatatypeFormatException");
+		} catch (DatatypeFormatException expected) {
 			// expected
 		}
 	}
@@ -1431,17 +1357,17 @@ public abstract class LiteralContractTes
 		assertEquals(i, lp.newInstance(i).getLong());
 		i = 0;
 		assertEquals(i, lp.newInstance(i).getLong());
-		
+
 		i = Byte.MAX_VALUE;
 		assertEquals(i, lp.newInstance(i).getLong());
 		i = Byte.MIN_VALUE;
 		assertEquals(i, lp.newInstance(i).getLong());
-		
+
 		i = Short.MAX_VALUE;
 		assertEquals(i, lp.newInstance(i).getLong());
 		i = Short.MIN_VALUE;
 		assertEquals(i, lp.newInstance(i).getLong());
-		
+
 		i = Integer.MAX_VALUE;
 		assertEquals(i, lp.newInstance(i).getLong());
 		i = Integer.MIN_VALUE;
@@ -1459,11 +1385,11 @@ public abstract class LiteralContractTes
 		assertEquals(l, lp.newInstance(l).getLong());
 		l = Long.MIN_VALUE;
 		assertEquals(l, lp.newInstance(l).getLong());
-		
+
 		// 1 either size of int value returnes Long
-		l = 1L+Integer.MAX_VALUE;
+		l = 1L + Integer.MAX_VALUE;
 		assertEquals(l, lp.newInstance(l).getLong());
-		l = -1L+Integer.MIN_VALUE;
+		l = -1L + Integer.MIN_VALUE;
 		assertEquals(l, lp.newInstance(l).getLong());
 	}
 
@@ -1482,21 +1408,20 @@ public abstract class LiteralContractTes
 		f = Long.MIN_VALUE;
 		l = Long.MIN_VALUE;
 		assertEquals(l, lp.newInstance(f).getLong());
-		
-	
+
 		f = Float.MAX_VALUE;
 		assertEquals(Long.MAX_VALUE, lp.newInstance(f).getLong());
 		f = Float.MAX_VALUE * -1.0f;
 		assertEquals(Long.MIN_VALUE, lp.newInstance(f).getLong());
-		
+
 		f = Float.MIN_VALUE;
 		assertEquals(0, lp.newInstance(f).getLong());
-		
-		f = Float.MIN_VALUE*-1.0f;
+
+		f = Float.MIN_VALUE * -1.0f;
 		assertEquals(0, lp.newInstance(f).getLong());
-		
+
 		f = 1.5f; // non integer value
-		assertEquals(1,lp.newInstance(f).getLong());
+		assertEquals(1, lp.newInstance(f).getLong());
 	}
 
 	@Test
@@ -1507,20 +1432,20 @@ public abstract class LiteralContractTes
 		d = 0;
 		l = 0;
 		assertEquals(l, lp.newInstance(d).getLong());
-		d = Long.MAX_VALUE*1.0;
+		d = Long.MAX_VALUE * 1.0;
 		l = Long.MAX_VALUE;
 		assertEquals(l, lp.newInstance(d).getLong());
-		
+
 		d = Double.MAX_VALUE;
-		assertEquals( Long.MAX_VALUE,lp.newInstance(d).getLong());
-		
-		d = Double.MAX_VALUE*-1.0;
-		assertEquals( Long.MIN_VALUE,lp.newInstance(d).getLong());
-		
+		assertEquals(Long.MAX_VALUE, lp.newInstance(d).getLong());
+
+		d = Double.MAX_VALUE * -1.0;
+		assertEquals(Long.MIN_VALUE, lp.newInstance(d).getLong());
+
 		d = Double.MIN_VALUE;
-		assertEquals( 0,lp.newInstance(d).getLong());
-		d = Double.MIN_VALUE *-1.0;
-		assertEquals( 0,lp.newInstance(d).getLong());
+		assertEquals(0, lp.newInstance(d).getLong());
+		d = Double.MIN_VALUE * -1.0;
+		assertEquals(0, lp.newInstance(d).getLong());
 	}
 
 	@Test
@@ -1530,9 +1455,7 @@ public abstract class LiteralContractTes
 		try {
 			lp.newInstance(s, lang).getLong();
 			fail("Should have thrown NumberFormatException");
-		}
-		catch (NumberFormatException expected)
-		{
+		} catch (NumberFormatException expected) {
 			// expected
 		}
 		s = "1";
@@ -1541,30 +1464,26 @@ public abstract class LiteralContractTes
 		s = "0";
 		l = 0;
 		assertEquals(l, lp.newInstance(s, lang).getLong());
-		
-		s = Long.toString( Long.MAX_VALUE);
+
+		s = Long.toString(Long.MAX_VALUE);
 		assertEquals(Long.MAX_VALUE, lp.newInstance(s, lang).getLong());
-		
+
 		s += "0";
 		try {
 			lp.newInstance(s, lang).getLong();
-			fail( "Should have thrown NumberFormatException");
-		}
-		catch (NumberFormatException expected)
-		{
+			fail("Should have thrown NumberFormatException");
+		} catch (NumberFormatException expected) {
 			// expected
 		}
-		
-		s = Long.toString( Long.MIN_VALUE);
+
+		s = Long.toString(Long.MIN_VALUE);
 		assertEquals(Long.MIN_VALUE, lp.newInstance(s, lang).getLong());
-		
+
 		s += "0";
 		try {
 			lp.newInstance(s, lang).getLong();
-			fail( "Should have thrown NumberFormatException");
-		}
-		catch (NumberFormatException expected)
-		{
+			fail("Should have thrown NumberFormatException");
+		} catch (NumberFormatException expected) {
 			// expected
 		}
 	}
@@ -1574,10 +1493,8 @@ public abstract class LiteralContractTes
 		char c = 0x1;
 		try {
 			lp.newInstance(c).getLong();
-			fail( "Should have thrown DatatypeFormatException");
-		}
-		catch (DatatypeFormatException expected)
-		{
+			fail("Should have thrown DatatypeFormatException");
+		} catch (DatatypeFormatException expected) {
 			// expected
 		}
 	}
@@ -1605,7 +1522,6 @@ public abstract class LiteralContractTes
 		assertEquals(b, lp.newInstance(b).getShort());
 	}
 
-
 	@Test
 	public void testGetShort_int() {
 		// int
@@ -1615,35 +1531,34 @@ public abstract class LiteralContractTes
 		i = 0;
 		s = 0;
 		assertEquals(i, lp.newInstance(i).getShort());
-		
+
 		i = Byte.MAX_VALUE;
 		s = Byte.MAX_VALUE;
 		assertEquals(s, lp.newInstance(i).getShort());
-		
+
 		i = Byte.MIN_VALUE;
 		s = Byte.MIN_VALUE;
 		assertEquals(s, lp.newInstance(i).getShort());
-		
-		
+
 		i = Short.MAX_VALUE;
 		assertEquals(Short.MAX_VALUE, lp.newInstance(i).getShort());
-		
+
 		i = Short.MIN_VALUE;
 		assertEquals(Short.MIN_VALUE, lp.newInstance(i).getShort());
-		
+
 		try {
 			lp.newInstance(Integer.MAX_VALUE).getShort();
-			fail( "Should have thrown IllegalArgumentException");
+			fail("Should have thrown IllegalArgumentException");
 		} catch (IllegalArgumentException expected) {
 			// exected
 		}
 
 		try {
 			lp.newInstance(Integer.MIN_VALUE).getShort();
-			fail( "Should have thrown IllegalArgumentException");
+			fail("Should have thrown IllegalArgumentException");
 		} catch (IllegalArgumentException expected) {
 			// exected
-		}		
+		}
 	}
 
 	@Test
@@ -1706,7 +1621,7 @@ public abstract class LiteralContractTes
 
 		f = 1.5f; // non integer value
 		s = 1;
-		assertEquals( s, lp.newInstance(f).getShort());
+		assertEquals(s, lp.newInstance(f).getShort());
 	}
 
 	@Test
@@ -1751,20 +1666,20 @@ public abstract class LiteralContractTes
 		assertEquals(sh, lp.newInstance(s, l).getShort());
 		s = "0";
 		sh = 0;
-		s = Short.toString( Short.MAX_VALUE );
+		s = Short.toString(Short.MAX_VALUE);
 		assertEquals(Short.MAX_VALUE, lp.newInstance(s, l).getShort());
-		
-		s +="0";
+
+		s += "0";
 		try {
 			lp.newInstance(s, l).getShort();
-		fail("Should have thrown NumberFormatException");
-	} catch (NumberFormatException expected) {
-		// expected
-	}
-		
-		s = Short.toString( Short.MIN_VALUE );
+			fail("Should have thrown NumberFormatException");
+		} catch (NumberFormatException expected) {
+			// expected
+		}
+
+		s = Short.toString(Short.MIN_VALUE);
 		assertEquals(Short.MIN_VALUE, lp.newInstance(s, l).getShort());
-		s +="0";
+		s += "0";
 		try {
 			lp.newInstance(s, l).getShort();
 			fail("Should have thrown NumberFormatException");
@@ -1790,7 +1705,6 @@ public abstract class LiteralContractTes
 		assertEquals("false", lp.newInstance(false).getString());
 	}
 
-
 	@Test
 	public void testGetString_int() {
 		// int
@@ -1798,21 +1712,27 @@ public abstract class LiteralContractTes
 		assertEquals("1", lp.newInstance(i).getString());
 		i = 0;
 		assertEquals("0", lp.newInstance(i).getString());
-		
+
 		i = Byte.MAX_VALUE;
-		assertEquals(Byte.toString(Byte.MAX_VALUE), lp.newInstance(i).getString());
+		assertEquals(Byte.toString(Byte.MAX_VALUE), lp.newInstance(i)
+				.getString());
 		i = Byte.MIN_VALUE;
-		assertEquals(Byte.toString(Byte.MIN_VALUE), lp.newInstance(i).getString());
-		
+		assertEquals(Byte.toString(Byte.MIN_VALUE), lp.newInstance(i)
+				.getString());
+
 		i = Short.MAX_VALUE;
-		assertEquals(Short.toString(Short.MAX_VALUE), lp.newInstance(i).getString());
+		assertEquals(Short.toString(Short.MAX_VALUE), lp.newInstance(i)
+				.getString());
 		i = Short.MIN_VALUE;
-		assertEquals(Short.toString(Short.MIN_VALUE), lp.newInstance(i).getString());
-		
+		assertEquals(Short.toString(Short.MIN_VALUE), lp.newInstance(i)
+				.getString());
+
 		i = Integer.MAX_VALUE;
-		assertEquals(Integer.toString(Integer.MAX_VALUE), lp.newInstance(i).getString());
+		assertEquals(Integer.toString(Integer.MAX_VALUE), lp.newInstance(i)
+				.getString());
 		i = Integer.MIN_VALUE;
-		assertEquals(Integer.toString(Integer.MIN_VALUE), lp.newInstance(i).getString());
+		assertEquals(Integer.toString(Integer.MIN_VALUE), lp.newInstance(i)
+				.getString());
 	}
 
 	@Test
@@ -1823,9 +1743,11 @@ public abstract class LiteralContractTes
 		l = 0;
 		assertEquals("0", lp.newInstance(l).getString());
 		l = Long.MAX_VALUE;
-		assertEquals(Long.toString(Long.MAX_VALUE), lp.newInstance(l).getString());
+		assertEquals(Long.toString(Long.MAX_VALUE), lp.newInstance(l)
+				.getString());
 		l = Long.MIN_VALUE;
-		assertEquals(Long.toString(Long.MIN_VALUE), lp.newInstance(l).getString());
+		assertEquals(Long.toString(Long.MIN_VALUE), lp.newInstance(l)
+				.getString());
 	}
 
 	@Test
@@ -1835,9 +1757,11 @@ public abstract class LiteralContractTes
 		f = 0;
 		assertEquals("0.0", lp.newInstance(f).getString());
 		f = Float.MAX_VALUE;
-		assertEquals(Float.toString(Float.MAX_VALUE), lp.newInstance(f).getString());
+		assertEquals(Float.toString(Float.MAX_VALUE), lp.newInstance(f)
+				.getString());
 		f = Float.MIN_VALUE;
-		assertEquals(Float.toString(Float.MIN_VALUE), lp.newInstance(f).getString());
+		assertEquals(Float.toString(Float.MIN_VALUE), lp.newInstance(f)
+				.getString());
 	}
 
 	@Test
@@ -1847,9 +1771,11 @@ public abstract class LiteralContractTes
 		d = 0;
 		assertEquals("0.0", lp.newInstance(d).getString());
 		d = Double.MAX_VALUE;
-		assertEquals(Double.toString(Double.MAX_VALUE), lp.newInstance(d).getString());
+		assertEquals(Double.toString(Double.MAX_VALUE), lp.newInstance(d)
+				.getString());
 		d = Double.MIN_VALUE;
-		assertEquals(Double.toString(Double.MIN_VALUE), lp.newInstance(d).getString());
+		assertEquals(Double.toString(Double.MIN_VALUE), lp.newInstance(d)
+				.getString());
 	}
 
 	@Test
@@ -1868,16 +1794,16 @@ public abstract class LiteralContractTes
 	@Test
 	public void testGetString_char() {
 		char c = 0x1;
-		String s = ""+c;
+		String s = "" + c;
 		assertEquals(s, lp.newInstance(c).getString());
 		c = 0x0;
-		s = ""+c;
+		s = "" + c;
 		assertEquals(s, lp.newInstance(c).getString());
 		c = Character.MAX_VALUE;
-		s = ""+c;
+		s = "" + c;
 		assertEquals(s, lp.newInstance(c).getString());
 		c = Character.MIN_VALUE;
-		s = ""+c;
+		s = "" + c;
 		assertEquals(s, lp.newInstance(c).getString());
 	}
 
@@ -1894,19 +1820,19 @@ public abstract class LiteralContractTes
 		assertEquals(i, lp.newInstance(i).getValue());
 		i = 0;
 		assertEquals(i, lp.newInstance(i).getValue());
-		
+
 		// byte
 		i = Byte.MAX_VALUE;
 		assertEquals(i, lp.newInstance(Byte.MAX_VALUE).getValue());
 		i = Byte.MIN_VALUE;
 		assertEquals(i, lp.newInstance(Byte.MIN_VALUE).getValue());
-		
+
 		// short
 		i = Short.MAX_VALUE;
 		assertEquals(i, lp.newInstance(Short.MAX_VALUE).getValue());
 		i = Short.MIN_VALUE;
 		assertEquals(i, lp.newInstance(Short.MIN_VALUE).getValue());
-		
+
 		i = Integer.MAX_VALUE;
 		assertEquals(Integer.MAX_VALUE, lp.newInstance(i).getValue());
 		i = Integer.MIN_VALUE;
@@ -1965,9 +1891,9 @@ public abstract class LiteralContractTes
 
 	@Test
 	public void testGetValue_char() {
-		char c = (char)0x0;
+		char c = (char) 0x0;
 		assertEquals(c, lp.newInstance(c).getValue());
-		c = (char)0x1;
+		c = (char) 0x1;
 		assertEquals(c, lp.newInstance(c).getValue());
 		c = Character.MAX_VALUE;
 		assertEquals(Character.MAX_VALUE, lp.newInstance(c).getValue());
@@ -1977,7 +1903,7 @@ public abstract class LiteralContractTes
 
 	@Test
 	public void testIsWellFormedXML_boolean() {
-		assertFalse( lp.newInstance(true).isWellFormedXML());
+		assertFalse(lp.newInstance(true).isWellFormedXML());
 	}
 
 	@Test
@@ -1996,20 +1922,20 @@ public abstract class LiteralContractTes
 	@Test
 	public void testIsWellFormedXML_float() {
 		float f = 1;
-		assertFalse( lp.newInstance(f).isWellFormedXML());
+		assertFalse(lp.newInstance(f).isWellFormedXML());
 	}
 
 	@Test
 	public void testIsWellFormedXML_double() {
 		double d = 1;
-		assertFalse( lp.newInstance(d).isWellFormedXML());
+		assertFalse(lp.newInstance(d).isWellFormedXML());
 	}
 
 	@Test
 	public void testIsWellFormedXML_string() {
 		String s = "true";
 		String l = "en";
-		assertFalse( lp.newInstance(s, l).isWellFormedXML());
+		assertFalse(lp.newInstance(s, l).isWellFormedXML());
 	}
 
 	@Test
@@ -2018,61 +1944,122 @@ public abstract class LiteralContractTes
 		assertFalse(lp.newInstance(c).isWellFormedXML());
 	}
 
-	/*
-	 * FIXME
-	 * 
-	 * @Test public void testSameValueAs_Literal_boolean() { assertEquals(1,
-	 * lp.newInstance(true).sameValueAs()); assertEquals(0,
-	 * lp.newInstance(false).sameValueAs()); }
-	 * 
-	 * @Test public void testSameValueAs_Literal_byte() { // byte byte b = 1;
-	 * assertEquals(b, lp.newInstance(b).sameValueAs()); b = 0; assertEquals(b,
-	 * lp.newInstance(b).sameValueAs()); b = 0xf; // bit pattern ends in 1
-	 * assertEquals(b, lp.newInstance(b).sameValueAs()); b = 0xe; // bit pattern
-	 * ends in 0 assertEquals(b, lp.newInstance(b).sameValueAs()); }
-	 * 
-	 * @Test public void testSameValueAs_Literal_short() { // short short s = 1;
-	 * assertEquals(s, lp.newInstance(s).sameValueAs()); s = 0; assertEquals(s,
-	 * lp.newInstance(s).sameValueAs()); s = 0xf; // bit pattern ends in 1
-	 * assertEquals(s, lp.newInstance(s).sameValueAs()); s = 0xe; // bit pattern
-	 * ends in 0 assertEquals(s, lp.newInstance(s).sameValueAs()); }
-	 * 
-	 * @Test public void testSameValueAs_Literal_int() { // int int i = 1;
-	 * assertEquals(i, lp.newInstance(i).sameValueAs()); i = 0; assertEquals(i,
-	 * lp.newInstance(i).sameValueAs()); i = 0x7fff; // bit pattern ends in 1
-	 * assertEquals(i, lp.newInstance(i).sameValueAs()); i = 0x7ffe; // bit
-	 * pattern ends in 0 assertEquals(i, lp.newInstance(i).sameValueAs()); }
-	 * 
-	 * @Test public void testSameValueAs_Literal_long() { // long long l = 1;
-	 * assertEquals(l, lp.newInstance(l).sameValueAs()); l = 0; assertEquals(l,
-	 * lp.newInstance(l).sameValueAs()); l = 0x7fffffff; // bit pattern ends in
-	 * 1 assertEquals(l, lp.newInstance(l).sameValueAs()); l = 0x7ffffffe; //
-	 * bit pattern ends in 0 assertEquals(l, lp.newInstance(l).sameValueAs()); }
-	 * 
-	 * @Test public void testSameValueAs_Literal_float() { float f = 1;
-	 * assertEquals(f, lp.newInstance(f).sameValueAs()); f = 0; assertEquals(f,
-	 * lp.newInstance(f).sameValueAs()); f = 7; // bit pattern ends in 1
-	 * assertEquals(f, lp.newInstance(f).sameValueAs()); f = 6; // bit pattern
-	 * ends in 0 assertEquals(f, lp.newInstance(f).sameValueAs()); }
-	 * 
-	 * @Test public void testSameValueAs_Literal_double() { double d = 1;
-	 * assertEquals(d, lp.newInstance(d).sameValueAs()); d = 0; assertEquals(d,
-	 * lp.newInstance(d).sameValueAs()); d = 7; // bit pattern ends in 1
-	 * assertEquals(d, lp.newInstance(d).sameValueAs()); d = 6; // bit pattern
-	 * ends in 0 assertEquals(d, lp.newInstance(d).sameValueAs()); }
-	 * 
-	 * @Test public void testSameValueAs_Literal_string() { String s = "true";
-	 * String l = "en"; assertEquals(s, lp.newInstance(s, l).sameValueAs()); s =
-	 * "false"; assertEquals(s, lp.newInstance(s, l).sameValueAs()); s = "1";
-	 * assertEquals(s, lp.newInstance(s, l).sameValueAs()); s = "0";
-	 * assertEquals(s, lp.newInstance(s, l).sameValueAs()); }
-	 * 
-	 * @Test public void testSameValueAs_Literal_char() { char c = 0x1;
-	 * assertEquals(c, lp.newInstance(c).sameValueAs()); c = 0x0;
-	 * assertEquals(c, lp.newInstance(s).sameValueAs()); c = '1';
-	 * assertEquals(c, lp.newInstance(c).sameValueAs()); c = '0';
-	 * assertEquals(c, lp.newInstance(c).sameValueAs()); }
-	 */
+	@Test
+	public void testSameValueAs_Literal_boolean() {
+		Literal l = lp.newInstance(true);
+		Literal l2 = lp.newInstance(true);
+
+		assertTrue(l.sameValueAs(l2));
+		assertTrue(l2.sameValueAs(l));
+
+		l = lp.newInstance(false);
+		l2 = lp.newInstance(false);
+
+		assertTrue(l.sameValueAs(l2));
+		assertTrue(l2.sameValueAs(l));
+	}
+
+	// @Test public void testSameValueAs_Literal_byte() {
+	// byte byte b = 1;
+	// assertEquals(b, lp.newInstance(b).sameValueAs()); b = 0; assertEquals(b,
+	// lp.newInstance(b).sameValueAs()); b = 0xf; // bit pattern ends in 1
+	// assertEquals(b, lp.newInstance(b).sameValueAs()); b = 0xe; // bit pattern
+	// ends in 0 assertEquals(b, lp.newInstance(b).sameValueAs()); }
+	//
+	// @Test public void testSameValueAs_Literal_short() { // short short s = 1;
+	// assertEquals(s, lp.newInstance(s).sameValueAs()); s = 0; assertEquals(s,
+	// lp.newInstance(s).sameValueAs()); s = 0xf; // bit pattern ends in 1
+	// assertEquals(s, lp.newInstance(s).sameValueAs()); s = 0xe; // bit pattern
+	// ends in 0 assertEquals(s, lp.newInstance(s).sameValueAs()); }
+
+	@Test
+	public void testSameValueAs_Literal_int() {
+		Literal l1 = lp.newInstance(Short.MAX_VALUE);
+		Literal l2 = lp.newInstance(Short.MAX_VALUE);
+
+		assertTrue(l1.sameValueAs(l2));
+		assertTrue(l2.sameValueAs(l1));
+
+		l1 = lp.newInstance(true);
+		l2 = lp.newInstance(1);
+		assertFalse(l1.sameValueAs(l2));
+		assertFalse(l2.sameValueAs(l1));
+
+		l1 = lp.newInstance(Integer.MAX_VALUE);
+		long l = Integer.MAX_VALUE;
+		l2 = lp.newInstance(l);
+		assertTrue(l1.sameValueAs(l2));
+		assertTrue(l2.sameValueAs(l1));
+	}
+
+	@Test
+	public void testSameValueAs_Literal_long() {
+		Literal l1 = lp.newInstance(Long.MAX_VALUE);
+		Literal l2 = lp.newInstance(Long.MAX_VALUE);
+
+		assertTrue(l1.sameValueAs(l2));
+		assertTrue(l2.sameValueAs(l1));
+	}
+
+	@Test
+	public void testSameValueAs_Literal_float() {
+		Literal l1 = lp.newInstance(Float.MAX_VALUE);
+		Literal l2 = lp.newInstance(Float.MAX_VALUE);
+
+		assertTrue(l1.sameValueAs(l2));
+		assertTrue(l2.sameValueAs(l1));
+
+		double d = Float.MAX_VALUE;
+		l2 = lp.newInstance(d);
+
+		assertFalse(l1.sameValueAs(l2));
+		assertFalse(l2.sameValueAs(l1));
+
+	}
+
+	@Test
+	public void testSameValueAs_Literal_double() {
+		Literal l1 = lp.newInstance(Double.MAX_VALUE);
+		Literal l2 = lp.newInstance(Double.MAX_VALUE);
+
+		assertTrue(l1.sameValueAs(l2));
+		assertTrue(l2.sameValueAs(l1));
+
+		float f = Float.MAX_VALUE;
+		l2 = lp.newInstance(f);
+		l1 = lp.newInstance(Float.MAX_VALUE);
+
+		assertTrue(l1.sameValueAs(l2));
+		assertTrue(l2.sameValueAs(l1));
+
+	}
+
+	@Test
+	public void testSameValueAs_Literal_string() {
+		String s = "foo";
+		String l = "en";
+		Literal l1 = lp.newInstance(s, l);
+		Literal l2 = lp.newInstance(s, l);
+
+		assertTrue(l1.sameValueAs(l2));
+
+		// change in languate makes it different
+		l2 = lp.newInstance(s, "fr");
+		assertFalse(l1.sameValueAs(l2));
+	}
+
+	@Test
+	public void testSameValueAs_Literal_char() {
+		char c = Character.MAX_VALUE;
+		Literal l1 = lp.newInstance(c);
+		Literal l2 = lp.newInstance(c);
+
+		assertTrue(l1.sameValueAs(l2));
+
+		l2 = lp.newInstance('d');
+		assertFalse(l1.sameValueAs(l2));
+	}
+
 	// /// FIXME END OF EDIT
 	//
 	// // byte

Modified: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ModelContractTests.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ModelContractTests.java?rev=1532512&r1=1532511&r2=1532512&view=diff
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ModelContractTests.java (original)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ModelContractTests.java Tue Oct 15 20:15:24 2013
@@ -18,7 +18,10 @@
 
 package com.hp.hpl.jena.rdf.model;
 
+import static com.hp.hpl.jena.testing_framework.GraphHelper.arrayToSet;
+import static com.hp.hpl.jena.testing_framework.GraphHelper.iteratorToSet;
 import static com.hp.hpl.jena.testing_framework.ModelHelper.*;
+import static com.hp.hpl.jena.testing_framework.TestUtils.assertInstanceOf;
 import static org.junit.Assert.*;
 import static org.mockito.Mockito.*;
 
@@ -28,11 +31,14 @@ import java.io.File;
 import java.io.InputStream;
 import java.io.OutputStreamWriter;
 import java.io.Reader;
+import java.io.StringWriter;
 import java.io.Writer;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
+
 import javax.xml.XMLConstants;
 import javax.xml.namespace.NamespaceContext;
 import javax.xml.parsers.DocumentBuilder;
@@ -903,7 +909,126 @@ public abstract class ModelContractTests
 				rs.hasProperty(RDF.object, rdfNode("O")));
 
 	}
+		
+	/**
+	 * Test that a uri in a different model does not reifiy the statment.
+	 */
+	@Test
+	public void testCreateReifiedStatement_String_Statement_ForeignFails() {
+		final String uri = "spoo:rubbish";
+		final Model m2 = getProducer().newInstance();
+		model.createReifiedStatement(uri, statement( "S P O" ));
+		try {
+			m2.createResource(uri).as(ReifiedStatement.class);
+			fail("Should have thrown Does Not Reify Exception");
+		} catch (final DoesNotReifyException e) { /* that's what we expect */
+		}
+	}
+	
+	@Test
+	public void testAs_ReifiedStatement_UnknownFails() {
+		try {
+			model.createResource("spoo:rubbish").as(ReifiedStatement.class);
+			fail("Should have thrown Does Not Reify Exception");
+		} catch (final DoesNotReifyException e) { /* that's what we expect */
+		}
+	}
+	
+	/**
+	 * "dirty" reifications - those with conflicting quadlets - should fail.
+	 */
+	@Test
+	public void testAs_ReifiedStatement_Fails() {
+		txnBegin( model );
+		final Resource R = model
+				.createResource("http://example.com/foo");
+		model.add(R, RDF.type, RDF.Statement);
+		model.add(R, RDF.subject, resource( "S"));
+		model.add(R, RDF.subject, resource( "P"));
+		txnCommit( model );
+		try {
+			R.as(ReifiedStatement.class);
+			fail("Should have thrown Does Not Reify Exception");
+		} catch (final DoesNotReifyException e) { /* that's what we expect */
+		}
+	}	
+
+	/**
+	 * check that, from a model with any combination of the statements given, we
+	 * can convert R into a ReifiedStatement iff the four components of the quad
+	 * are in the model.
+	 */
+	@Test
+	public void testReificationCombinations() {
+		txnBegin( model );
+		final Resource RR = model.createResource( "http://example.com/rr"); 
+		final Resource SS =  model.createResource("http://example.com/ss");
+		final Property PP = RR.as(Property.class);
+		final RDFNode O = rdfNode( "O" );
+		final Object[][] statements = {
+				{ model.createStatement(RR, RDF.type, RDF.Statement),
+						new Integer(1) },
+				{ model.createStatement(RR, RDF.subject, SS), new Integer(2) },
+				{ model.createStatement(RR, RDF.predicate, PP), new Integer(4) },
+				{ model.createStatement(RR, RDF.object, O), new Integer(8) },
+				{ model.createStatement(SS, PP, O), new Integer(16) },
+				{ model.createStatement(RR, PP, O), new Integer(32) },
+				{ model.createStatement(SS, RDF.subject, SS), new Integer(64) },
+				{ model.createStatement(SS, RDF.predicate, PP),
+						new Integer(128) },
+				{ model.createStatement(SS, RDF.object, O), new Integer(256) },
+				{ model.createStatement(SS, RDF.type, RDF.Statement),
+						new Integer(512) } };
+		testCombinations(model, RR, 0, statements, statements.length);
+	}
+	
+	/**
+	 * walk down the set of statements (represented as an array), recursing with
+	 * and without each statement being present. The mask bits record those
+	 * statements that are in the model. At the bottom of the recursion (n ==
+	 * 0), check that R can be reified exactly when all four quad components are
+	 * present; the other statements don't matter.
+	 */
+	private void testCombinations(final Model m, final Resource R,
+			final int mask, final Object[][] statements, final int n) {
+		if (n == 0) {
+			try {
+				// System.err.println( "| hello. mask = " + mask );
+				final ReifiedStatement rs = R.as(ReifiedStatement.class);
+				// System.err.println( "+  we constructed " + rs );
+
+				if ((mask & 15) != 15) {
+					LOG.warn( "mask error");
+					StringWriter sw = new StringWriter();
+					m.write(sw, "TTL");
+					LOG.warn( sw.getBuffer().toString() );
+				}
+
+				assertTrue("should not reify: not all components present ["
+						+ mask + "]: " + rs, (mask & 15) == 15);
+				// System.err.println( "+  and we passed the assertion." );
+			} catch (final DoesNotReifyException e) { // System.err.println(
+														// "+  we exploded" );
+				assertFalse("should reify: all components present", mask == 15);
+			}
+		} else {
+			final int i = n - 1;
+			final Statement s = (Statement) statements[i][0];
+			final int bits = ((Integer) statements[i][1]).intValue();
+			testCombinations(m, R, mask, statements, i);
+			m.add(s);
+			testCombinations(m, R, mask + bits, statements, i);
+			m.remove(s);
+		}
+	}
 
+//	@Test
+//	public void testThisWillBreak() {
+//		final Resource R = model
+//				.createResource(AbstractReifiedStatementsTest.aURI);
+//		SPO.createReifiedStatement(AbstractReifiedStatementsTest.aURI);
+//		model.add(R, RDF.subject, R);
+//	}
 	/**
 	 * Test the creation of a reified statement using a URI and a statement.
 	 * 
@@ -1196,7 +1321,9 @@ public abstract class ModelContractTests
 		assertEquals("not same reified URI", rs.getURI(), rs2.getURI());
 
 		assertEquals("not same reified statement", rs, rs2);
-
+		
+		assertEquals( "Should get statement", s, ((ReifiedStatement)rs).getStatement());
+		assertEquals( "Should get statement", s, ((ReifiedStatement)rs2).getStatement());
 	}
 
 	@Test
@@ -1481,6 +1608,35 @@ public abstract class ModelContractTests
 		txnCommit(model);
 		assertTrue("Statement was not reified", model.isReified(s));
 	}
+	
+	/**
+	 * Leo Bard spotted a problem whereby removing a reified statement from a
+	 * model with style Standard didn't leave the model empty. Here's a test for
+	 * it.
+	 */
+	@Test
+	public void testLeosReificationBug() {
+		final Statement st = statement("pigs fly south");
+		final ReifiedStatement rst = st.createReifiedStatement("eh:pointer");
+		model.removeReification(rst);
+		assertIsoModels(ModelFactory.createDefaultModel(), model);
+	}
+
+	
+
+	/**
+	 * this test appeared when TestStatementResources crashed using reified
+	 * statements as a step-0 implementation for asSubject()/asObject(). Looks
+	 * like there was a problem in modelReifier().getRS(), which we're fixing
+	 * ...
+	 */
+	@Test
+	public void testListDoesntCrash() {
+		model.createReifiedStatement(statement( "S P O"));
+		model.createReifiedStatement(statement( "S P O2"));
+		assertTrue("should be non-empty", model.listReifiedStatements()
+				.hasNext());
+	}
 
 	/**
 	 * <ul>
@@ -1592,8 +1748,10 @@ public abstract class ModelContractTests
 		assertFalse("had reified statements at start", model
 				.listReifiedStatements().hasNext());
 		Statement s = statement("S P O");
+		Statement s2 = statement("S P O2");
 		txnBegin(model);
 		model.add(s);
+		model.add(s2);
 		txnCommit(model);
 		assertFalse("Statement was reified", model.listReifiedStatements()
 				.hasNext());
@@ -1610,19 +1768,18 @@ public abstract class ModelContractTests
 	@Test
 	public void testListReifiedStatements_Statement() {
 		Statement s = statement("S P O");
+		Statement s2 = statement("S P O2");
 		txnBegin(model);
 		model.add(s);
 		model.createReifiedStatement("foo:bar", s);
+		model.createReifiedStatement("foo:baz", s2);
 		txnCommit(model);
 
 		List<ReifiedStatement> rsList = model.listReifiedStatements(s).toList();
 
 		assertEquals("Statement was not reified", 1, rsList.size());
-		assertEquals("Wrong statement was reified", "foo:bar", rsList.get(0)
-				.getURI());
-
-		assertFalse("Found reified statement for wrong statement", model
-				.listReifiedStatements(statement("S P O2")).hasNext());
+		assertEquals("Wrong reified statement was returned", "foo:bar", 
+				rsList.get(0).getURI());
 	}
 
 	/**
@@ -3532,10 +3689,12 @@ public abstract class ModelContractTests
 		assertTrue("Missing P3", result.contains("<eh:/S> <eh:/P3> \"foo\""));
 		assertTrue("Missing P2", result.contains("<eh:/S> <eh:/P2> _:"));
 		assertTrue("Missing P", result.contains("<eh:/S> <eh:/P> <eh:/O>"));
-		// TODO figure out how to work iwth base
+		// TODO figure out how to work with base
 		// assertTrue( "Missing P3", result.contains(
 		// "<eh:/S> <eh:/P3> <foo://bar/A>"));
 
 	}
+	
+	
 
 }

Copied: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ModelExtractTest.java (from r1530718, jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractModelExtractTest.java)
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ModelExtractTest.java?p2=jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ModelExtractTest.java&p1=jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractModelExtractTest.java&r1=1530718&r2=1532512&rev=1532512&view=diff
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/AbstractModelExtractTest.java (original)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ModelExtractTest.java Tue Oct 15 20:15:24 2013
@@ -34,8 +34,14 @@ import com.hp.hpl.jena.rdf.model.Stateme
 import org.junit.Assert;
 import org.junit.Test;
 
-public abstract class AbstractModelExtractTest extends AbstractProducerUser {
+public class ModelExtractTest {
 
+	/**
+	 * A ModelExtract implementation for testing.
+	 * 
+	 * with access to root, result and subject values
+	 *
+	 */
 	static class MockModelExtract extends ModelExtract {
 		Node root;
 		Graph result;
@@ -63,6 +69,9 @@ public abstract class AbstractModelExtra
 		}
 	}
 
+	/**
+	 * A statement boundary that always returns true for stopAt.
+	 */
 	protected static final StatementBoundary sbTrue = new StatementBoundaryBase() {
 		@Override
 		public boolean stopAt(final Statement s) {
@@ -70,6 +79,9 @@ public abstract class AbstractModelExtra
 		}
 	};
 
+	/**
+	 * A statement boundary that always returns false for stopAt.
+	 */
 	protected static final StatementBoundary sbFalse = new StatementBoundaryBase() {
 		@Override
 		public boolean stopAt(final Statement s) {
@@ -80,17 +92,17 @@ public abstract class AbstractModelExtra
 	@Test
 	public void testAsTripleBoundary() {
 		final Model m = ModelFactory.createDefaultModel();
-		Assert.assertTrue(AbstractModelExtractTest.sbTrue.asTripleBoundary(m)
+		Assert.assertTrue(ModelExtractTest.sbTrue.asTripleBoundary(m)
 				.stopAt(triple("x R y")));
-		Assert.assertFalse(AbstractModelExtractTest.sbFalse.asTripleBoundary(m)
+		Assert.assertFalse(ModelExtractTest.sbFalse.asTripleBoundary(m)
 				.stopAt(triple("x R y")));
 	}
 
 	@Test
 	public void testInvokesExtract() {
 		final MockModelExtract mock = new MockModelExtract(
-				AbstractModelExtractTest.sbTrue);
-		final Model source = modelWithStatements(getModelProducer(), "a R b");
+				ModelExtractTest.sbTrue);
+		final Model source = memModel( "a R b");
 		final Model m = mock.extract(resource("a"), source);
 		Assert.assertEquals(node("a"), mock.root);
 		Assert.assertSame(mock.result, m.getGraph());
@@ -99,11 +111,11 @@ public abstract class AbstractModelExtra
 
 	@Test
 	public void testRemembersBoundary() {
-		Assert.assertSame(AbstractModelExtractTest.sbTrue,
-				new MockModelExtract(AbstractModelExtractTest.sbTrue)
+		Assert.assertSame(ModelExtractTest.sbTrue,
+				new MockModelExtract(ModelExtractTest.sbTrue)
 						.getStatementBoundary());
-		Assert.assertSame(AbstractModelExtractTest.sbFalse,
-				new MockModelExtract(AbstractModelExtractTest.sbFalse)
+		Assert.assertSame(ModelExtractTest.sbFalse,
+				new MockModelExtract(ModelExtractTest.sbFalse)
 						.getStatementBoundary());
 	}
 

Modified: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ResourceContractTests.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ResourceContractTests.java?rev=1532512&r1=1532511&r2=1532512&view=diff
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ResourceContractTests.java (original)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/ResourceContractTests.java Tue Oct 15 20:15:24 2013
@@ -741,6 +741,25 @@ public abstract class ResourceContractTe
 			// expected
 		}
 	}
+	
+	/**
+	 * Test that the simple reification results in a reified statement
+	 */
+	@Test
+	public void testAsReifiedStatement() {
+		final Resource R = model.createResource();
+		final Resource S = model.createResource("http://example.com/subject");
+		final Property P = model.createProperty("http://example.com/predicate");
+		final Literal O = model	.createLiteral("http://example.com/object");
+		final Statement SPO = model.createStatement(S, P, O);
+		model.add(R, RDF.type, RDF.Statement);
+		model.add(R, RDF.subject, S);
+		model.add(R, RDF.predicate, P);
+		model.add(R, RDF.object, O);
+		final RDFNode rs = R.as(ReifiedStatement.class);
+		assertEquals("can recover statement", SPO,
+				((ReifiedStatement) rs).getStatement());
+	}
 
 	// // FIXME implement this
 

Modified: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/util/iterator/ExtendedIteratorContractTests.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/util/iterator/ExtendedIteratorContractTests.java?rev=1532512&r1=1532511&r2=1532512&view=diff
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/util/iterator/ExtendedIteratorContractTests.java (original)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/util/iterator/ExtendedIteratorContractTests.java Tue Oct 15 20:15:24 2013
@@ -23,13 +23,35 @@ public abstract class ExtendedIteratorCo
 
 	public static interface IteratorProducer<T> {
 		
+		/**
+		 * Get a new instance of the iterator.
+		 * @return
+		 */
 		public ExtendedIterator<T> newInstance();
 		
+		/**
+		 * Clean up after a test
+		 */
 		public void cleanUp();
 
+		/**
+		 * The list of items found in the iterator.  Does not have to be in order.
+		 * @return
+		 */
 		public List<T> getList();
 		
+		/**
+		 * True if delete is supported by the iterator
+		 * @return
+		 */
 		public boolean supportsDelete(); 
+		
+		/**
+		 * True if this is an iterator on a copy so that delete works but
+		 * getting a new copy for the iterator test will return the original list.
+		 * @return
+		 */
+		public boolean isCopy();
 	}
 
 	@Contract.Inject( "com.hp.hpl.jena.util.iterator.ExtendedIteratorContractTests.IteratorProducer<%s>")
@@ -51,7 +73,7 @@ public abstract class ExtendedIteratorCo
 	 */
 	@Test
 	public void testRemoveNext() {
-		List<Object> lst = getIteratorProducer().newInstance().toList();
+		List<Object> lst = new ArrayList<Object>(getIteratorProducer().newInstance().toList());
 		ExtendedIterator<Object> iter = getIteratorProducer().newInstance();
 
 		try {
@@ -60,11 +82,14 @@ public abstract class ExtendedIteratorCo
 				fail("Should have thrown UnsupportedOperationException");
 			}
 			assertEquals(lst.get(0), o);
-			List<Object> lst2 = getIteratorProducer().newInstance().toList();
-			assertEquals( "Element not deleted", lst.size()-1,lst2.size());
-			lst.removeAll(lst2);
-			assertEquals( "Wrong elements returned", 1, lst.size() );
-			assertEquals( o, lst.get(0) );
+			if (! getIteratorProducer().isCopy())
+			{
+				List<Object> lst2 = getIteratorProducer().newInstance().toList();
+				assertEquals( "Element not deleted", lst.size()-1,lst2.size());
+				lst.removeAll(lst2);
+				assertEquals( "Wrong elements returned", 1, lst.size() );
+				assertEquals( o, lst.get(0) );
+			}
 		} catch (UnsupportedOperationException e) {
 			if (getIteratorProducer().supportsDelete()) {
 				fail("Should not have thrown UnsupportedOperationException");

Copied: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/util/iterator/WrappedIteratorTest.java (from r1531665, jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/temp/IteratorTest.java)
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/util/iterator/WrappedIteratorTest.java?p2=jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/util/iterator/WrappedIteratorTest.java&p1=jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/temp/IteratorTest.java&r1=1531665&r2=1532512&rev=1532512&view=diff
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/temp/IteratorTest.java (original)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/util/iterator/WrappedIteratorTest.java Tue Oct 15 20:15:24 2013
@@ -1,4 +1,4 @@
-package com.hp.hpl.jena.rdf.model.temp;
+package com.hp.hpl.jena.util.iterator;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -11,32 +11,27 @@ import org.xenei.junit.contract.Contract
 import org.xenei.junit.contract.ContractSuite;
 import org.xenei.junit.contract.IProducer;
 
-import com.hp.hpl.jena.rdf.model.AbstractIteratorTest;
 import com.hp.hpl.jena.rdf.model.ModelContractTests;
 import com.hp.hpl.jena.rdf.model.Model;
 import com.hp.hpl.jena.rdf.model.ModelFactory;
 import com.hp.hpl.jena.testing_framework.AbstractModelProducer;
 import com.hp.hpl.jena.util.iterator.ExtendedIterator;
-import com.hp.hpl.jena.util.iterator.ExtendedIteratorContractTests;
-import com.hp.hpl.jena.util.iterator.ExtendedIteratorContractTests.IteratorProducer;
 import com.hp.hpl.jena.util.iterator.WrappedIterator;
 
-//@RunWith( ContractSuite.class )
-//@ContractImpl( ExtendedIterator.class )
-public class IteratorTest  extends ExtendedIteratorContractTests {
+public class WrappedIteratorTest extends ExtendedIteratorContractTests {
 
-	IteratorProducer producer = new IteratorProducer() {
+	IteratorProducer<String> producer = new IteratorProducer<String>() {
 		
-		Object[] objs = { "one", "two", "three", "four" };
+		List<String> objs = new ArrayList<String>(
+				Arrays.asList(new String[]{ "one", "two", "three", "four" }) );
 		
-		public List<Object> getList() {
-			return Arrays.asList( objs );
+		public List<String> getList() {
+			return objs;
 		}
 
 		@Override
-		public ExtendedIterator<Object> newInstance() {
-			List<Object> l = new ArrayList<Object>( getList() );
-			return WrappedIterator.create( l.iterator() );
+		public ExtendedIterator<String> newInstance() {
+			return WrappedIterator.create( objs.iterator() );
 		}
 
 		@Override
@@ -48,6 +43,11 @@ public class IteratorTest  extends Exten
 			return true;
 		}
 
+		@Override
+		public boolean isCopy() {
+			return false;
+		}
+
 	};
 
 	@Override