/** * 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.sparql.algebra; import java.util.Arrays ; import java.util.Collection ; import java.util.HashSet ; import java.util.List ; import org.apache.jena.atlas.junit.BaseTest ; import org.apache.jena.sparql.algebra.Op ; import org.apache.jena.sparql.algebra.OpVars ; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.sse.SSE ; import org.junit.Test ; public class TestOpVars extends BaseTest { @Test public void opvars_01() { visible("(bgp (?s :p ?o))", "s", "o") ; } @Test public void opvars_02() { visible("(leftjoin (bgp (?s :p ?o)) (bgp (?s1 :p ?o1)) )", "s1", "o1", "s", "o") ; } @Test public void opvars_03() { visible("(leftjoin (bgp (?s :p ?o)) (bgp (?s :p ?o)) )", "s", "o") ; } @Test public void opvars_04() { visible("(project (?s) (bgp(?s :p ?o)))", "s") ; } @Test public void opvars_05() { visible("(minus (bgp (?s :p ?o)) (bgp (?s1 :p ?o1)) )", "s", "o") ; } @Test public void opvars_06() { visible("(join (project (?x) (bgp(?x :p ?z))) (bgp(?s :p 1)) )", "x", "s") ; } @Test public void opvars_10() { fixed("(bgp (?s :p ?o))", "s", "o") ; } @Test public void opvars_11() { fixed("(leftjoin (bgp (?s :p ?o)) (bgp (?s1 :p ?o1)) )", "s", "o") ; } @Test public void opvars_12() { fixed("(leftjoin (bgp (?s :p ?o)) (bgp (?s :p ?o)) )", "s", "o") ; } @Test public void opvars_13() { fixed("(union (bgp (?s :p ?o1)) (bgp (?s :p ?o2)) )", "s") ; } @Test public void opvars_14() { fixed("(minus (bgp (?s :p ?o)) (bgp (?s1 :p ?o1)) )", "s", "o") ; } @Test public void opvars_15() { fixed("(join (project (?x) (bgp(?x :p ?z))) (bgp(?s :p 1)) )", "x", "s") ; } private static void visible(String string, String... vars) { Op op = SSE.parseOp(string) ; Collection<Var> c = OpVars.visibleVars(op) ; check(vars, c) ; } private static void fixed(String string, String... vars) { Op op = SSE.parseOp(string) ; Collection<Var> c = OpVars.fixedVars(op) ; check(vars, c) ; } private static void check(String[] varsExpected, Collection<Var> varsFound) { Var[] vars = new Var[varsExpected.length] ; for ( int i = 0 ; i < varsExpected.length ; i++ ) { Var v = Var.alloc(varsExpected[i]) ; vars[i] = v ; } List<Var> varList = Arrays.asList(vars) ; HashSet<Var> varSet = new HashSet<>() ; varSet.addAll(varList) ; assertEquals(varSet, varsFound) ; } }