| /* |
| * 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<>(); |
| |
| 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<>(); |
| 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<>(); |
| 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<>(); |
| 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<>(); |
| 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<>(); |
| 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<>(); |
| 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<>(); |
| 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<>(); |
| 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<>(); |
| 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<>(); |
| 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<>(); |
| 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<>(); |
| 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<>(); |
| 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<>(); |
| 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<>(); |
| proposals.add("e"); |
| CollectionTools.addAll(proposals, bnfAccessor.arithmeticTermFunctions()); |
| |
| testHasOnlyTheseProposals(jpqlQuery, position, proposals); |
| } |
| } |