/*
* 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.expr;
import org.apache.jena.sparql.expr.Expr ;
import org.apache.jena.sparql.expr.ExprLib ;
import org.apache.jena.sparql.util.ExprUtils ;
import org.junit.Assert ;
import org.junit.Test ;
/** Break expression testing suite into parts
* @see TestExpressions
* @see TestExprLib
* @see TestNodeValue
*/
public class TestExprLib
{
@Test public void safeEqualityNot_01() { testSafeEquality("123", false) ;}
@Test public void safeEqualityNot_02() { testSafeEquality("?x != <y>", false) ;}
@Test public void safeEqualityNot_03() { testSafeEquality("<x> = <y>", false) ;}
@Test public void safeSameTerm_01() { testSafeEquality("sameTerm(?x, <x>)", true) ;}
@Test public void safeSameTerm_02() { testSafeEquality("sameTerm(<x>, ?x)", true) ;}
@Test public void safeSameTerm_03() { testSafeEquality("sameTerm(?x, 'xyz')", false, true, true) ;}
@Test public void safeSameTerm_04() { testSafeEquality("sameTerm(?x, 'xyz')", true, false, false) ;}
@Test public void safeSameTerm_05() { testSafeEquality("sameTerm(?x, 'xyz'^^xsd:string)", false, true, true) ;}
@Test public void safeSameTerm_06() { testSafeEquality("sameTerm(?x, 'xyz'^^xsd:string)", true, false, false) ;}
@Test public void safeSameTerm_07() { testSafeEquality("sameTerm(?x, 'xyz'@en)", true, true, true) ;}
@Test public void safeSameTerm_08() { testSafeEquality("sameTerm(?x, 'xyz'@en)", true, false, false) ;}
@Test public void safeSameTerm_09() { testSafeEquality("sameTerm(?x, 123)", false, true, true) ;}
@Test public void safeSameTerm_10() { testSafeEquality("sameTerm(?x, 123)", true, false, false) ;}
@Test public void safeSameTerm_11() { testSafeEquality("sameTerm(?x, 'foo'^^<http://example>)", true, false, false) ;}
@Test public void safeSameTerm_12() { testSafeEquality("sameTerm(?x, 'foo'^^<http://example>)", true, true, true) ;}
@Test public void safeEquality_01() { testSafeEquality("?x = <x>", true) ;}
@Test public void safeEquality_02() { testSafeEquality("<x> = ?x", true) ;}
@Test public void safeEquality_03() { testSafeEquality("?x = 'xyz'", true, true, true) ;}
@Test public void safeEquality_04() { testSafeEquality("?x = 'xyz'", false, false, true) ;}
@Test public void safeEquality_05() { testSafeEquality("?x = 'xyz'^^xsd:string", true, true, true) ;}
@Test public void safeEquality_06() { testSafeEquality("?x = 'xyz'^^xsd:string", false, false, true) ;}
@Test public void safeEquality_07() { testSafeEquality("?x = 'xyz'@en", true, true, true) ;}
@Test public void safeEquality_08() { testSafeEquality("?x = 'xyz'@en", true, false, false) ;}
@Test public void safeEquality_09() { testSafeEquality("?x = 123", true, true, true) ;}
@Test public void safeEquality_10() { testSafeEquality("?x = 123", false, true, false) ;}
@Test public void safeEquality_11() { testSafeEquality("?x = 'foo'^^<http://example>", true, false, false) ;}
@Test public void safeEquality_12() { testSafeEquality("?x = 'foo'^^<http://example>", true, true, true) ;}
private static void testSafeEquality(String string, boolean b)
{
Expr expr = ExprUtils.parse(string) ;
Assert.assertEquals(string, b, ExprLib.isAssignmentSafeEquality(expr)) ;
}
private static void testSafeEquality(String string, boolean b, boolean graphString, boolean graphNumber)
{
Expr expr = ExprUtils.parse(string) ;
Assert.assertEquals(string, b, ExprLib.isAssignmentSafeEquality(expr, graphString, graphNumber)) ;
}
}