/* * 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.rdf.model.test; import java.util.Arrays; import java.util.List; import org.apache.jena.rdf.model.Model ; import org.apache.jena.rdf.model.Statement ; import org.apache.jena.rdf.model.test.helpers.ModelHelper ; import org.apache.jena.rdf.model.test.helpers.TestingModelFactory ; import org.apache.jena.shared.PrefixMapping ; import org.junit.Assert; /** * Tests of the Model-level bulk update API. */ public class TestModelBulkUpdate extends AbstractModelTestBase { public TestModelBulkUpdate( final TestingModelFactory modelFactory, final String name ) { super(modelFactory, name); } public void addReification( final Model m, final String tag, final String statement ) { m.createReifiedStatement(tag, ModelHelper.statement(m, statement)); } public void testBulkByModel() { Assert.assertEquals("precondition: model must be empty", 0, model.size()); final Model A = ModelHelper.modelWithStatements(this, "clouds offer rain; trees offer shelter"); final Model B = ModelHelper.modelWithStatements(this, "x R y; y Q z; z P x"); model.add(A); ModelHelper.assertIsoModels(A, model); model.add(B); model.remove(A); ModelHelper.assertIsoModels(B, model); model.remove(B); Assert.assertEquals("", 0, model.size()); } public void testBulkByModelReifying() { final Model m = ModelHelper.modelWithStatements(this, "a P b"); addReification(m, "x", "S P O"); addReification(m, "a", "x R y"); final Model target = ModelHelper.modelWithStatements(this, ""); target.add(m); target.setNsPrefixes(PrefixMapping.Standard); ModelHelper.assertIsoModels(m, target); } public void testBulkDeleteByModelReifying() { final Model target = ModelHelper.modelWithStatements(this, ""); addReification(target, "x", "S P O"); addReification(target, "y", "A P B"); final Model remove = ModelHelper.modelWithStatements(this, ""); addReification(remove, "y", "A P B"); final Model answer = ModelHelper.modelWithStatements(this, ""); addReification(answer, "x", "S P O"); target.remove(remove); ModelHelper.assertIsoModels(answer, target); } public void testBulkRemoveSelf() { final Model m = ModelHelper.modelWithStatements(this, "they sing together; he sings alone"); m.remove(m); Assert.assertEquals("", 0, m.size()); } public void testContains( final Model m, final List<Statement> statements ) { for ( Statement statement : statements ) { Assert.assertTrue( "it should be here", m.contains( statement ) ); } } public void testContains( final Model m, final Statement[] statements ) { for (final Statement statement : statements) { Assert.assertTrue("it should be here", m.contains(statement)); } } public void testMBU() { final Statement[] sArray = ModelHelper.statements(model, "moon orbits earth; earth orbits sun"); final List<Statement> sList = Arrays.asList(ModelHelper.statements( model, "I drink tea; you drink coffee")); model.add(sArray); testContains(model, sArray); model.add(sList); testContains(model, sList); testContains(model, sArray); /* */ model.remove(sArray); testOmits(model, sArray); testContains(model, sList); model.remove(sList); testOmits(model, sArray); testOmits(model, sList); } public void testOmits( final Model m, final List<Statement> statements ) { for ( Statement statement : statements ) { Assert.assertFalse( "it should not be here", m.contains( statement ) ); } } public void testOmits( final Model m, final Statement[] statements ) { for (final Statement statement : statements) { Assert.assertFalse("it should not be here", m.contains(statement)); } } }