| /* |
| * Copyright (c) 2012, 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.List; |
| import jpql.query.EnumType; |
| import org.eclipse.persistence.jpa.jpql.tools.ContentAssistExtension; |
| import org.eclipse.persistence.jpa.jpql.tools.ContentAssistProposals; |
| import org.eclipse.persistence.jpa.jpql.tools.ResultQuery; |
| import org.eclipse.persistence.jpa.jpql.tools.spi.IType; |
| import org.eclipse.persistence.jpa.jpql.utility.CollectionTools; |
| import org.junit.Test; |
| import static org.eclipse.persistence.jpa.jpql.parser.Expression.*; |
| import static org.junit.Assert.*; |
| |
| /** |
| * The unit-tests for {@link org.eclipse.persistence.jpa.jpql.tools.ContentAssistExtension}, which is used by |
| * {@link org.eclipse.persistence.jpa.jpql.tools.AbstractJPQLQueryHelper#buildContentAssistProposals(int, ContentAssistExtension)} |
| * AbstractJPQLQueryHelper.buildContentAssistProposals(int, ContentAssistExtension)}. |
| * |
| * @version 2.5 |
| * @since 2.5 |
| * @author Pascal Filion |
| */ |
| @SuppressWarnings("nls") |
| public abstract class AbstractContentAssistExtensionTest extends ContentAssistTest { |
| |
| @Test |
| public final void test_buildQuery_07() { |
| |
| String jpqlQuery = "SELECT e, NEW java.lang.String FROM Employee e"; |
| int position = "SELECT e, NEW ".length(); |
| String proposal = "java.lang.StringBuilder"; |
| |
| ContentAssistProposals proposals = buildContentAssistProposals(jpqlQuery, position); |
| ResultQuery result = proposals.buildQuery(jpqlQuery, proposal, position, false); |
| |
| String expectedJpqlQuery = "SELECT e, NEW java.lang.StringBuilder FROM Employee e"; |
| int expectedPosition = "SELECT e, NEW java.lang.StringBuilder".length(); |
| |
| assertEquals(expectedJpqlQuery, result.getQuery()); |
| assertEquals(expectedPosition, result.getPosition()); |
| } |
| |
| @Test |
| public final void test_buildQuery_08() { |
| |
| String jpqlQuery = "SELECT e, NEW java.lang FROM Employee e"; |
| int position = "SELECT e, NEW ".length(); |
| String proposal = "java.lang.String"; |
| |
| ContentAssistProposals proposals = buildContentAssistProposals(jpqlQuery, position); |
| ResultQuery result = proposals.buildQuery(jpqlQuery, proposal, position, false); |
| |
| String expectedJpqlQuery = "SELECT e, NEW java.lang.String FROM Employee e"; |
| int expectedPosition = "SELECT e, NEW java.lang.String".length(); |
| |
| assertEquals(expectedJpqlQuery, result.getQuery()); |
| assertEquals(expectedPosition, result.getPosition()); |
| } |
| |
| @Test |
| public final void test_classNames_01() { |
| |
| String jpqlQuery = "SELECT e, NEW FROM Employee e"; |
| int position = "SELECT e, NEW ".length(); |
| testHasOnlyTheseProposals(jpqlQuery, position, classNames()); |
| } |
| |
| @Test |
| public final void test_classNames_02() { |
| |
| String jpqlQuery = "SELECT e, NEW FROM Employee e"; |
| int position = "SELECT e,".length(); |
| testDoesNotHaveTheseProposals(jpqlQuery, position, classNames()); |
| } |
| |
| @Test |
| public final void test_classNames_03() { |
| |
| String jpqlQuery = "SELECT e, NEW FROM Employee e"; |
| int position = "SELECT e, ".length(); |
| testDoesNotHaveTheseProposals(jpqlQuery, position, classNames()); |
| } |
| |
| @Test |
| public final void test_classNames_04() { |
| |
| String jpqlQuery = "SELECT e, NEW java.lang. FROM Employee e"; |
| int position = "SELECT e, NEW java.lang.".length(); |
| testHasOnlyTheseProposals(jpqlQuery, position, filter(classNames(), "java.lang.")); |
| } |
| |
| @Test |
| public final void test_classNames_05() { |
| |
| String jpqlQuery = "SELECT e, NEW java.lang.String FROM Employee e"; |
| int position = "SELECT e, NEW java.lang.String".length(); |
| testHasOnlyTheseProposals(jpqlQuery, position, filter(classNames(), "java.lang.String")); |
| } |
| |
| @Test |
| public final void test_classNames_06() { |
| |
| String jpqlQuery = "SELECT e, NEW java.lang.String FROM Employee e"; |
| int position = "SELECT e, NEW".length(); |
| testHasOnlyTheseProposals(jpqlQuery, position, NEW); |
| } |
| |
| @Test |
| public final void test_classNames_07() { |
| |
| String jpqlQuery = "SELECT e, NEW java.lang.String FROM Employee e"; |
| int position = "SELECT e, NEW ".length(); |
| testHasOnlyTheseProposals(jpqlQuery, position, classNames()); |
| } |
| |
| @Test |
| public final void test_classNames_08() { |
| |
| String jpqlQuery = "SELECT e, NEW java.lang FROM Employee e"; |
| int position = "SELECT e, NEW java.lang".length(); |
| testHasOnlyTheseProposals(jpqlQuery, position, filter(classNames(), "java.lang")); |
| } |
| |
| @Test |
| public final void test_classNames_09() { |
| |
| String jpqlQuery = "SELECT e FROM Employee e WHERE e.status = jpql.query.EnumType.FIRST_NAME"; |
| int position = "SELECT e FROM Employee e WHERE e.status = jpql.query.".length(); |
| testHasOnlyTheseProposals(jpqlQuery, position, filter(enumTypes(), "jpql.query.")); |
| } |
| |
| @Test |
| public final void test_classNames_10() { |
| |
| String jpqlQuery = "SELECT e FROM Employee e WHERE e.status = jpql.query.EnumType.FIRST_NAME"; |
| int position = "SELECT e FROM Employee e WHERE e.status = jpql.query.E".length(); |
| testHasOnlyTheseProposals(jpqlQuery, position, filter(enumTypes(), "jpql.query.E")); |
| } |
| |
| @Test |
| public final void test_enumConstants_01() { |
| |
| String jpqlQuery = "SELECT e FROM Employee e WHERE e.status = jpql.query.EnumType."; |
| int position = jpqlQuery.length(); |
| testHasOnlyTheseProposals(jpqlQuery, position, enumConstants()); |
| } |
| |
| @Test |
| public final void test_enumConstants_02() { |
| |
| String jpqlQuery = "SELECT e FROM Employee e WHERE e.status = jpql.query.EnumType.F"; |
| int position = jpqlQuery.length(); |
| testHasOnlyTheseProposals(jpqlQuery, position, filter(enumConstants(), "F")); |
| } |
| |
| @Test |
| public final void test_enumConstants_03() { |
| |
| String jpqlQuery = "SELECT e FROM Employee e WHERE e.status = jpql.query.EnumType.FIRST_NAME"; |
| int position = jpqlQuery.length(); |
| testHasOnlyTheseProposals(jpqlQuery, position, filter(enumConstants(), EnumType.FIRST_NAME.name())); |
| } |
| |
| @Test |
| public final void test_enumConstants_04() { |
| |
| String jpqlQuery = "SELECT e FROM Employee e WHERE e.status = jpql.query.EnumType.FIRST_NAME"; |
| int position = "SELECT e FROM Employee e WHERE e.status = jpql.query.EnumType.".length(); |
| testHasOnlyTheseProposals(jpqlQuery, position, enumConstants()); |
| } |
| |
| @Test |
| public final void test_enumConstants_05() { |
| |
| String jpqlQuery = "SELECT e FROM Employee e WHERE e.status = jpql.query.EnumType.F"; |
| int position = "SELECT e FROM Employee e WHERE e.status = jpql.query.EnumType.".length(); |
| testHasOnlyTheseProposals(jpqlQuery, position, enumConstants()); |
| } |
| |
| @Test |
| public final void test_enumConstants_06() { |
| |
| String jpqlQuery = "SELECT e FROM Employee e WHERE CASE e.status WHEN "; |
| int position = jpqlQuery.length(); |
| |
| List<String> proposals = new ArrayList<>(); |
| proposals.add("e"); |
| CollectionTools.addAll(proposals, bnfAccessor.conditionalExpressionsFunctions()); |
| |
| testHasOnlyTheseProposals(jpqlQuery, position, proposals); |
| } |
| |
| @Test |
| public final void test_enumConstants_07() throws Exception { |
| |
| String jpqlQuery = "SELECT e FROM Employee e WHERE CASE e.status WHEN jpql.query.EnumType."; |
| int position = jpqlQuery.length(); |
| |
| IType type = getPersistenceUnit().getTypeRepository().getType(EnumType.class.getName()); |
| List<String> proposals = new ArrayList<>(); |
| CollectionTools.addAll(proposals, type.getEnumConstants()); |
| |
| testHasOnlyTheseProposals(jpqlQuery, position, proposals); |
| } |
| |
| @Test |
| public final void test_enumConstants_08() { |
| |
| String jpqlQuery = "SELECT e FROM Employee e WHERE CASE e.status WHEN jpql.query.EnumType.FIRST_NAME THEN "; |
| int position = jpqlQuery.length(); |
| |
| List<String> proposals = new ArrayList<>(); |
| proposals.add("e"); |
| CollectionTools.addAll(proposals, bnfAccessor.scalarExpressionFunctions()); |
| |
| testHasOnlyTheseProposals(jpqlQuery, position, proposals); |
| } |
| |
| @Test |
| public final void test_enumConstants_09() { |
| |
| String jpqlQuery = "SELECT e FROM Employee e WHERE CASE e.status WHEN jpql.query.EnumType.FIRST_NAME THEN 'JPQL' ELSE "; |
| int position = jpqlQuery.length(); |
| |
| List<String> proposals = new ArrayList<>(); |
| proposals.add("e"); |
| CollectionTools.addAll(proposals, bnfAccessor.scalarExpressionFunctions()); |
| |
| testHasOnlyTheseProposals(jpqlQuery, position, proposals); |
| } |
| } |