blob: 90ccbc58389d73cdf1a9541facd76dbca68e1c1e [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.testing.tests.jpql;
// TopLink imports
import org.eclipse.persistence.expressions.*;
import org.eclipse.persistence.queries.*;
// Testing imports
import org.eclipse.persistence.testing.framework.*;
// Domain imports
import org.eclipse.persistence.testing.models.employee.domain.*;
public class BinaryOperatorTest extends org.eclipse.persistence.testing.tests.jpql.JPQLTestCase {
public static BinaryOperatorTest getSimpleGreaterThanTest() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Greater Than test");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE emp.id > 12");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = builder.get("id").greaterThan(12);
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimpleGreaterThanEqualTest() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Greater Than Equal test");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE emp.id >= 12");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = builder.get("id").greaterThanEqual(12);
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimpleLessThanEqualTest() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Less Than Equal test");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE emp.id <= 1000000");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = builder.get("id").lessThanEqual(1000000);
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimpleLessThanTest() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Less Than test");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE emp.id < 1000000");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = builder.get("id").lessThan(1000000);
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimplePlusTest() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Plus test");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE emp.salary + 1000 <= 50000");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = ExpressionMath.add(builder.get("salary"), Integer.valueOf(1000)).lessThanEqual(50000);
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimplePlusTestWithBracketsBeforeComparison() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Plus test with brackets before comparison");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE (emp.salary + 1000) <= 50000");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = ExpressionMath.add(builder.get("salary"), Integer.valueOf(1000)).lessThanEqual(50000);
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimplePlusTestWithBracketsAfterComparison() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Plus test with brackets after comparison");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE 50000 > (emp.salary + 1000)");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = ExpressionBuilder.fromConstant(50000, builder).greaterThan(ExpressionMath.add(builder.get("salary"), Integer.valueOf(1000)));
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimpleMinusTest() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Minus test");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE emp.salary - 1000 <= 50000");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = ExpressionMath.subtract(builder.get("salary"), Integer.valueOf(1000)).lessThanEqual(50000);
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimpleMinusTestWithBracketsBeforeComparison() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Minus test with Brackets Before Comparison");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE (emp.salary - 1000) <= 50000");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = ExpressionMath.subtract(builder.get("salary"), Integer.valueOf(1000)).lessThanEqual(50000);
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimpleMinusTestWithBracketsAfterComparison() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Minus test with Brackets After Comparison");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE 50000 > (emp.salary - 1000)");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = ExpressionBuilder.fromConstant(50000, builder).greaterThan(ExpressionMath.subtract(builder.get("salary"), Integer.valueOf(1000)));
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimpleMultiplyTest() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Multiply test");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE emp.salary * 2 <= 100000");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = ExpressionMath.multiply(builder.get("salary"), Integer.valueOf(2)).lessThanEqual(100000);
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimpleMultiplyTestWithBracketsBeforeComparison() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Multiply test with brackets before comparison");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE (emp.salary * 2) <= 100000");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = ExpressionMath.multiply(builder.get("salary"), Integer.valueOf(2)).lessThanEqual(100000);
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimpleMultiplyTestWithBracketsAfterComparison() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Multiply test with brackets after comparison");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE 100000 > (emp.salary * 2)");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = ExpressionBuilder.fromConstant(100000, builder).greaterThan(ExpressionMath.multiply(builder.get("salary"), Integer.valueOf(2)));
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimpleDivideTest() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Divide test");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE emp.salary / 2 <= 20000");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = ExpressionMath.divide(builder.get("salary"), Integer.valueOf(2)).lessThanEqual(20000);
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimpleDivideTestWithBracketsBeforeComparison() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Divide test with brackets before comparison");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE (emp.salary / 2) <= 20000");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = ExpressionMath.divide(builder.get("salary"), Integer.valueOf(2)).lessThanEqual(20000);
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static BinaryOperatorTest getSimpleDivideTestWithBracketsAfterComparison() {
BinaryOperatorTest theTest = new BinaryOperatorTest();
theTest.setName("Simple Divide test with brackets after comparison");
theTest.setEjbqlString("SELECT OBJECT(emp) FROM Employee emp WHERE 20000 > (emp.salary / 2)");
theTest.setReferenceClass(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression whereClause = ExpressionBuilder.fromConstant(20000, builder).greaterThan(ExpressionMath.divide(builder.get("salary"), Integer.valueOf(2)));
theTest.setOriginalObjectExpression(whereClause);
return theTest;
}
public static TestSuite getSimpleBinaryOperatorTests() {
TestSuite theSuite = new TestSuite();
theSuite.setName("Simple Binary Operator Test Suite");
theSuite.addTest(BinaryOperatorTest.getSimpleGreaterThanTest());
theSuite.addTest(BinaryOperatorTest.getSimpleGreaterThanEqualTest());
theSuite.addTest(BinaryOperatorTest.getSimpleLessThanEqualTest());
theSuite.addTest(BinaryOperatorTest.getSimpleLessThanTest());
theSuite.addTest(BinaryOperatorTest.getSimplePlusTest());
theSuite.addTest(BinaryOperatorTest.getSimplePlusTestWithBracketsBeforeComparison());
theSuite.addTest(BinaryOperatorTest.getSimplePlusTestWithBracketsAfterComparison());
theSuite.addTest(BinaryOperatorTest.getSimpleMinusTest());
theSuite.addTest(BinaryOperatorTest.getSimpleMinusTestWithBracketsBeforeComparison());
theSuite.addTest(BinaryOperatorTest.getSimpleMinusTestWithBracketsAfterComparison());
theSuite.addTest(BinaryOperatorTest.getSimpleMultiplyTest());
theSuite.addTest(BinaryOperatorTest.getSimpleMultiplyTestWithBracketsBeforeComparison());
theSuite.addTest(BinaryOperatorTest.getSimpleMultiplyTestWithBracketsAfterComparison());
theSuite.addTest(BinaryOperatorTest.getSimpleDivideTest());
theSuite.addTest(BinaryOperatorTest.getSimpleDivideTestWithBracketsBeforeComparison());
theSuite.addTest(BinaryOperatorTest.getSimpleDivideTestWithBracketsAfterComparison());
return theSuite;
}
@Override
public void setup() {
ReadAllQuery raq = new ReadAllQuery();
raq.setSelectionCriteria(getOriginalObjectExpression());
raq.setReferenceClass(getReferenceClass());
setOriginalOject(getSession().executeQuery(raq));
super.setup();
}
}