/* * 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.graph.test; import org.apache.jena.graph.impl.TripleStore ; /** AbstractTestTripleStore - post-hoc tests for TripleStores. */ public abstract class AbstractTestTripleStore extends GraphTestBase { public AbstractTestTripleStore( String name ) { super( name ); } /** Subclasses must over-ride to return a new empty TripleStore. */ public abstract TripleStore getTripleStore(); protected TripleStore store; @Override public void setUp() { store = getTripleStore(); } public void testEmpty() { testEmpty( store ); } public void testAddOne() { store.add( triple( "x P y" ) ); assertEquals( false, store.isEmpty() ); assertEquals( 1, store.size() ); assertEquals( true, store.contains( triple( "x P y" ) ) ); assertEquals( nodeSet( "x" ), iteratorToSet( store.listSubjects() ) ); assertEquals( nodeSet( "y" ), iteratorToSet( store.listObjects() ) ); assertEquals( tripleSet( "x P y" ), iteratorToSet( store.find( triple( "?? ?? ??" ) ) ) ); } public void testListSubjects() { someStatements( store ); assertEquals( nodeSet( "a x _z r q" ), iteratorToSet( store.listSubjects() ) ); } public void testListObjects() { someStatements( store ); assertEquals( nodeSet( "b y i _j _t 17" ), iteratorToSet( store.listObjects() ) ); } public void testContains() { someStatements( store ); assertEquals( true, store.contains( triple( "a P b" ) ) ); assertEquals( true, store.contains( triple( "x P y" ) ) ); assertEquals( true, store.contains( triple( "a P i" ) ) ); assertEquals( true, store.contains( triple( "_z Q _j" ) ) ); assertEquals( true, store.contains( triple( "x R y" ) ) ); assertEquals( true, store.contains( triple( "r S _t" ) ) ); assertEquals( true, store.contains( triple( "q R 17" ) ) ); /* */ assertEquals( false, store.contains( triple( "a P x" ) ) ); assertEquals( false, store.contains( triple( "a P _j" ) ) ); assertEquals( false, store.contains( triple( "b Z r" ) ) ); assertEquals( false, store.contains( triple( "_a P x" ) ) ); } public void testFind() { someStatements( store ); assertEquals( tripleSet( "" ), iteratorToSet( store.find( triple( "no such thing" ) ) ) ); assertEquals( tripleSet( "a P b; a P i" ), iteratorToSet( store.find( triple( "a P ??" ) ) ) ); assertEquals( tripleSet( "a P b; x P y; a P i" ), iteratorToSet( store.find( triple( "?? P ??" ) ) ) ); assertEquals( tripleSet( "x P y; x R y" ), iteratorToSet( store.find( triple( "x ?? y" ) ) ) ); assertEquals( tripleSet( "_z Q _j" ), iteratorToSet( store.find( triple( "?? ?? _j" ) ) ) ); assertEquals( tripleSet( "q R 17" ), iteratorToSet( store.find( triple( "?? ?? 17" ) ) ) ); } public void testRemove() { store.add( triple( "nothing before ace" ) ); store.add( triple( "ace before king" ) ); store.add( triple( "king before queen" ) ); store.delete( triple( "ace before king" ) ); assertEquals( tripleSet( "king before queen; nothing before ace" ), iteratorToSet( store.find( triple( "?? ?? ??" ) ) ) ); store.delete( triple( "king before queen" ) ); assertEquals( tripleSet( "nothing before ace" ), iteratorToSet( store.find( triple( "?? ?? ??" ) ) ) ); } public void someStatements( TripleStore ts ) { ts.add( triple( "a P b" ) ); ts.add( triple( "x P y" ) ); ts.add( triple( "a P i" ) ); ts.add( triple( "_z Q _j" ) ); ts.add( triple( "x R y" ) ); ts.add( triple( "r S _t" ) ); ts.add( triple( "q R 17" ) ); } public void testEmpty( TripleStore ts ) { assertEquals( true, ts.isEmpty() ); assertEquals( 0, ts.size() ); assertEquals( false, ts.find( triple( "?? ?? ??" ) ).hasNext() ); assertEquals( false, ts.listObjects().hasNext() ); assertEquals( false, ts.listSubjects().hasNext() ); assertFalse( ts.contains( triple( "x P y" ) ) ); } }