org.openrdf.sail.RDFNotifyingStoreTest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sesame-store-testsuite Show documentation
Show all versions of sesame-store-testsuite Show documentation
Test suite for SAIL and Repository API
/*
* Licensed to Aduna under one or more contributor license agreements.
* See the NOTICE.txt file distributed with this work for additional
* information regarding copyright ownership.
*
* Aduna licenses this file to you under the terms of the Aduna BSD
* License (the "License"); you may not use this file except in compliance
* with the License. See the LICENSE.txt file distributed with this work
* for the full License.
*
* 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.openrdf.sail;
import static org.junit.Assert.*;
import org.junit.Test;
import org.openrdf.model.vocabulary.RDF;
import org.openrdf.model.vocabulary.RDFS;
/**
* A JUnit test for testing Sail implementations that store RDF data. This is
* purely a test for data storage and retrieval which assumes that no
* inferencing or whatsoever is performed. This is an abstract class that should
* be extended for specific Sail implementations.
*/
public abstract class RDFNotifyingStoreTest extends RDFStoreTest implements SailChangedListener {
/*-----------*
* Variables *
*-----------*/
private int removeEventCount;
private int addEventCount;
/*---------*
* Methods *
*---------*/
/**
* Gets an instance of the Sail that should be tested. The returned
* repository should already have been initialized.
*
* @return an initialized Sail.
* @throws SailException
* If the initialization of the repository failed.
*/
@Override
protected abstract NotifyingSail createSail()
throws SailException;
@Override
public void setUp()
throws Exception
{
super.setUp();
// set self as listener
((NotifyingSail) sail).addSailChangedListener(this);
}
@Test
public void testNotifyingRemoveAndClear()
throws Exception
{
// Add some data to the repository
con.begin();
con.addStatement(painter, RDF.TYPE, RDFS.CLASS);
con.addStatement(painting, RDF.TYPE, RDFS.CLASS);
con.addStatement(picasso, RDF.TYPE, painter, context1);
con.addStatement(guernica, RDF.TYPE, painting, context1);
con.addStatement(picasso, paints, guernica, context1);
con.commit();
// Test removal of statements
con.begin();
con.removeStatements(painting, RDF.TYPE, RDFS.CLASS);
con.commit();
assertEquals("Repository should contain 4 statements in total", 4, countAllElements());
assertEquals("Named context should contain 3 statements", 3, countContext1Elements());
assertEquals("Statement (Painting, type, Class) should no longer be in the repository", 0,
countQueryResults("select 1 from {ex:Painting} rdf:type {rdfs:Class}"));
con.begin();
con.removeStatements(null, null, null, context1);
con.commit();
assertEquals("Repository should contain 1 statement in total", 1, countAllElements());
assertEquals("Named context should be empty", 0, countContext1Elements());
con.begin();
con.clear();
con.commit();
assertEquals("Repository should no longer contain any statements", 0, countAllElements());
// test if event listener works properly.
assertEquals("There should have been 1 event in which statements were added", 1, addEventCount);
assertEquals("There should have been 3 events in which statements were removed", 3, removeEventCount);
}
@Override
public void sailChanged(SailChangedEvent event) {
if (event.statementsAdded()) {
addEventCount++;
}
if (event.statementsRemoved()) {
removeEventCount++;
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy