/*
* 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.assembler.test;
import java.lang.reflect.Field;
import java.util.List;
import junit.framework.*;
import org.apache.jena.assembler.* ;
import org.apache.jena.assembler.assemblers.* ;
import org.apache.jena.ontology.* ;
import org.apache.jena.rdf.model.* ;
public class TestOntModelAssembler extends AssemblerTestBase
{
public TestOntModelAssembler( String name )
{ super( name ); }
public static TestSuite suite()
{
TestSuite result = new TestSuite();
result.addTestSuite( TestOntModelAssembler.class );
addParameterisedTests( result );
return result;
}
@Override protected Class<? extends Assembler> getAssemblerClass()
{ return OntModelAssembler.class; }
public void testOntModelAssemblerType()
{ testDemandsMinimalType( new OntModelAssembler(), JA.OntModel ); }
protected static void addParameterisedTests( TestSuite result )
{
Field [] fields = OntModelSpec.class.getFields();
for ( Field f : fields )
{
String name = f.getName();
if ( f.getType() == OntModelSpec.class )
{
try
{
result.addTest( createTest( (OntModelSpec) f.get( null ), name ) );
}
catch ( Exception e )
{
System.err.println( "WARNING: failed to create test for OntModelSpec " + name );
}
}
}
}
protected static Test createTest( final OntModelSpec spec, final String name )
{
return new TestOntModelAssembler( name )
{
@Override
public void runBare()
{
Assembler a = new OntModelAssembler();
Model m = (Model) a.open( new FixedObjectAssembler( spec ), resourceInModel( "x rdf:type ja:OntModel; x ja:ontModelSpec ja:" + name ) );
assertInstanceOf( OntModel.class, m );
OntModel om = (OntModel) m;
assertSame( spec, om.getSpecification() );
}
};
}
public void testAllDefaults()
{
Assembler a = new OntModelAssembler();
Model m = a.openModel( resourceInModel( "x rdf:type ja:OntModel" ) );
assertInstanceOf( OntModel.class, m );
OntModel om = (OntModel) m;
assertSame( OntModelSpec.OWL_MEM_RDFS_INF, om.getSpecification() );
}
public void testBaseModel()
{
final Model baseModel = model( "a P b" );
Assembler a = new OntModelAssembler();
Assembler aa = new ModelAssembler()
{
@Override
protected Model openEmptyModel( Assembler a, Resource root, Mode irrelevant )
{
assertEquals( resource( "y" ), root );
return baseModel;
}
};
Object m = a.open( aa, resourceInModel( "x rdf:type ja:OntModel; x ja:baseModel y" ) );
assertInstanceOf( OntModel.class, m );
OntModel om = (OntModel) m;
assertSame( baseModel.getGraph(), om.getBaseModel().getGraph() );
}
public void testSubModels()
{
final Model baseModel = model( "a P b" );
Assembler a = new OntModelAssembler();
Assembler aa = new ModelAssembler()
{
@Override
protected Model openEmptyModel( Assembler a, Resource root, Mode irrelevant )
{
assertEquals( resource( "y" ), root );
return baseModel;
}
};
Object m = a.open( aa, resourceInModel( "x rdf:type ja:OntModel; x ja:subModel y" ) );
assertInstanceOf( OntModel.class, m );
OntModel om = (OntModel) m;
List<OntModel> subModels = om.listSubModels().toList();
assertEquals( 1, subModels.size() );
assertSame( baseModel.getGraph(), subModels.get( 0 ).getBaseModel().getGraph() );
}
public void testDefaultDocumentManager()
{
Assembler a = new OntModelAssembler();
Resource root = resourceInModel( "x rdf:type ja:OntModel" );
OntModel om = (OntModel) a.openModel( root );
assertSame( OntDocumentManager.getInstance(), om.getDocumentManager() );
}
public void testUsesOntModelSpec()
{
Assembler a = new OntModelAssembler();
Resource root = resourceInModel( "x rdf:type ja:OntModel; x ja:ontModelSpec y" );
OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_MEM ) ;
Assembler mock = new NamedObjectAssembler( resource( "y" ), spec );
OntModel om = (OntModel) a.open( mock, root );
assertSame( spec, om.getSpecification() );
}
}