/* * 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.compose; import static org.apache.jena.testing_framework.GraphHelper.*; import java.util.HashMap; import java.util.Map; import org.junit.runner.RunWith; import org.xenei.junit.contract.Contract; import org.xenei.junit.contract.ContractImpl; import org.xenei.junit.contract.ContractSuite; import org.xenei.junit.contract.ContractTest; import org.apache.jena.graph.Graph; import org.apache.jena.testing_framework.AbstractGraphProducer; import org.xenei.junit.contract.IProducer; @RunWith(ContractSuite.class) @ContractImpl(Delta.class) public class DeltaTest { protected IProducer<Delta> graphProducer; public DeltaTest() { super(); graphProducer = new AbstractGraphProducer<Delta>() { private Map<Graph, Graph> map = new HashMap<Graph, Graph>(); @Override protected Delta createNewGraph() { Graph g = memGraph(); Delta d = new Delta(g); map.put(d, g); return d; } @Override public Graph[] getDependsOn(Graph d) { // Delta dl = (Delta)d; // Graph g = map.get(d); // if (g == null) { // throw new IllegalStateException("graph missing from map"); // } // return new Graph[] { g, (Graph)dl.getL(), (Graph)dl.getR() }; return null; } @Override public Graph[] getNotDependsOn(Graph g) { return new Graph[] { memGraph() }; } @Override protected void afterClose(Graph g) { map.remove(g); } }; } @Contract.Inject public final IProducer<Delta> getDeltaTestProducer() { return graphProducer; } @ContractTest public void testDelta() { Graph x = graphWith(getDeltaTestProducer().newInstance(), "x R y"); assertContains("x", "x R y", x); x.delete(triple("x R y")); assertOmits("x", x, "x R y"); /* */ Graph base = graphWith("x R y; p S q; I like cheese; pins pop balloons"); Delta delta = new Delta(base); assertContainsAll("Delta", delta, "x R y; p S q; I like cheese; pins pop balloons"); assertContainsAll("Base", base, "x R y; p S q; I like cheese; pins pop balloons"); /* */ delta.add(triple("pigs fly winglessly")); delta.delete(triple("I like cheese")); /* */ assertContainsAll("changed Delta", delta, "x R y; p S q; pins pop balloons; pigs fly winglessly"); assertOmits("changed delta", delta, "I like cheese"); assertContains("delta additions", "pigs fly winglessly", delta.getAdditions()); assertOmits("delta additions", delta.getAdditions(), "I like cheese"); assertContains("delta deletions", "I like cheese", delta.getDeletions()); assertOmits("delta deletions", delta.getDeletions(), "pigs fly winglessly"); } }