/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jena.rdf.model.test;
import org.apache.jena.rdf.model.* ;
import org.apache.jena.rdf.model.test.helpers.TestingModelFactory ;
import org.apache.jena.test.JenaTestBase ;
import org.apache.jena.vocabulary.RDF ;
import org.junit.Assert;
public class TestStatementMethods extends AbstractModelTestBase
{
protected Resource r;
public TestStatementMethods( final TestingModelFactory modelFactory,
final String name )
{
super(modelFactory, name);
}
protected void checkChangedStatementSP( final Statement changed )
{
Assert.assertEquals(r, changed.getSubject());
Assert.assertEquals(RDF.value, changed.getPredicate());
}
protected void checkCorrectStatements( final Statement sTrue,
final Statement changed )
{
Assert.assertFalse(model.contains(sTrue));
Assert.assertFalse(model.containsLiteral(r, RDF.value, true));
Assert.assertTrue(model.contains(changed));
}
protected Statement loadInitialStatement()
{
final Statement sTrue = model
.createLiteralStatement(r, RDF.value, true);
model.add(sTrue);
return sTrue;
}
@Override
public void setUp()
{
super.setUp();
r = model.createResource();
}
public void testAlt()
{
final Alt tvAlt = model.createAlt();
Assert.assertEquals(tvAlt, model.createStatement(r, RDF.value, tvAlt)
.getAlt());
}
public void testBag()
{
final Bag tvBag = model.createBag();
Assert.assertEquals(tvBag, model.createStatement(r, RDF.value, tvBag)
.getBag());
}
public void testBoolean()
{
final Statement s = model.createLiteralStatement(r, RDF.value, true);
Assert.assertEquals(model.createTypedLiteral(true), s.getObject());
Assert.assertEquals(true, s.getBoolean());
}
public void testByte()
{
final Statement s = model.createLiteralStatement(r, RDF.value,
AbstractModelTestBase.tvByte);
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvByte),
s.getObject());
Assert.assertEquals(AbstractModelTestBase.tvByte, s.getLong());
}
public void testChangeObjectBoolean()
{
final Statement sTrue = loadInitialStatement();
final Statement sFalse = sTrue.changeLiteralObject(false);
checkChangedStatementSP(sFalse);
Assert.assertEquals(model.createTypedLiteral(false), sFalse.getObject());
Assert.assertEquals(false, sFalse.getBoolean());
checkCorrectStatements(sTrue, sFalse);
Assert.assertTrue(model.containsLiteral(r, RDF.value, false));
}
public void testChangeObjectByte()
{
final Statement sTrue = loadInitialStatement();
final Statement changed = sTrue
.changeLiteralObject(AbstractModelTestBase.tvByte);
checkChangedStatementSP(changed);
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvByte),
changed.getObject());
Assert.assertEquals(AbstractModelTestBase.tvByte, changed.getByte());
checkCorrectStatements(sTrue, changed);
Assert.assertTrue(model.containsLiteral(r, RDF.value,
AbstractModelTestBase.tvByte));
}
public void testChangeObjectChar()
{
final Statement sTrue = loadInitialStatement();
final Statement changed = sTrue
.changeLiteralObject(AbstractModelTestBase.tvChar);
checkChangedStatementSP(changed);
Assert.assertEquals(AbstractModelTestBase.tvChar, changed.getChar());
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvChar),
changed.getObject());
checkCorrectStatements(sTrue, changed);
Assert.assertTrue(model.containsLiteral(r, RDF.value,
AbstractModelTestBase.tvChar));
}
public void testChangeObjectDouble()
{
final Statement sTrue = loadInitialStatement();
final Statement changed = sTrue
.changeLiteralObject(AbstractModelTestBase.tvDouble);
checkChangedStatementSP(changed);
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvDouble),
changed.getObject());
Assert.assertEquals(AbstractModelTestBase.tvDouble,
changed.getDouble(), AbstractModelTestBase.dDelta);
checkCorrectStatements(sTrue, changed);
Assert.assertTrue(model.containsLiteral(r, RDF.value,
AbstractModelTestBase.tvDouble));
}
public void testChangeObjectFloat()
{
final Statement sTrue = loadInitialStatement();
final Statement changed = sTrue
.changeLiteralObject(AbstractModelTestBase.tvFloat);
checkChangedStatementSP(changed);
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvFloat),
changed.getObject());
Assert.assertEquals(AbstractModelTestBase.tvFloat, changed.getFloat(),
AbstractModelTestBase.fDelta);
checkCorrectStatements(sTrue, changed);
Assert.assertTrue(model.containsLiteral(r, RDF.value,
AbstractModelTestBase.tvFloat));
}
public void testChangeObjectInt()
{
final Statement sTrue = loadInitialStatement();
final Statement changed = sTrue
.changeLiteralObject(AbstractModelTestBase.tvInt);
checkChangedStatementSP(changed);
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvInt),
changed.getObject());
Assert.assertEquals(AbstractModelTestBase.tvInt, changed.getInt());
checkCorrectStatements(sTrue, changed);
Assert.assertTrue(model.containsLiteral(r, RDF.value,
AbstractModelTestBase.tvInt));
}
public void testChangeObjectLiteral()
{
final Statement sTrue = loadInitialStatement();
model.remove(sTrue);
Assert.assertFalse(model.contains(sTrue));
Assert.assertFalse(model.containsLiteral(r, RDF.value, true));
}
// public void testResObj()
// {
// Resource tvResObj = model.createResource( new ResTestObjF() );
// assertEquals( tvResObj, model.createStatement( r, RDF.value, tvResObj
// ).getResource() );
// }
// public void testLitObj()
// {
// assertEquals( tvLitObj, model.createLiteralStatement( r, RDF.value,
// tvLitObj ).getObject( new LitTestObjF() ) );
// }
public void testChangeObjectLong()
{
final Statement sTrue = loadInitialStatement();
final Statement changed = sTrue
.changeLiteralObject(AbstractModelTestBase.tvLong);
checkChangedStatementSP(changed);
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvLong),
changed.getObject());
Assert.assertEquals(AbstractModelTestBase.tvLong, changed.getLong());
checkCorrectStatements(sTrue, changed);
Assert.assertTrue(model.containsLiteral(r, RDF.value,
AbstractModelTestBase.tvLong));
}
public void testChangeObjectShort()
{
final Statement sTrue = loadInitialStatement();
final Statement changed = sTrue
.changeLiteralObject(AbstractModelTestBase.tvShort);
checkChangedStatementSP(changed);
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvShort),
changed.getObject());
Assert.assertEquals(AbstractModelTestBase.tvShort, changed.getShort());
checkCorrectStatements(sTrue, changed);
Assert.assertTrue(model.containsLiteral(r, RDF.value,
AbstractModelTestBase.tvShort));
}
public void testChangeObjectString()
{
final Statement sTrue = loadInitialStatement();
final Statement changed = sTrue
.changeObject(AbstractModelTestBase.tvString);
checkChangedStatementSP(changed);
Assert.assertEquals(AbstractModelTestBase.tvString, changed.getString());
checkCorrectStatements(sTrue, changed);
Assert.assertTrue(model.contains(r, RDF.value,
AbstractModelTestBase.tvString));
}
public void testChangeObjectStringWithLanguage()
{
final String lang = "en";
final Statement sTrue = loadInitialStatement();
final Statement changed = sTrue.changeObject(
AbstractModelTestBase.tvString, lang);
checkChangedStatementSP(changed);
Assert.assertEquals(AbstractModelTestBase.tvString, changed.getString());
Assert.assertEquals(lang, changed.getLanguage());
checkCorrectStatements(sTrue, changed);
Assert.assertTrue(model.contains(r, RDF.value,
AbstractModelTestBase.tvString, lang));
}
public void testChangeObjectYByte()
{
final Statement sTrue = loadInitialStatement();
final Statement changed = sTrue
.changeLiteralObject(AbstractModelTestBase.tvByte);
checkChangedStatementSP(changed);
Assert.assertEquals(AbstractModelTestBase.tvByte, changed.getByte());
checkCorrectStatements(sTrue, changed);
Assert.assertTrue(model.containsLiteral(r, RDF.value,
AbstractModelTestBase.tvByte));
}
public void testChar()
{
final Statement s = model.createLiteralStatement(r, RDF.value,
AbstractModelTestBase.tvChar);
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvChar),
s.getObject());
Assert.assertEquals(AbstractModelTestBase.tvChar, s.getChar());
}
public void testDouble()
{
final Statement s = model.createLiteralStatement(r, RDF.value,
AbstractModelTestBase.tvDouble);
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvDouble),
s.getObject());
Assert.assertEquals(AbstractModelTestBase.tvDouble, s.getDouble(),
AbstractModelTestBase.dDelta);
}
public void testFloat()
{
final Statement s = model.createLiteralStatement(r, RDF.value,
AbstractModelTestBase.tvFloat);
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvFloat),
s.getObject());
Assert.assertEquals(AbstractModelTestBase.tvFloat, s.getFloat(),
AbstractModelTestBase.fDelta);
}
public void testGetLiteralFailure()
{
try
{
model.createStatement(r, RDF.value, r).getLiteral();
Assert.fail("should trap non-literal object");
}
catch (final LiteralRequiredException e)
{
JenaTestBase.pass();
}
}
public void testGetResource()
{
Assert.assertEquals(r, model.createStatement(r, RDF.value, r)
.getResource());
}
public void testGetResourceFailure()
{
try
{
model.createLiteralStatement(r, RDF.value, false).getResource();
Assert.fail("should trap non-resource object");
}
catch (final ResourceRequiredException e)
{
JenaTestBase.pass();
}
}
public void testGetTrueBoolean()
{
Assert.assertEquals(true,
model.createLiteralStatement(r, RDF.value, true).getLiteral()
.getBoolean());
}
public void testInt()
{
final Statement s = model.createLiteralStatement(r, RDF.value,
AbstractModelTestBase.tvInt);
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvInt),
s.getObject());
Assert.assertEquals(AbstractModelTestBase.tvInt, s.getInt());
}
// public void testChangeObjectResObject()
// {
// Resource tvResObj = model.createResource( new ResTestObjF() );
// Statement sTrue = loadInitialStatement();
// Statement changed = sTrue.changeObject( tvResObj );
// checkChangedStatementSP( changed );
// assertEquals( tvResObj, changed.getResource() );
// checkCorrectStatements( sTrue, changed );
// assertTrue( model.contains( r, RDF.value, tvResObj ) );
// }
public void testLong()
{
final Statement s = model.createLiteralStatement(r, RDF.value,
AbstractModelTestBase.tvLong);
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvLong),
s.getObject());
Assert.assertEquals(AbstractModelTestBase.tvLong, s.getLong());
}
public void testSeq()
{
final Seq tvSeq = model.createSeq();
Assert.assertEquals(tvSeq, model.createStatement(r, RDF.value, tvSeq)
.getSeq());
}
public void testShort()
{
final Statement s = model.createLiteralStatement(r, RDF.value,
AbstractModelTestBase.tvShort);
Assert.assertEquals(
model.createTypedLiteral(AbstractModelTestBase.tvShort),
s.getObject());
Assert.assertEquals(AbstractModelTestBase.tvShort, s.getShort());
}
public void testString()
{
Assert.assertEquals(AbstractModelTestBase.tvString, model
.createStatement(r, RDF.value, AbstractModelTestBase.tvString)
.getString());
}
public void testStringWithLanguage()
{
final String lang = "fr";
Assert.assertEquals(
AbstractModelTestBase.tvString,
model.createStatement(r, RDF.value,
AbstractModelTestBase.tvString, lang).getString());
Assert.assertEquals(
lang,
model.createStatement(r, RDF.value,
AbstractModelTestBase.tvString, lang).getLanguage());
}
}