From: <tho...@us...> - 2011-07-12 17:39:42
|
Revision: 4898 http://bigdata.svn.sourceforge.net/bigdata/?rev=4898&view=rev Author: thompsonbry Date: 2011-07-12 17:39:31 +0000 (Tue, 12 Jul 2011) Log Message: ----------- The change described above fixes the original problem. However, it uncovered an issue where equals() was not symmetric when one bigdata value had a "dummy" IV. I have extended the test coverage for this, fixed the various concrete BigdatsValue classes and run through the test suite locally. See https://sourceforge.net/apps/trac/bigdata/ticket/348 Modified Paths: -------------- branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataBNodeImpl.java branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataLiteralImpl.java branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataURIImpl.java branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValue.java branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueImpl.java branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/test/com/bigdata/rdf/model/TestAll.java branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataBNodeImpl.java branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataLiteralImpl.java branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataURIImpl.java branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValue.java branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueImpl.java branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/model/TestAll.java Added Paths: ----------- branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/test/com/bigdata/rdf/model/TestEquals.java branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/model/TestEquals.java Modified: branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataBNodeImpl.java =================================================================== --- branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataBNodeImpl.java 2011-07-12 15:15:49 UTC (rev 4897) +++ branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataBNodeImpl.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -49,6 +49,7 @@ import org.openrdf.model.BNode; +import com.bigdata.rdf.internal.TermId; import com.bigdata.rdf.rio.StatementBuffer; import com.bigdata.rdf.spo.SPO; import com.bigdata.rdf.store.AbstractTripleStore; @@ -134,8 +135,8 @@ return false; if ((o instanceof BigdataValue) // - && getIV() != null// - && ((BigdataValue) o).getIV() != null// + && isRealIV() + && ((BigdataValue)o).isRealIV() && ((BigdataValue) o).getValueFactory() == getValueFactory()) { return getIV().equals(((BigdataValue) o).getIV()); Modified: branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataLiteralImpl.java =================================================================== --- branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataLiteralImpl.java 2011-07-12 15:15:49 UTC (rev 4897) +++ branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataLiteralImpl.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -175,8 +175,8 @@ return false; if ((o instanceof BigdataValue) // - && getIV() != null// - && ((BigdataValue) o).getIV() != null// + && isRealIV() + && ((BigdataValue)o).isRealIV() && ((BigdataValue) o).getValueFactory() == getValueFactory()) { return getIV().equals(((BigdataValue) o).getIV()); Modified: branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataURIImpl.java =================================================================== --- branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataURIImpl.java 2011-07-12 15:15:49 UTC (rev 4897) +++ branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataURIImpl.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -174,9 +174,8 @@ return false; if ((o instanceof BigdataValue) // - && getIV() != null// - && getIV().getTermId() != TermId.NULL - && ((BigdataValue) o).getIV() != null// + && isRealIV() + && ((BigdataValue)o).isRealIV() && ((BigdataValue) o).getValueFactory() == getValueFactory()) { return getIV().equals(((BigdataValue) o).getIV()); Modified: branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValue.java =================================================================== --- branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValue.java 2011-07-12 15:15:49 UTC (rev 4897) +++ branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValue.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -96,6 +96,13 @@ * value. */ public void setIV(IV iv); + + /** + * Return <code>true</code> if the {@link IV} is either is set to a "real" + * IV. Return <code>false</code> if the {@link IV} is either not set or is + * set to a "mock" or "dummy" {@link IV}. + */ + public boolean isRealIV(); /** * Clears the internal value to null. Modified: branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueImpl.java =================================================================== --- branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueImpl.java 2011-07-12 15:15:49 UTC (rev 4897) +++ branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueImpl.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -32,6 +32,7 @@ import com.bigdata.bop.IElement; import com.bigdata.rdf.internal.IV; import com.bigdata.rdf.internal.IVUtility; +import com.bigdata.rdf.internal.TermId; /** * Abstract base class for {@link BigdataValue} implementations. @@ -103,6 +104,18 @@ } + final public boolean isRealIV() { + + if (iv == null) + return false; + + if (iv.isTermId() && iv.getTermId() == TermId.NULL) + return false; + + return true; + + } + final public IV getIV() { return iv; Modified: branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/test/com/bigdata/rdf/model/TestAll.java =================================================================== --- branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/test/com/bigdata/rdf/model/TestAll.java 2011-07-12 15:15:49 UTC (rev 4897) +++ branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/test/com/bigdata/rdf/model/TestAll.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -64,6 +64,9 @@ // value factory test suite. suite.addTestSuite(TestFactory.class); + // test suite for Value.equals() + suite.addTestSuite(TestEquals.class); + // test suite for serialization semantics. suite.addTestSuite(TestBigdataValueSerialization.class); Added: branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/test/com/bigdata/rdf/model/TestEquals.java =================================================================== --- branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/test/com/bigdata/rdf/model/TestEquals.java (rev 0) +++ branches/BIGDATA_RELEASE_1_0_0/bigdata-rdf/src/test/com/bigdata/rdf/model/TestEquals.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -0,0 +1,250 @@ +package com.bigdata.rdf.model; + +import junit.framework.TestCase; + +import org.openrdf.model.BNode; +import org.openrdf.model.Literal; +import org.openrdf.model.URI; +import org.openrdf.model.ValueFactory; +import org.openrdf.model.impl.BNodeImpl; +import org.openrdf.model.impl.URIImpl; +import org.openrdf.model.impl.ValueFactoryImpl; +import org.openrdf.model.vocabulary.XMLSchema; + +import com.bigdata.rdf.internal.DummyIV; +import com.bigdata.rdf.internal.IV; +import com.bigdata.rdf.internal.TermId; +import com.bigdata.rdf.internal.VTE; + +/** + * Test suite for equals() semantics for {@link BigdataValue} implementations. + * Each test makes sure that two bigdata values are equals() if they have the + * same data, regardless of whether they have the same value factory. Note that + * two {@link BigdataValue}s for the same {@link ValueFactory} which have the + * same {@link IV} are compared on the basis of that {@link IV} (unless it is a + * "dummy" or "mock" IV). + */ +public class TestEquals extends TestCase { + + public TestEquals() { + + } + + public TestEquals(String name) { + super(name); + } + + public void test_equalsURI() { + + final BigdataValueFactory vf = BigdataValueFactoryImpl.getInstance(getName()); + + final BigdataValueFactory vf2 = BigdataValueFactoryImpl.getInstance(getName()+"2"); + + final BigdataURI v1 = vf.createURI("http://www.bigdata.com"); + + final BigdataURI v2 = vf.createURI("http://www.bigdata.com"); + + final URI v3 = new URIImpl("http://www.bigdata.com"); + + final BigdataURI v4 = vf2.createURI("http://www.bigdata.com"); + + assertTrue( v1 != v2 ); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + v2.setIV(DummyIV.INSTANCE); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + v1.setIV(new TermId<BigdataURI>(VTE.URI, 1)); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + } + + public void test_equalsLiteral() { + + doLiteralTest("bigdata", null/* datatype */, null/* languageCode */); + + doLiteralTest("bigdata", XMLSchema.STRING/* datatype */, null/* languageCode */); + + doLiteralTest("bigdata", null/* datatype */, "en"/* languageCode */); + + } + + private Literal createLiteral(ValueFactory f, final String label, + final URI datatype, final String languageCode) { + + if (datatype == null && languageCode == null) + return f.createLiteral(label); + + if (datatype == null) + return f.createLiteral(label, languageCode); + + return f.createLiteral(label, datatype); + + } + + private void doLiteralTest(final String label, final URI datatype, + final String languageCode) { + + final BigdataValueFactory vf = BigdataValueFactoryImpl + .getInstance(getName()); + + final BigdataValueFactory vf2 = BigdataValueFactoryImpl + .getInstance(getName() + "2"); + + final BigdataLiteral v1 = (BigdataLiteral) createLiteral(vf, label, + datatype, languageCode); + + final BigdataLiteral v2 = (BigdataLiteral) createLiteral(vf, label, + datatype, languageCode); + + final Literal v3 = createLiteral(new ValueFactoryImpl(), label, + datatype, languageCode); + + final BigdataLiteral v4 = (BigdataLiteral) createLiteral(vf2, label, + datatype, languageCode); + + assertTrue( v1 != v2 ); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + v2.setIV(DummyIV.INSTANCE); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + v1.setIV(new TermId<BigdataLiteral>(VTE.LITERAL, 1)); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + } + + public void test_equalsBNode() { + + final BigdataValueFactory vf = BigdataValueFactoryImpl.getInstance(getName()); + + final BigdataValueFactory vf2 = BigdataValueFactoryImpl.getInstance(getName()+"2"); + + final BigdataBNode v1 = vf.createBNode("bigdata"); + + final BigdataBNode v2 = vf.createBNode("bigdata"); + + final BNode v3 = new BNodeImpl("bigdata"); + + final BigdataBNode v4 = vf2.createBNode("bigdata"); + + assertTrue( v1 != v2 ); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + v2.setIV(DummyIV.INSTANCE); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + v1.setIV(new TermId<BigdataBNode>(VTE.BNODE, 1)); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + } + +} Modified: branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataBNodeImpl.java =================================================================== --- branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataBNodeImpl.java 2011-07-12 15:15:49 UTC (rev 4897) +++ branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataBNodeImpl.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -134,8 +134,8 @@ return false; if ((o instanceof BigdataValue) // - && getIV() != null// - && ((BigdataValue) o).getIV() != null// + && isRealIV() + && ((BigdataValue)o).isRealIV() && ((BigdataValue) o).getValueFactory() == getValueFactory()) { return getIV().equals(((BigdataValue) o).getIV()); Modified: branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataLiteralImpl.java =================================================================== --- branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataLiteralImpl.java 2011-07-12 15:15:49 UTC (rev 4897) +++ branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataLiteralImpl.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -175,8 +175,8 @@ return false; if ((o instanceof BigdataValue) // - && getIV() != null// - && ((BigdataValue) o).getIV() != null// + && isRealIV() + && ((BigdataValue)o).isRealIV() && ((BigdataValue) o).getValueFactory() == getValueFactory()) { return getIV().equals(((BigdataValue) o).getIV()); Modified: branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataURIImpl.java =================================================================== --- branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataURIImpl.java 2011-07-12 15:15:49 UTC (rev 4897) +++ branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataURIImpl.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -172,10 +172,8 @@ return false; if ((o instanceof BigdataValue) // - && getIV() != null// - && !getIV().isNullIV()// -// && getIV().getTermId() != TermId.NULL - && ((BigdataValue) o).getIV() != null// + && isRealIV() + && ((BigdataValue)o).isRealIV() && ((BigdataValue) o).getValueFactory() == getValueFactory()) { return getIV().equals(((BigdataValue) o).getIV()); Modified: branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValue.java =================================================================== --- branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValue.java 2011-07-12 15:15:49 UTC (rev 4897) +++ branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValue.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -108,6 +108,13 @@ */ public void setIV(IV iv); + /** + * Return <code>true</code> if the {@link IV} is either is set to a "real" + * IV. Return <code>false</code> if the {@link IV} is either not set or is + * set to a "mock" or "dummy" {@link IV}. + */ + public boolean isRealIV(); + /** * Clears the internal value to null. */ Modified: branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueImpl.java =================================================================== --- branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueImpl.java 2011-07-12 15:15:49 UTC (rev 4897) +++ branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueImpl.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -32,6 +32,7 @@ import com.bigdata.bop.IElement; import com.bigdata.rdf.internal.IV; import com.bigdata.rdf.internal.IVUtility; +import com.bigdata.rdf.internal.TermId; /** * Abstract base class for {@link BigdataValue} implementations. @@ -103,6 +104,18 @@ } + final public boolean isRealIV() { + + if (iv == null) + return false; + + if (iv.isNullIV()) + return false; + + return true; + + } + final public IV getIV() { return iv; Modified: branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/model/TestAll.java =================================================================== --- branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/model/TestAll.java 2011-07-12 15:15:49 UTC (rev 4897) +++ branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/model/TestAll.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -64,6 +64,9 @@ // value factory test suite. suite.addTestSuite(TestFactory.class); + // test suite for Value.equals() + suite.addTestSuite(TestEquals.class); + // test suite for serialization semantics. suite.addTestSuite(TestBigdataValueSerialization.class); Added: branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/model/TestEquals.java =================================================================== --- branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/model/TestEquals.java (rev 0) +++ branches/TERMS_REFACTOR_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/model/TestEquals.java 2011-07-12 17:39:31 UTC (rev 4898) @@ -0,0 +1,249 @@ +package com.bigdata.rdf.model; + +import junit.framework.TestCase; + +import org.openrdf.model.BNode; +import org.openrdf.model.Literal; +import org.openrdf.model.URI; +import org.openrdf.model.ValueFactory; +import org.openrdf.model.impl.BNodeImpl; +import org.openrdf.model.impl.URIImpl; +import org.openrdf.model.impl.ValueFactoryImpl; +import org.openrdf.model.vocabulary.XMLSchema; + +import com.bigdata.rdf.internal.IV; +import com.bigdata.rdf.internal.TermId; +import com.bigdata.rdf.internal.VTE; + +/** + * Test suite for equals() semantics for {@link BigdataValue} implementations. + * Each test makes sure that two bigdata values are equals() if they have the + * same data, regardless of whether they have the same value factory. Note that + * two {@link BigdataValue}s for the same {@link ValueFactory} which have the + * same {@link IV} are compared on the basis of that {@link IV} (unless it is a + * "dummy" or "mock" IV). + */ +public class TestEquals extends TestCase { + + public TestEquals() { + + } + + public TestEquals(String name) { + super(name); + } + + public void test_equalsURI() { + + final BigdataValueFactory vf = BigdataValueFactoryImpl.getInstance(getName()); + + final BigdataValueFactory vf2 = BigdataValueFactoryImpl.getInstance(getName()+"2"); + + final BigdataURI v1 = vf.createURI("http://www.bigdata.com"); + + final BigdataURI v2 = vf.createURI("http://www.bigdata.com"); + + final URI v3 = new URIImpl("http://www.bigdata.com"); + + final BigdataURI v4 = vf2.createURI("http://www.bigdata.com"); + + assertTrue( v1 != v2 ); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + v2.setIV(TermId.mockIV(VTE.URI)); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + v1.setIV(new TermId<BigdataURI>(VTE.URI, 1)); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + } + + public void test_equalsLiteral() { + + doLiteralTest("bigdata", null/* datatype */, null/* languageCode */); + + doLiteralTest("bigdata", XMLSchema.STRING/* datatype */, null/* languageCode */); + + doLiteralTest("bigdata", null/* datatype */, "en"/* languageCode */); + + } + + private Literal createLiteral(ValueFactory f, final String label, + final URI datatype, final String languageCode) { + + if (datatype == null && languageCode == null) + return f.createLiteral(label); + + if (datatype == null) + return f.createLiteral(label, languageCode); + + return f.createLiteral(label, datatype); + + } + + private void doLiteralTest(final String label, final URI datatype, + final String languageCode) { + + final BigdataValueFactory vf = BigdataValueFactoryImpl + .getInstance(getName()); + + final BigdataValueFactory vf2 = BigdataValueFactoryImpl + .getInstance(getName() + "2"); + + final BigdataLiteral v1 = (BigdataLiteral) createLiteral(vf, label, + datatype, languageCode); + + final BigdataLiteral v2 = (BigdataLiteral) createLiteral(vf, label, + datatype, languageCode); + + final Literal v3 = createLiteral(new ValueFactoryImpl(), label, + datatype, languageCode); + + final BigdataLiteral v4 = (BigdataLiteral) createLiteral(vf2, label, + datatype, languageCode); + + assertTrue( v1 != v2 ); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + v2.setIV(TermId.mockIV(VTE.LITERAL)); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + v1.setIV(new TermId<BigdataLiteral>(VTE.LITERAL, 1)); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + } + + public void test_equalsBNode() { + + final BigdataValueFactory vf = BigdataValueFactoryImpl.getInstance(getName()); + + final BigdataValueFactory vf2 = BigdataValueFactoryImpl.getInstance(getName()+"2"); + + final BigdataBNode v1 = vf.createBNode("bigdata"); + + final BigdataBNode v2 = vf.createBNode("bigdata"); + + final BNode v3 = new BNodeImpl("bigdata"); + + final BigdataBNode v4 = vf2.createBNode("bigdata"); + + assertTrue( v1 != v2 ); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + v2.setIV(TermId.mockIV(VTE.BNODE)); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + v1.setIV(new TermId<BigdataBNode>(VTE.BNODE, 1)); + + assertTrue(v1.equals(v2)); + assertTrue(v2.equals(v1)); + + assertTrue(v3.equals(v1)); + assertTrue(v3.equals(v2)); + assertTrue(v1.equals(v3)); + assertTrue(v2.equals(v3)); + + assertTrue(v1.equals(v4)); + assertTrue(v4.equals(v1)); + assertTrue(v2.equals(v4)); + assertTrue(v4.equals(v2)); + + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |