/* * 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() ; } }