/* * 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 static org.junit.Assert.*; 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.graph.compose.Difference; import org.apache.jena.testing_framework.AbstractGraphProducer; import org.xenei.junit.contract.IProducer; @RunWith(ContractSuite.class) @ContractImpl(Difference.class) public class DifferenceTest { protected IProducer<Difference> graphProducer; public DifferenceTest() { graphProducer = new AbstractGraphProducer<Difference>() { private Map<Graph, Graph[]> map = new HashMap<Graph, Graph[]>(); @Override protected Difference createNewGraph() { Graph g1 = memGraph(); Graph g2 = memGraph(); Difference d = new Difference(g1, g2); map.put(d, new Graph[] { g1, g2 }); return d; } @Override public Graph[] getDependsOn(Graph d) { Graph[] dg = map.get(d); if (dg == null) { throw new IllegalStateException("graph not in map"); } return dg; } @Override public Graph[] getNotDependsOn(Graph g) { return new Graph[] { memGraph() }; } @Override protected void afterClose(Graph g) { map.remove(g); } }; } @Contract.Inject public final IProducer<Difference> getDifferenceTestProducer() { return graphProducer; } @ContractTest public void testDifference() { Graph g1 = graphWith("x R y; p R q"); Graph g2 = graphWith("r Foo s; x R y"); Graph d = new Difference(g1, g2); assertOmits("Difference", d, "x R y"); assertContains("Difference", "p R q", d); assertOmits("Difference", d, "r Foo s"); if (d.size() != 1) fail("oops: size of difference is not 1"); d.add(triple("cats eat cheese")); assertContains("Difference.L", "cats eat cheese", g1); assertOmits("Difference.R", g2, "cats eat cheese"); } }