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/13 12:26:39 UTC

svn commit: r1531665 [2/2] - in /jena/Experimental/new-test/src/test/java/com/hp/hpl/jena: graph/ rdf/model/ rdf/model/temp/ testing_framework/ util/ util/iterator/

Modified: 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/rdf/model/temp/IteratorTest.java?rev=1531665&r1=1531664&r2=1531665&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/rdf/model/temp/IteratorTest.java Sun Oct 13 10:26:38 2013
@@ -1,24 +1,58 @@
 package com.hp.hpl.jena.rdf.model.temp;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.junit.runner.RunWith;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.Contract.Inject;
+import org.xenei.junit.contract.ContractImpl;
+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 {
+
+	IteratorProducer producer = new IteratorProducer() {
+		
+		Object[] objs = { "one", "two", "three", "four" };
+		
+		public List<Object> getList() {
+			return Arrays.asList( objs );
+		}
 
-public class IteratorTest extends AbstractIteratorTest {
-
-	AbstractModelProducer producer = new AbstractModelProducer() {
+		@Override
+		public ExtendedIterator<Object> newInstance() {
+			List<Object> l = new ArrayList<Object>( getList() );
+			return WrappedIterator.create( l.iterator() );
+		}
 
 		@Override
-		protected Model createNewModel() {
-			return ModelFactory.createDefaultModel();
+		public void cleanUp() {
+		}
+		
+		@Override
+		public boolean supportsDelete() {
+			return true;
 		}
 
 	};
 
 	@Override
-	public ModelProducerInterface getModelProducer() {
+	@Inject("com.hp.hpl.jena.util.iterator.ExtendedIteratorContractTests.IteratorProducer<%s>")
+	public IteratorProducer getIteratorProducer() {
 		return producer;
 	}
 }

Modified: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/temp/LiteralTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/temp/LiteralTest.java?rev=1531665&r1=1531664&r2=1531665&view=diff
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/temp/LiteralTest.java (original)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/rdf/model/temp/LiteralTest.java Sun Oct 13 10:26:38 2013
@@ -1,24 +1,91 @@
 package com.hp.hpl.jena.rdf.model.temp;
 
-import com.hp.hpl.jena.rdf.model.AbstractLiteralTest;
+import com.hp.hpl.jena.rdf.model.Literal;
+import com.hp.hpl.jena.rdf.model.LiteralContractTest;
 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;
 
-public class LiteralTest extends AbstractLiteralTest {
+public class LiteralTest extends LiteralContractTest {
 
-	AbstractModelProducer producer = new AbstractModelProducer() {
+	LiteralProducer producer = new LiteralProducer() {
+		private Model model;
+		
+		@Override
+		public Literal newInstance(String uri) {
+			return getModel().createLiteral(uri);
+		}
+
+		@Override
+		public Model getModel() {
+			if (model == null)
+			{
+				model = ModelFactory.createDefaultModel();
+			}
+			return model;
+		}
+
+		@Override
+		public Literal newInstance() {
+			return getModel().createLiteral("");
+		}
+
+		@Override
+		public void cleanUp() {
+			if (model != null)
+			{
+				model.close();
+				model = null;
+			}
+		}
+
+
+		@Override
+		public Literal newInstance(boolean b) {
+			return getModel().createTypedLiteral(b);
+		}
+
+		@Override
+		public Literal newInstance(char c) {
+			return getModel().createTypedLiteral(c);
+		}
 
 		@Override
-		protected Model createNewModel() {
-			return ModelFactory.createDefaultModel();
+		public Literal newInstance(double d) {
+			return getModel().createTypedLiteral(d);
 		}
 
+		@Override
+		public Literal newInstance(float f) {
+			return getModel().createTypedLiteral(f);
+		}
+
+		@Override
+		public Literal newInstance(int i) {
+			return getModel().createTypedLiteral(i);
+		}
+
+		@Override
+		public Literal newInstance(long l) {
+			return getModel().createTypedLiteral(l);
+		}
+
+
+		@Override
+		public Literal newInstance(String val, String lang) {
+			return getModel().createLiteral(val,lang);
+		}
+
+		@Override
+		public Literal newInstance(Object o) {
+			return getModel().createTypedLiteral( o );
+		}
 	};
 
 	@Override
-	public ModelProducerInterface getModelProducer() {
+	public LiteralProducer getLiteralProducer() {
 		return producer;
 	}
+
 }

Modified: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TestUtils.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TestUtils.java?rev=1531665&r1=1531664&r2=1531665&view=diff
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TestUtils.java (original)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/testing_framework/TestUtils.java Sun Oct 13 10:26:38 2013
@@ -218,6 +218,17 @@ public class TestUtils {
 		assertEquals(msg, o1.hashCode(), o2.hashCode());
 	}
 
+	/**
+	 * Tests o1.equals( o2 ) && o2.equals(o1) && o1.hashCode() == o2.hashCode()
+	 * 
+	 * @param o1
+	 * @param o2
+	 */
+	public static void assertNotEquivalent(String msg, Object o1, Object o2) {
+		assertNotEquals(msg, o1, o2);
+		assertNotEquals(msg, o2, o1);
+	}
+
 	private static URL getURL(String fn) {
 		URL u = TestUtils.class.getClassLoader().getResource(fn);
 		if (u == null) {

Added: 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=1531665&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/util/iterator/ExtendedIteratorContractTests.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/util/iterator/ExtendedIteratorContractTests.java Sun Oct 13 10:26:38 2013
@@ -0,0 +1,208 @@
+package com.hp.hpl.jena.util.iterator;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.jena.atlas.logging.Log;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.IProducer;
+
+@Contract(ExtendedIterator.class)
+public abstract class ExtendedIteratorContractTests {
+	
+	public static Logger LOG = LoggerFactory.getLogger(ExtendedIteratorContractTests.class);
+
+	public static interface IteratorProducer<T> {
+		
+		public ExtendedIterator<T> newInstance();
+		
+		public void cleanUp();
+
+		public List<T> getList();
+		
+		public boolean supportsDelete(); 
+	}
+
+	@Contract.Inject( "com.hp.hpl.jena.util.iterator.ExtendedIteratorContractTests.IteratorProducer<%s>")
+	abstract public IteratorProducer getIteratorProducer();
+
+	@Before
+	public final void beforeExtendedIteratorContractTests() {
+		List<Object> lst = getIteratorProducer().getList();
+		Set<Object> stmt = new HashSet<Object>();
+		stmt.addAll(lst);
+		if (stmt.size() == lst.size())
+		{
+			LOG.warn( "Iterator List should have duplicates for proper testing");
+		}
+	}
+
+	/**
+	 * Answer the next object, and remove it. Equivalent to next(); remove().
+	 */
+	@Test
+	public void testRemoveNext() {
+		List<Object> lst = getIteratorProducer().newInstance().toList();
+		ExtendedIterator<Object> iter = getIteratorProducer().newInstance();
+
+		try {
+			Object o = iter.removeNext();
+			if (!getIteratorProducer().supportsDelete()) {
+				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) );
+		} catch (UnsupportedOperationException e) {
+			if (getIteratorProducer().supportsDelete()) {
+				fail("Should not have thrown UnsupportedOperationException");
+			}
+		}
+
+	}
+
+	/**
+	 * return a new iterator which delivers all the elements of this iterator
+	 * and then all the elements of the other iterator. Does not copy either
+	 * iterator; they are consumed as the result iterator is consumed.
+	 */
+	@Test
+	public void testAndThen() {
+		ExtendedIterator<Object> iter = (ExtendedIterator<Object>) getIteratorProducer()
+				.newInstance();
+		ExtendedIterator<Object> iter2 = (ExtendedIterator<Object>) getIteratorProducer()
+				.newInstance();
+
+		iter = iter.andThen(iter2);
+		int sz = getIteratorProducer().getList().size();
+		List<Object> lst = new ArrayList<Object>();
+		for (int i = 0; i < sz; i++) {
+			lst.add( iter.next());
+		}
+		for (int i = 0; i < sz; i++) {
+			assertEquals(lst.get(i), iter.next());
+		}
+	}
+
+	/**
+	 * return a new iterator containing only the elements of _this_ which pass
+	 * the filter _f_. The order of the elements is preserved. Does not copy
+	 * _this_, which is consumed as the result is consumed.
+	 */
+	@Test
+	public void testfilterKeep() {
+		ExtendedIterator<?> iter = getIteratorProducer().newInstance()
+				.filterKeep(new OddFilter());
+		List<Object> lst = getIteratorProducer().newInstance().toList();
+		for (int j = 0; j < lst.size(); j++) {
+			if ((j & 1) == 1) {
+				assertEquals(lst.get(j), iter.next());
+			}
+		}
+
+	}
+
+	/**
+	 * return a new iterator containing only the elements of _this_ which are
+	 * rejected by the filter _f_. The order of the elements is preserved. Does
+	 * not copy _this_, which is consumed as the result is consumed.
+	 */
+	@Test
+	public void testfilterDrop()
+
+	{
+		ExtendedIterator<?> iter = getIteratorProducer().newInstance()
+				.filterDrop(new OddFilter());
+		List<Object> lst = getIteratorProducer().newInstance().toList();
+		for (int j = 0; j < lst.size(); j++) {
+			if ((j & 1) == 0) {
+				assertEquals(lst.get(j), iter.next());
+			}
+		}
+
+	}
+
+	/**
+	 * return a new iterator where each element is the result of applying _map1_
+	 * to the corresponding element of _this_. _this_ is not copied; it is
+	 * consumed as the result is consumed.
+	 */
+	@Test
+	public void textMapWith() {
+		ExtendedIterator<Integer> iter = getIteratorProducer().newInstance()
+				.mapWith(new IntMap<Object>());
+		List<Object> lst = getIteratorProducer().getList();
+
+		for (int j = 0; j < lst.size(); j++) {
+			assertEquals(Integer.valueOf(j), iter.next());
+		}
+		assertFalse(iter.hasNext());
+	}
+
+	/**
+	 * Answer a list of the [remaining] elements of this iterator, in order,
+	 * consuming this iterator.
+	 */
+	@Test
+	public void toList() {
+		List<Object> lst1 = getIteratorProducer().newInstance().toList();
+		List<Object> lst2 = new ArrayList<Object>(getIteratorProducer().getList());
+
+		assertEquals(lst2.size(), lst1.size());
+
+		for (Object o : lst1)
+		{
+			assertTrue( "missing value "+o, lst2.contains( o ));
+			lst2.remove( o );
+		}
+
+	}
+
+	/**
+	 * Answer a set of the [remaining] elements of this iterator, consuming this
+	 * iterator.
+	 */
+	@Test
+	public void testToSet() {
+		Set<?> set1 = getIteratorProducer().newInstance().toSet();
+		List<?> lst2 = getIteratorProducer().getList();
+
+		assertTrue(set1.containsAll(lst2));
+		assertTrue(lst2.containsAll(set1));
+	}
+
+	private static class OddFilter<X> extends Filter<X> {
+
+		boolean acceptFlg = true;
+
+		@Override
+		public boolean accept(X o) {
+			acceptFlg = !acceptFlg;
+			return acceptFlg;
+		}
+
+	}
+
+	private static class IntMap<Object> implements Map1<Object, Integer> {
+
+		int i = 0;
+
+		@Override
+		public Integer map1(Object o) {
+			return new Integer(i++);
+		}
+
+	}
+}
\ No newline at end of file

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