/*
* 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 java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import org.apache.jena.datatypes.RDFDatatype ;
import org.apache.jena.datatypes.xsd.XSDDatatype ;
import org.apache.jena.rdf.model.* ;
import org.junit.Assert;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class TestResourceFactory extends TestCase
{
class TestFactory implements ResourceFactory.Interface
{
Resource resource;
TestFactory( final Resource r )
{
resource = r;
}
@Override
public Literal createLangLiteral( final String string, final String lang )
{
return null;
}
@Override
public Literal createStringLiteral( final String string )
{
return null;
}
@Override
public Property createProperty( final String uriref )
{
return null;
}
@Override
public Property createProperty( final String namespace,
final String localName )
{
return null;
}
@Override
public Resource createResource()
{
return resource;
}
@Override
public Resource createResource( final String uriref )
{
return null;
}
@Override
public Statement createStatement( final Resource subject,
final Property predicate, final RDFNode object )
{
return null;
}
@Override
public Literal createTypedLiteral( final Object value )
{
return null;
}
@Override
public Literal createTypedLiteral( final String string,
final RDFDatatype datatype )
{
return null;
}
}
static final String uri1 = "http://example.org/example#a1";
static final String uri2 = "http://example.org/example#a2";
public static TestSuite suite()
{
return new TestSuite(TestResourceFactory.class);
}
public TestResourceFactory( final String name )
{
super(name);
}
public void testCreateLiteral()
{
final Literal l = ResourceFactory.createPlainLiteral("lex");
Assert.assertTrue(l.getLexicalForm().equals("lex"));
Assert.assertTrue(l.getLanguage().equals(""));
Assert.assertNull(l.getDatatype());
Assert.assertNull(l.getDatatypeURI());
}
public void testCreateProperty()
{
final Property p1 = ResourceFactory
.createProperty(TestResourceFactory.uri1);
Assert.assertTrue(p1.getURI().equals(TestResourceFactory.uri1));
final Property p2 = ResourceFactory.createProperty(
TestResourceFactory.uri1, "2");
Assert.assertTrue(p2.getURI().equals(TestResourceFactory.uri1 + "2"));
}
public void testCreateResource()
{
Resource r1 = ResourceFactory.createResource();
Assert.assertTrue(r1.isAnon());
final Resource r2 = ResourceFactory.createResource();
Assert.assertTrue(r2.isAnon());
Assert.assertTrue(!r1.equals(r2));
r1 = ResourceFactory.createResource(TestResourceFactory.uri1);
Assert.assertTrue(r1.getURI().equals(TestResourceFactory.uri1));
}
public void testCreateStatement()
{
final Resource s = ResourceFactory.createResource();
final Property p = ResourceFactory
.createProperty(TestResourceFactory.uri2);
final Resource o = ResourceFactory.createResource();
final Statement stmt = ResourceFactory.createStatement(s, p, o);
Assert.assertTrue(stmt.getSubject().equals(s));
Assert.assertTrue(stmt.getPredicate().equals(p));
Assert.assertTrue(stmt.getObject().equals(o));
}
public void testCreateTypedLiteral()
{
final Literal l = ResourceFactory.createTypedLiteral("22",
XSDDatatype.XSDinteger);
Assert.assertTrue(l.getLexicalForm().equals("22"));
Assert.assertTrue(l.getLanguage().equals(""));
Assert.assertTrue(l.getDatatype() == XSDDatatype.XSDinteger);
Assert.assertTrue(l.getDatatypeURI().equals(
XSDDatatype.XSDinteger.getURI()));
}
public void testCreateTypedLiteralObject()
{
final Literal l = ResourceFactory.createTypedLiteral( 22 );
Assert.assertEquals("22", l.getLexicalForm());
Assert.assertEquals("", l.getLanguage());
Assert.assertEquals(XSDDatatype.XSDint, l.getDatatype());
}
public void testCreateTypedLiteralOverload()
{
final Calendar testCal = new GregorianCalendar(
TimeZone.getTimeZone("GMT"));
testCal.set(1999, 4, 30, 15, 9, 32);
testCal.set(Calendar.MILLISECOND, 0); // ms field can be undefined on
// Linux
final Literal lc = ResourceFactory.createTypedLiteral(testCal);
Assert.assertEquals("calendar overloading test", ResourceFactory
.createTypedLiteral("1999-05-30T15:09:32Z",
XSDDatatype.XSDdateTime), lc);
}
public void testGetInstance()
{
ResourceFactory.getInstance();
final Resource r1 = ResourceFactory.createResource();
Assert.assertTrue(r1.isAnon());
final Resource r2 = ResourceFactory.createResource();
Assert.assertTrue(r2.isAnon());
Assert.assertTrue(!r1.equals(r2));
}
public void testSetInstance()
{
final Resource r = ResourceFactory.createResource();
final ResourceFactory.Interface oldFactory = ResourceFactory
.getInstance();
final ResourceFactory.Interface factory = new TestFactory(r);
try
{
ResourceFactory.setInstance(factory);
Assert.assertTrue(factory.equals(ResourceFactory.getInstance()));
Assert.assertTrue(ResourceFactory.createResource() == r);
}
finally
{
ResourceFactory.setInstance(oldFactory);
}
}
}