blob: 3f13e08d198b7c143d8667f5801e905eeff0091a [file] [log] [blame]
/*
* Copyright (c) 2006, 2020 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
//
package org.eclipse.persistence.jpa.tests.jpql.parser;
import org.junit.Test;
import static org.eclipse.persistence.jpa.tests.jpql.parser.JPQLParserTester.*;
/**
* Unit-tests for {@link org.eclipse.persistence.jpa.jpql.parser.AllOrAnyExpression AllOrAnyExpression}.
*
* @version 2.5
* @since 2.3
* @author Pascal Filion
*/
@SuppressWarnings("nls")
public final class AllOrAnyExpressionTest extends JPQLParserTest {
@Test
public void test_JPQLQuery_All_1() {
String query = "SELECT e FROM Employee e WHERE ALL (SELECT m FROM Manager m)";
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(all(
subquery(
subSelect(variable("m")),
subFrom("Manager", "m")
)
))
);
testQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_All_2() {
String query = "SELECT e FROM Employee e WHERE ALL";
AllOrAnyExpressionTester allExpression = all(nullExpression());
allExpression.hasLeftParenthesis = false;
allExpression.hasRightParenthesis = false;
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(allExpression)
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_All_3() {
String query = "SELECT e FROM Employee e WHERE ALL(";
AllOrAnyExpressionTester allExpression = all(nullExpression());
allExpression.hasRightParenthesis = false;
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(allExpression)
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_All_4() {
String query = "SELECT e FROM Employee e WHERE ALL()";
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(all(nullExpression()))
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_All_5() {
String query = "SELECT e FROM Employee e WHERE ALL GROUP BY e.name";
AllOrAnyExpressionTester allExpression = all(nullExpression());
allExpression.hasLeftParenthesis = false;
allExpression.hasRightParenthesis = false;
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(allExpression),
groupBy(path("e.name"))
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_All_6() {
String query = "SELECT e FROM Employee e WHERE ALL( GROUP BY e.name";
AllOrAnyExpressionTester allExpression = all(nullExpression());
allExpression.hasRightParenthesis = false;
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(allExpression),
groupBy(path("e.name"))
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_Any_1() {
String query = "SELECT e FROM Employee e WHERE ANY (SELECT m FROM Manager m)";
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(any(
subquery(
subSelect(variable("m")),
subFrom("Manager", "m")
)
))
);
testQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_Any_2() {
String query = "SELECT e FROM Employee e WHERE ANY";
AllOrAnyExpressionTester anyExpression = any(nullExpression());
anyExpression.hasLeftParenthesis = false;
anyExpression.hasRightParenthesis = false;
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(anyExpression)
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_Any_3() {
String query = "SELECT e FROM Employee e WHERE ANY(";
AllOrAnyExpressionTester anyExpression = any(nullExpression());
anyExpression.hasRightParenthesis = false;
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(anyExpression)
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_Any_4() {
String query = "SELECT e FROM Employee e WHERE ANY()";
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(any(nullExpression()))
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_Any_5() {
String query = "SELECT e FROM Employee e WHERE ANY GROUP BY e.name";
AllOrAnyExpressionTester anyExpression = any(nullExpression());
anyExpression.hasLeftParenthesis = false;
anyExpression.hasRightParenthesis = false;
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(anyExpression),
groupBy(path("e.name"))
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_Any_6() {
String query = "SELECT e FROM Employee e WHERE ANY( GROUP BY e.name";
AllOrAnyExpressionTester anyExpression = any(nullExpression());
anyExpression.hasRightParenthesis = false;
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(anyExpression),
groupBy(path("e.name"))
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_Some_1() {
String query = "SELECT e FROM Employee e WHERE SOME (SELECT m FROM Manager m)";
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(some(
subquery(
subSelect(variable("m")),
subFrom("Manager", "m")
)
))
);
testQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_Some_2() {
String query = "SELECT e FROM Employee e WHERE SOME";
AllOrAnyExpressionTester someExpression = some(nullExpression());
someExpression.hasLeftParenthesis = false;
someExpression.hasRightParenthesis = false;
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(someExpression)
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_Some_3() {
String query = "SELECT e FROM Employee e WHERE SOME(";
AllOrAnyExpressionTester someExpression = some(nullExpression());
someExpression.hasRightParenthesis = false;
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(someExpression)
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_Some_4() {
String query = "SELECT e FROM Employee e WHERE SOME()";
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(some(nullExpression()))
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_Some_5() {
String query = "SELECT e FROM Employee e WHERE SOME GROUP BY e.name";
AllOrAnyExpressionTester someExpression = some(nullExpression());
someExpression.hasLeftParenthesis = false;
someExpression.hasRightParenthesis = false;
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(someExpression),
groupBy(path("e.name"))
);
testInvalidQuery(query, selectStatement);
}
@Test
public void test_JPQLQuery_Some_6() {
String query = "SELECT e FROM Employee e WHERE SOME( GROUP BY e.name";
AllOrAnyExpressionTester someExpression = some(nullExpression());
someExpression.hasRightParenthesis = false;
ExpressionTester selectStatement = selectStatement(
select(variable("e")),
from("Employee", "e"),
where(someExpression),
groupBy(path("e.name"))
);
testInvalidQuery(query, selectStatement);
}
}