blob: f3e881e1d33c8d758fd777fb483d5765689fc0e9 [file] [log] [blame]
/*
* 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.tdb.store;
import java.util.Iterator ;
import org.apache.jena.atlas.junit.BaseTest ;
import org.apache.jena.graph.Node ;
import org.apache.jena.graph.Triple ;
import org.apache.jena.sparql.util.NodeFactoryExtra ;
import org.apache.jena.tdb.base.file.Location ;
import org.apache.jena.tdb.setup.DatasetBuilderStd ;
import org.apache.jena.tdb.store.DatasetGraphTDB ;
import org.apache.jena.tdb.store.TripleTable ;
import org.apache.log4j.Level ;
import org.apache.log4j.Logger ;
import org.junit.Test ;
public class TestTripleTable extends BaseTest
{
static {
Logger.getLogger("org.apache.jena.tdb.info").setLevel(Level.WARN) ;
Logger.getLogger("org.apache.jena.tdb.exec").setLevel(Level.WARN) ;
}
private static void add(TripleTable table, Node s, Node p, Node o)
{
table.add(new Triple(s,p,o)) ;
}
private static void notMatch(TripleTable table, Node s, Node p, Node o)
{
Iterator<Triple> iter = table.find(s, p, o) ;
assertNotNull(iter) ;
assertFalse(iter.hasNext()) ;
}
private static void match(TripleTable table, Node s, Node p, Node o)
{
Iterator<Triple> iter = table.find(s, p, o) ;
assertNotNull(iter) ;
assertTrue(iter.hasNext()) ;
}
private static void contains(TripleTable table, Node s, Node p, Node o)
{
Iterator<Triple> iter = table.find(s, p, o) ;
assertNotNull(iter) ;
assertTrue(iter.hasNext()) ;
assertEquals(new Triple(s, p, o), iter.next()) ;
assertFalse(iter.hasNext()) ;
}
static Node n1 = NodeFactoryExtra.parseNode("<http://example/n1>") ;
static Node n2 = NodeFactoryExtra.parseNode("<http://example/n2>") ;
static Node n3 = NodeFactoryExtra.parseNode("<http://example/n3>") ;
static Node n4 = NodeFactoryExtra.parseNode("<http://example/n4>") ;
static Node n5 = NodeFactoryExtra.parseNode("<http://example/n5>") ;
static Node n6 = NodeFactoryExtra.parseNode("<http://example/n6>") ;
@Test public void createTripleTable1()
{
TripleTable table = createTripleTableMem() ;
notMatch(table, n1, n2, n3) ;
}
@Test public void add1()
{
TripleTable table = createTripleTableMem() ;
table.add(new Triple(n1,n2,n3)) ;
}
@Test public void find1()
{
TripleTable table = createTripleTableMem() ;
add(table, n1, n2, n3) ;
contains(table, n1, n2, n3) ;
notMatch(table, n1, n2, n4) ;
}
@Test public void find2()
{
TripleTable table = createTripleTableMem() ;
add(table, n1, n2, n3) ;
add(table, n1, n2, n4) ;
contains(table, n1, n2, n3) ;
contains(table, n1, n2, n4) ;
}
@Test public void find3()
{
TripleTable table = createTripleTableMem() ;
add(table, n1, n2, n3) ;
add(table, n4, n5, n6) ;
contains(table, n1, n2, n3) ;
contains(table, n4, n5, n6) ;
notMatch(table, n1, n2, n4) ;
}
@Test public void find4()
{
TripleTable table = createTripleTableMem() ;
add(table, n1, n2, n3) ;
add(table, n4, n5, n6) ;
match(table, Node.ANY, n2, n3) ;
match(table, null, n2, n3) ;
match(table, null, null, null) ;
}
private TripleTable createTripleTableMem()
{
DatasetGraphTDB ds = DatasetBuilderStd.create(Location.mem()) ;
return ds.getTripleTable() ;
}
}