blob: 46191d6addbd73ed0c59dab8ef3101511ab3c335 [file] [log] [blame]
/*
* Copyright (c) 2013, 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
//
package org.eclipse.persistence.jpa.tests.jpql.tools;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.persistence.jpa.jpql.EclipseLinkVersion;
import org.eclipse.persistence.jpa.jpql.parser.EclipseLinkJPQLGrammar2_4;
import org.eclipse.persistence.jpa.jpql.utility.CollectionTools;
import org.eclipse.persistence.jpa.tests.jpql.EclipseLinkVersionTools;
import org.junit.Test;
import static org.eclipse.persistence.jpa.jpql.parser.Expression.*;
/**
* This unit-test tests the JPQL content assist at various position within the JPQL query and with
* complete and incomplete queries and make sure the EclipseLink additional support works correctly.
*
* @version 2.5.1
* @since 2.5
* @author Pascal Filion
*/
@SuppressWarnings("nls")
public final class EclipseLinkContentAssistTest2_5 extends AbstractContentAssistTest {
@Override
protected List<String> classNames() {
return Collections.emptyList();
}
@Override
protected List<String> clauses(String afterIdentifier, String beforeIdentifier, boolean subquery) {
List<String> proposals = super.clauses(afterIdentifier, beforeIdentifier, subquery);
if (subquery) {
return proposals;
}
if (afterIdentifier == SELECT) {
if (beforeIdentifier != FROM &&
beforeIdentifier != WHERE &&
beforeIdentifier != GROUP_BY &&
beforeIdentifier != HAVING &&
beforeIdentifier != ORDER_BY &&
beforeIdentifier != UNION &&
beforeIdentifier != EXCEPT &&
beforeIdentifier != INTERSECT) {
proposals.add(UNION);
proposals.add(EXCEPT);
proposals.add(INTERSECT);
}
}
else if (afterIdentifier == FROM) {
if (beforeIdentifier != WHERE &&
beforeIdentifier != GROUP_BY &&
beforeIdentifier != HAVING &&
beforeIdentifier != ORDER_BY &&
beforeIdentifier != UNION &&
beforeIdentifier != EXCEPT &&
beforeIdentifier != INTERSECT) {
proposals.add(UNION);
proposals.add(EXCEPT);
proposals.add(INTERSECT);
}
}
else if (afterIdentifier == WHERE) {
if (beforeIdentifier != GROUP_BY &&
beforeIdentifier != HAVING &&
beforeIdentifier != ORDER_BY &&
beforeIdentifier != UNION &&
beforeIdentifier != EXCEPT &&
beforeIdentifier != INTERSECT) {
proposals.add(UNION);
proposals.add(EXCEPT);
proposals.add(INTERSECT);
}
}
else if (afterIdentifier == GROUP_BY) {
if (beforeIdentifier != HAVING &&
beforeIdentifier != ORDER_BY &&
beforeIdentifier != UNION &&
beforeIdentifier != EXCEPT &&
beforeIdentifier != INTERSECT) {
proposals.add(UNION);
proposals.add(EXCEPT);
proposals.add(INTERSECT);
}
}
else if (afterIdentifier == HAVING) {
if (beforeIdentifier != ORDER_BY &&
beforeIdentifier != UNION &&
beforeIdentifier != EXCEPT &&
beforeIdentifier != INTERSECT) {
proposals.add(UNION);
proposals.add(EXCEPT);
proposals.add(INTERSECT);
}
}
else if (afterIdentifier == ORDER_BY) {
if (beforeIdentifier != UNION &&
beforeIdentifier != EXCEPT &&
beforeIdentifier != INTERSECT) {
proposals.add(UNION);
proposals.add(EXCEPT);
proposals.add(INTERSECT);
}
}
return proposals;
}
@Override
protected List<String> columnNames(String tableName) {
return Collections.emptyList();
}
@Override
protected List<String> enumConstants() {
return Collections.emptyList();
}
@Override
protected List<String> enumTypes() {
return Collections.emptyList();
}
@Override
protected List<String> fromClauseInternalClauses(String afterIdentifier) {
if (EclipseLinkVersionTools.isNewerThan2_4(getGrammar())) {
List<String> proposals = new ArrayList<String>();
if (afterIdentifier == FROM) {
proposals.addAll(super.fromClauseInternalClauses(FROM));
proposals.add(START_WITH);
proposals.add(CONNECT_BY);
proposals.add(ORDER_SIBLINGS_BY);
proposals.add(AS_OF);
}
else if (afterIdentifier == JOIN) {
proposals.add(START_WITH);
proposals.add(CONNECT_BY);
proposals.add(ORDER_SIBLINGS_BY);
proposals.add(AS_OF);
}
else if (afterIdentifier == START_WITH) {
proposals.add(CONNECT_BY);
proposals.add(ORDER_SIBLINGS_BY);
proposals.add(AS_OF);
}
else if (afterIdentifier == CONNECT_BY) {
proposals.add(ORDER_SIBLINGS_BY);
proposals.add(AS_OF);
}
else if (afterIdentifier == ORDER_SIBLINGS_BY) {
proposals.add(AS_OF);
}
return proposals;
}
return super.fromClauseInternalClauses(afterIdentifier);
}
@Override
protected boolean isJoinFetchIdentifiable() {
EclipseLinkVersion currentVersion = EclipseLinkVersion.value(getGrammar().getProviderVersion());
return currentVersion.isNewerThanOrEqual(EclipseLinkJPQLGrammar2_4.VERSION);
}
@Override
protected List<String> tableNames() {
return Collections.emptyList();
}
@Test
public void test_AsOfClause_01() {
String jpqlQuery = "select e from Employee e";
int position = jpqlQuery.length();
testDoesNotHaveTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_02() {
String jpqlQuery = "select e from Employee e ";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_03() {
String jpqlQuery = "select e from Employee e A";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_04() {
String jpqlQuery = "select e from Employee e AS";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_05() {
String jpqlQuery = "select e from Employee e AS ";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_06() {
String jpqlQuery = "select e from Employee e AS O";
int position = jpqlQuery.length();
testHasOnlyTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_07() {
String jpqlQuery = "select e from Employee e AS OF";
int position = jpqlQuery.length();
testHasOnlyTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_08() {
String jpqlQuery = "select e from Employee e AS OF ";
int position = jpqlQuery.length();
testDoesNotHaveTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_10() {
String jpqlQuery = "select e from Employee e AS OF ";
int position = "select e from Employee e A".length();
testHasTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_11() {
String jpqlQuery = "select e from Employee e AS OF ";
int position = "select e from Employee e AS".length();
testHasTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_12() {
String jpqlQuery = "select e from Employee e AS OF ";
int position = "select e from Employee e AS ".length();
testHasTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_13() {
String jpqlQuery = "select e from Employee e AS OF ";
int position = "select e from Employee e A".length();
testHasTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_14() {
String jpqlQuery = "select e from Employee e AS OF ";
int position = "select e from Employee e AS".length();
testHasTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_15() {
String jpqlQuery = "select e from Employee e AS OF ";
int position = "select e from Employee e AS ".length();
testHasTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_16() {
String jpqlQuery = "select e from Employee e AS OF ";
int position = "select e from Employee e AS O".length();
testHasTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_17() {
String jpqlQuery = "select e from Employee e AS OF ";
int position = "select e from Employee e AS OF".length();
testHasTheseProposals(jpqlQuery, position, AS_OF);
}
@Test
public void test_AsOfClause_18() {
String jpqlQuery = "select e from Employee e AS OF ";
int position = jpqlQuery.length();
List<String> proposals = new ArrayList<String>();
proposals.add(SCN);
proposals.add(TIMESTAMP);
proposals.add("e");
CollectionTools.addAll(proposals, bnfAccessor.scalarExpressionFunctions());
testHasOnlyTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_AsOfClause_19() {
String jpqlQuery = "select e from Employee e AS OF SCN ";
int position = jpqlQuery.length();
List<String> proposals = new ArrayList<String>();
proposals.add("e");
CollectionTools.addAll(proposals, bnfAccessor.scalarExpressionFunctions());
testHasOnlyTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_AsOfClause_20() {
String jpqlQuery = "select e from Employee e AS OF SCN";
int position = jpqlQuery.length();
testHasOnlyTheseProposals(jpqlQuery, position, SCN, TIMESTAMP);
}
@Test
public void test_AsOfClause_21() {
String jpqlQuery = "select e from Employee e AS OF TIMESTAMP";
int position = jpqlQuery.length();
testHasOnlyTheseProposals(jpqlQuery, position, SCN, TIMESTAMP);
}
@Test
public void test_AsOfClause_22() {
String jpqlQuery = "select e from Employee e AS OF TIMESTAMP ";
int position = jpqlQuery.length();
List<String> proposals = new ArrayList<String>();
proposals.add("e");
CollectionTools.addAll(proposals, bnfAccessor.scalarExpressionFunctions());
testHasOnlyTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_AsOfClause_23() {
String jpqlQuery = "select e from Employee e AS OF TIMESTAMP e.name";
int position = "select e from Employee e AS OF ".length();
testHasOnlyTheseProposals(jpqlQuery, position, SCN, TIMESTAMP);
}
@Test
public void test_AsOfClause_24() {
String jpqlQuery = "select e from Employee e AS OF TIMESTAMP e.name";
int position = "select e from Employee e AS OF T".length();
testHasOnlyTheseProposals(jpqlQuery, position, SCN, TIMESTAMP);
}
@Test
public void test_AsOfClause_25() {
String jpqlQuery = "select e from Employee e AS OF SCN e.name";
int position = "select e from Employee e AS OF S".length();
testHasOnlyTheseProposals(jpqlQuery, position, SCN, TIMESTAMP);
}
@Test
public void test_AsOfClause_26() {
String jpqlQuery = "select e from Employee e AS OF SCN e.name + WHERE e.name = 'JPQL'";
int position = "select e from Employee e AS OF SCN e.name + ".length();
List<String> proposals = new ArrayList<String>();
proposals.add("e");
CollectionTools.addAll(proposals, bnfAccessor.scalarExpressionFunctions());
testHasOnlyTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_ConnectByClause_01() {
String jpqlQuery = "select e from Employee e ";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_02() {
String jpqlQuery = "select e from Employee e C";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_03() {
String jpqlQuery = "select e from Employee e CO";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_04() {
String jpqlQuery = "select e from Employee e CON";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_05() {
String jpqlQuery = "select e from Employee e CONN";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_06() {
String jpqlQuery = "select e from Employee e CONNEC";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_07() {
String jpqlQuery = "select e from Employee e CONNECT";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_08() {
String jpqlQuery = "select e from Employee e CONNECT ";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_09() {
String jpqlQuery = "select e from Employee e CONNECT B";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_10() {
String jpqlQuery = "select e from Employee e CONNECT BY";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_11() {
String jpqlQuery = "select e from Employee e CONNECT BY ";
int position = jpqlQuery.length();
List<String> proposals = new ArrayList<String>();
proposals.add("e");
CollectionTools.addAll(proposals, bnfAccessor.collectionValuedPathExpressionFunctions());
testHasOnlyTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_ConnectByClause_12() {
String jpqlQuery = "select e from Employee e CONNECT BY ";
int position = "select e from Employee e C".length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_13() {
String jpqlQuery = "select e from Employee e CONNECT BY ";
int position = "select e from Employee e CO".length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_14() {
String jpqlQuery = "select e from Employee e CONNECT BY ";
int position = "select e from Employee e CON".length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_15() {
String jpqlQuery = "select e from Employee e CONNECT BY ";
int position = "select e from Employee e CONN".length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_16() {
String jpqlQuery = "select e from Employee e CONNECT BY ";
int position = "select e from Employee e CONNE".length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_17() {
String jpqlQuery = "select e from Employee e CONNECT BY ";
int position = "select e from Employee e CONNEC".length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_18() {
String jpqlQuery = "select e from Employee e CONNECT BY ";
int position = "select e from Employee e CONNECT".length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_19() {
String jpqlQuery = "select e from Employee e CONNECT BY ";
int position = "select e from Employee e CONNECT ".length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_20() {
String jpqlQuery = "select e from Employee e CONNECT BY ";
int position = "select e from Employee e CONNECT B".length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_21() {
String jpqlQuery = "select e from Employee e CONNECT BY ";
int position = "select e from Employee e CONNECT BY".length();
testHasTheseProposals(jpqlQuery, position, CONNECT_BY);
}
@Test
public void test_ConnectByClause_22() {
String jpqlQuery = "select e from Employee e CONNECT BY ";
int position = jpqlQuery.length();
List<String> proposals = new ArrayList<String>();
proposals.add("e");
CollectionTools.addAll(proposals, bnfAccessor.collectionValuedPathExpressionFunctions());
testHasTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_ConnectByClause_23() {
String jpqlQuery = "select e from Employee e JOIN e.manager k CONNECT BY k";
int position = jpqlQuery.length();
List<String> proposals = new ArrayList<String>();
proposals.add("k");
CollectionTools.addAll(proposals, filter(bnfAccessor.collectionValuedPathExpressionFunctions(), "K"));
testHasTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_HierarchicalQueryClause_01() {
String jpqlQuery = "select e from Employee e START WITH ";
int position = jpqlQuery.length();
List<String> proposals = new ArrayList<String>();
proposals.add("e");
CollectionTools.addAll(proposals, bnfAccessor.conditionalExpressionsFunctions());
testHasOnlyTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_HierarchicalQueryClause_02() {
String jpqlQuery = "select e from Employee e START WITH C";
int position = jpqlQuery.length();
List<String> proposals = new ArrayList<String>();
CollectionTools.addAll(proposals, filter(bnfAccessor.conditionalExpressionsFunctions(), "C"));
testHasOnlyTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_HierarchicalQueryClause_03() {
String jpqlQuery = "select e from Employee e START WITH O";
int position = jpqlQuery.length();
List<String> proposals = new ArrayList<String>();
CollectionTools.addAll(proposals, filter(bnfAccessor.conditionalExpressionsFunctions(), "O"));
testHasOnlyTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_HierarchicalQueryClause_04() {
String jpqlQuery = "select e from Employee e CONNECT BY e.name ";
int position = jpqlQuery.length();
List<String> proposals = new ArrayList<String>();
CollectionTools.addAll(proposals, fromClauseInternalClauses(CONNECT_BY));
CollectionTools.addAll(proposals, clauses(FROM, null, false));
testHasOnlyTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_HierarchicalQueryClause_05() {
String jpqlQuery = "select e from Employee e START WITH CONNECT BY";
int position = "select e from Employee e START WITH ".length();
List<String> proposals = new ArrayList<String>();
proposals.add("e");
CollectionTools.addAll(proposals, bnfAccessor.conditionalExpressionsFunctions());
testHasOnlyTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_HierarchicalQueryClause_06() {
String jpqlQuery = "select e from Employee e CONNECT BY e.name O";
int position = jpqlQuery.length();
List<String> proposals = new ArrayList<String>();
CollectionTools.addAll(proposals, filter(fromClauseInternalClauses(CONNECT_BY), "O"));
CollectionTools.addAll(proposals, filter(clauses(FROM, null, false), "O"));
testHasOnlyTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_HierarchicalQueryClause_07() {
String jpqlQuery = "select e from Employee e CONNECT BY e.name O WHERE e.name = 'JPQL'";
int position = "select e from Employee e CONNECT BY e.name O".length();
testHasOnlyTheseProposals(jpqlQuery, position, ORDER_SIBLINGS_BY);
}
@Test
public final void test_Invalid_001() {
String jpqlQuery = "SELECT e FROM Employee CONNECT BY e.name O";
int position = "SELECT e FROM Employee CONNECT BY e.name O".length();
testHasOnlyTheseProposals(jpqlQuery, position, ORDER_SIBLINGS_BY, ORDER_BY);
}
@Test
public final void test_Invalid_002() {
String jpqlQuery = "SELECT e FROM Employee CONNECT BY e.name O WHERE e.name IS e.name";
int position = "SELECT e FROM Employee CONNECT BY e.name O WHERE".length();
testHasOnlyTheseProposals(jpqlQuery, position, WHERE);
}
@Test
public final void test_Invalid_003() {
String jpqlQuery = "SELECT e FROM Employee CONNECT BY e.name O WHERE e.name IS e.name";
int position = "SELECT e FROM Employee CONNECT BY e.name O WHERE e.name IS e".length();
testHasNoProposals(jpqlQuery, position);
}
@Test
public final void test_Invalid_004() {
String jpqlQuery = "SELECT e FROM Employee CONNECT BY e.name O WHERE e.name IS e.name";
int position = jpqlQuery.length();
testHasNoProposals(jpqlQuery, position);
}
@Test
public final void test_Invalid_005() {
String jpqlQuery = "SELECT e FROM Employee CONNECT BY e.name O WHERE e.name IS e.name IS ";
int position = jpqlQuery.length();
testHasNoProposals(jpqlQuery, position);
}
@Test
public final void test_Invalid_006() {
String jpqlQuery = "SELECT e FROM Employee CONNECT BY e.name O WHERE e.name IS e.name WHERE";
int position = jpqlQuery.length();
testHasNoProposals(jpqlQuery, position);
}
@Test
public void test_StartWithClause_01() {
String jpqlQuery = "select e from Employee e ";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_02() {
String jpqlQuery = "select e from Employee e S";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_03() {
String jpqlQuery = "select e from Employee e ST";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_04() {
String jpqlQuery = "select e from Employee e STA";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_05() {
String jpqlQuery = "select e from Employee e START";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_06() {
String jpqlQuery = "select e from Employee e START ";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_07() {
String jpqlQuery = "select e from Employee e START W";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_08() {
String jpqlQuery = "select e from Employee e START WI";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_09() {
String jpqlQuery = "select e from Employee e START WIT";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_10() {
String jpqlQuery = "select e from Employee e START WITH";
int position = jpqlQuery.length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_11() {
String jpqlQuery = "select e from Employee e START WITH ";
int position = jpqlQuery.length();
List<String> proposals = new ArrayList<String>();
proposals.add("e");
CollectionTools.addAll(proposals, bnfAccessor.conditionalExpressionsFunctions());
testHasOnlyTheseProposals(jpqlQuery, position, proposals);
}
@Test
public void test_StartWithClause_12() {
String jpqlQuery = "select e from Employee e START WITH ";
int position = "select e from Employee e S".length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_13() {
String jpqlQuery = "select e from Employee e START WITH ";
int position = "select e from Employee e ST".length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_14() {
String jpqlQuery = "select e from Employee e START WITH ";
int position = "select e from Employee e STA".length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_15() {
String jpqlQuery = "select e from Employee e START WITH ";
int position = "select e from Employee e STAR".length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_16() {
String jpqlQuery = "select e from Employee e START WITH ";
int position = "select e from Employee e START".length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_17() {
String jpqlQuery = "select e from Employee e START WITH ";
int position = "select e from Employee e START W".length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_18() {
String jpqlQuery = "select e from Employee e START WITH ";
int position = "select e from Employee e START WI".length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_19() {
String jpqlQuery = "select e from Employee e START WITH ";
int position = "select e from Employee e START WIT".length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_20() {
String jpqlQuery = "select e from Employee e START WITH ";
int position = "select e from Employee e START WITH".length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_21() {
String jpqlQuery = "select e from Employee e START WITH ";
int position = "select e from Employee e START WITH".length();
testHasTheseProposals(jpqlQuery, position, START_WITH);
}
@Test
public void test_StartWithClause_22() {
String jpqlQuery = "select e from Employee e start with e.name + WHERE e.name = 'JPQL'";
int position = "select e from Employee e start with e.name + ".length();
List<String> proposals = new ArrayList<String>();
proposals.add("e");
CollectionTools.addAll(proposals, bnfAccessor.arithmeticTermFunctions());
testHasOnlyTheseProposals(jpqlQuery, position, proposals);
}
}