Index: test/java/org/apache/jdo/tck/query/jdoql/parameters/OrderOfParameters.java
===================================================================
--- test/java/org/apache/jdo/tck/query/jdoql/parameters/OrderOfParameters.java (Revision 0)
+++ test/java/org/apache/jdo/tck/query/jdoql/parameters/OrderOfParameters.java (Revision 0)
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.query.jdoql.parameters;
+
+import org.apache.jdo.tck.JDO_Test;
+import org.apache.jdo.tck.pc.company.CompanyModelReader;
+import org.apache.jdo.tck.pc.company.Person;
+import org.apache.jdo.tck.query.QueryElementHolder;
+import org.apache.jdo.tck.query.QueryTest;
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+/**
+ *Title: Order of Parameters.
+ *
+ *Keywords: query
+ *
+ *Assertion ID: A14.6.13-3.
+ *
+ *Assertion Description:
+ * If implicit parameters are used, their order of appearance in the query
+ * determines their order for binding to positional parameters for execution.
+ */
+public class OrderOfParameters extends QueryTest {
+
+ /** */
+ private static final String ASSERTION_FAILED =
+ "Assertion A14.6.13-3 (OrderOfParameters) failed: ";
+
+ /**
+ * The array of valid queries which may be executed as
+ * single string queries and as API queries.
+ */
+ private static final QueryElementHolder[] VALID_QUERIES = {
+ new QueryElementHolder(
+ /*UNIQUE*/ null,
+ /*RESULT*/ null,
+ /*INTO*/ null,
+ /*FROM*/ Person.class,
+ /*EXCLUDE*/ null,
+ /*WHERE*/ "firstname == :param1 & lastname == :param2",
+ /*VARIABLES*/ null,
+ /*PARAMETERS*/ null,
+ /*IMPORTS*/ null,
+ /*GROUP BY*/ null,
+ /*ORDER BY*/ null,
+ /*FROM*/ null,
+ /*TO*/ null)
+ };
+
+ /** The expected results of valid queries. */
+ private static String[][] expectedResult = {
+ {"emp1"}
+ };
+
+ /** Parameters of valid queries. */
+ private static Object[][] parameters = {
+ {"emp1First", "emp1Last"}
+ };
+
+ /**
+ * The main is called when the class
+ * is directly executed from the command line.
+ * @param args The arguments passed to the program.
+ */
+ public static void main(String[] args) {
+ BatchTestRunner.run(OrderOfParameters.class);
+ }
+
+ /** */
+ public void testPositive() {
+ for (int i = 0; i < VALID_QUERIES.length; i++) {
+ Object[] expectedResultValues =
+ getCompanyModelInstances(expectedResult[i]);
+ executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[i],
+ parameters[i], expectedResultValues);
+ executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[i],
+ parameters[i], expectedResultValues);
+ }
+ }
+
+ /**
+ * @see JDO_Test#localSetUp()
+ */
+ protected void localSetUp() {
+ loadCompanyModel(getPM(), COMPANY_TESTDATA);
+ addTearDownClass(CompanyModelReader.getTearDownClasses());
+ }
+}
Index: test/java/org/apache/jdo/tck/query/jdoql/parameters/MixedParameters.java
===================================================================
--- test/java/org/apache/jdo/tck/query/jdoql/parameters/MixedParameters.java (Revision 0)
+++ test/java/org/apache/jdo/tck/query/jdoql/parameters/MixedParameters.java (Revision 0)
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.query.jdoql.parameters;
+
+import org.apache.jdo.tck.pc.company.Person;
+import org.apache.jdo.tck.query.QueryElementHolder;
+import org.apache.jdo.tck.query.QueryTest;
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+/**
+ *Title: Mixed parameters.
+ *
+ *Keywords: query
+ *
+ *Assertion ID: A14.6.3-2.
+ *
+ *Assertion Description:
+ * Parameters must all be declared explicitly via declareParameters
+ * or all be declared implicitly in the filter.
+ */
+public class MixedParameters extends QueryTest {
+
+ /** */
+ private static final String ASSERTION_FAILED =
+ "Assertion A14.6.3-2 (MixedParameters) failed: ";
+
+ /**
+ * The array of invalid queries which may be executed as
+ * single string queries and as API queries.
+ */
+ private static final QueryElementHolder[] INVALID_QUERIES = {
+ new QueryElementHolder(
+ /*UNIQUE*/ null,
+ /*RESULT*/ null,
+ /*INTO*/ null,
+ /*FROM*/ Person.class,
+ /*EXCLUDE*/ null,
+ /*WHERE*/ "firstname == param",
+ /*VARIABLES*/ null,
+ /*PARAMETERS*/ null,
+ /*IMPORTS*/ null,
+ /*GROUP BY*/ null,
+ /*ORDER BY*/ null,
+ /*FROM*/ null,
+ /*TO*/ null)
+ };
+
+ /**
+ * The array of valid queries which may be executed as
+ * single string queries and as API queries.
+ */
+ private static final QueryElementHolder[] VALID_QUERIES = {
+ new QueryElementHolder(
+ /*UNIQUE*/ null,
+ /*RESULT*/ null,
+ /*INTO*/ null,
+ /*FROM*/ Person.class,
+ /*EXCLUDE*/ null,
+ /*WHERE*/ "firstname == param",
+ /*VARIABLES*/ null,
+ /*PARAMETERS*/ "String param",
+ /*IMPORTS*/ null,
+ /*GROUP BY*/ null,
+ /*ORDER BY*/ null,
+ /*FROM*/ null,
+ /*TO*/ null),
+ new QueryElementHolder(
+ /*UNIQUE*/ null,
+ /*RESULT*/ null,
+ /*INTO*/ null,
+ /*FROM*/ Person.class,
+ /*EXCLUDE*/ null,
+ /*WHERE*/ "firstname == :param",
+ /*VARIABLES*/ null,
+ /*PARAMETERS*/ null,
+ /*IMPORTS*/ null,
+ /*GROUP BY*/ null,
+ /*ORDER BY*/ null,
+ /*FROM*/ null,
+ /*TO*/ null)
+ };
+
+ /**
+ * The main is called when the class
+ * is directly executed from the command line.
+ * @param args The arguments passed to the program.
+ */
+ public static void main(String[] args) {
+ BatchTestRunner.run(MixedParameters.class);
+ }
+
+ /** */
+ public void testPositive() {
+ for (int i = 0; i < VALID_QUERIES.length; i++) {
+ compileAPIQuery(ASSERTION_FAILED, VALID_QUERIES[i], true);
+ compileSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[i], true);
+ }
+ }
+
+ public void testNegative() {
+ for (int i = 0; i < INVALID_QUERIES.length; i++) {
+ compileAPIQuery(ASSERTION_FAILED, INVALID_QUERIES[i], false);
+ compileSingleStringQuery(ASSERTION_FAILED, INVALID_QUERIES[i],
+ false);
+ }
+ }
+}
Index: test/java/org/apache/jdo/tck/query/jdoql/parameters/ImplicitParameters.java
===================================================================
--- test/java/org/apache/jdo/tck/query/jdoql/parameters/ImplicitParameters.java (Revision 0)
+++ test/java/org/apache/jdo/tck/query/jdoql/parameters/ImplicitParameters.java (Revision 0)
@@ -0,0 +1,155 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.query.jdoql.parameters;
+
+import org.apache.jdo.tck.JDO_Test;
+import org.apache.jdo.tck.pc.company.CompanyModelReader;
+import org.apache.jdo.tck.pc.company.Person;
+import org.apache.jdo.tck.query.QueryElementHolder;
+import org.apache.jdo.tck.query.QueryTest;
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+/**
+ *Title: Implicit parameters.
+ *
+ *Keywords: query
+ *
+ *Assertion ID: A14.6.3-3.
+ *
+ *Assertion Description:
+ * Parameters implicitly declared (in the result, filter, grouping, ordering,
+ * or range) are identified by prepending a ":" to the parameter
+ * everywhere it appears. All parameter types can be determined
+ * by one of the following techniques:
+ */
+public class ImplicitParameters extends QueryTest {
+
+ /** */
+ private static final String ASSERTION_FAILED =
+ "Assertion A14.6.3-3 (ImplicitParameters) failed: ";
+
+ /**
+ * The array of valid queries which may be executed as
+ * single string queries and as API queries.
+ */
+ private static final QueryElementHolder[] VALID_QUERIES = {
+ new QueryElementHolder(
+ /*UNIQUE*/ null,
+ /*RESULT*/ "this, :param",
+ /*INTO*/ null,
+ /*FROM*/ Person.class,
+ /*EXCLUDE*/ null,
+ /*WHERE*/ null,
+ /*VARIABLES*/ null,
+ /*PARAMETERS*/ null,
+ /*IMPORTS*/ null,
+ /*GROUP BY*/ null,
+ /*ORDER BY*/ null,
+ /*FROM*/ null,
+ /*TO*/ null),
+ new QueryElementHolder(
+ /*UNIQUE*/ null,
+ /*RESULT*/ null,
+ /*INTO*/ null,
+ /*FROM*/ Person.class,
+ /*EXCLUDE*/ null,
+ /*WHERE*/ "firstname = :param",
+ /*VARIABLES*/ null,
+ /*PARAMETERS*/ null,
+ /*IMPORTS*/ null,
+ /*GROUP BY*/ null,
+ /*ORDER BY*/ null,
+ /*FROM*/ null,
+ /*TO*/ null),
+ new QueryElementHolder(
+ /*UNIQUE*/ null,
+ /*RESULT*/ null,
+ /*INTO*/ null,
+ /*FROM*/ Person.class,
+ /*EXCLUDE*/ null,
+ /*WHERE*/ null,
+ /*VARIABLES*/ null,
+ /*PARAMETERS*/ null,
+ /*IMPORTS*/ null,
+ /*GROUP BY*/ null,
+ /*ORDER BY*/ null,
+ /*FROM*/ ":zero",
+ /*TO*/ ":five")
+ };
+
+ /** The expected results of valid queries. */
+ private static String[][] expectedResult = {
+ {"emp1", "emp2", "emp3", "emp4", "emp5"},
+ {"emp1"},
+ {"emp1", "emp2", "emp3", "emp4", "emp5"}
+ };
+
+ /**
+ * The main is called when the class
+ * is directly executed from the command line.
+ * @param args The arguments passed to the program.
+ */
+ public static void main(String[] args) {
+ BatchTestRunner.run(ImplicitParameters.class);
+ }
+
+ /** */
+ public void testResult() {
+ int index = 0;
+ Object[] pcInstances =
+ getCompanyModelInstances(expectedResult[index]);
+ Object[] expectedResultValues = new Object[pcInstances.length];
+ String parameter = "parameterInResult";
+ for (int i = 0; i < expectedResultValues.length; i++) {
+ expectedResultValues[i] = new Object[] {pcInstances[i], parameter};
+ }
+ executeQuery(index, new Object[] {parameter}, expectedResultValues);
+ }
+
+ /** */
+ public void testFilter() {
+ int index = 1;
+ Object[] expectedResultValues =
+ getCompanyModelInstances(expectedResult[index]);
+ executeQuery(index, new Object[] {"emp1First"}, expectedResultValues);
+ }
+
+ /** */
+ public void testRange() {
+ int index = 2;
+ Object[] expectedResultValues =
+ getCompanyModelInstances(expectedResult[index]);
+ executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index],
+ new Object[] {new Long(0), new Long(5)}, expectedResultValues);
+ }
+
+ /**
+ * @see JDO_Test#localSetUp()
+ */
+ protected void localSetUp() {
+ loadCompanyModel(getPM(), COMPANY_TESTDATA);
+ addTearDownClass(CompanyModelReader.getTearDownClasses());
+ }
+
+ /** */
+ private void executeQuery(int index, Object[] parameters, Object[] expectedResultValues) {
+ executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[index],
+ parameters, expectedResultValues);
+ executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index],
+ parameters, expectedResultValues);
+ }
+}
Index: test/conf/alltests.conf
===================================================================
--- test/conf/alltests.conf (Revision 320699)
+++ test/conf/alltests.conf (Arbeitskopie)
@@ -332,6 +332,9 @@
org.apache.jdo.tck.query.jdoql.operators.StringConcatenation \
org.apache.jdo.tck.query.jdoql.operators.UnaryPlus \
org.apache.jdo.tck.query.jdoql.parameters.BoundParameterCheck \
+org.apache.jdo.tck.query.jdoql.parameters.ImplicitParameters \
+org.apache.jdo.tck.query.jdoql.parameters.MixedParameters \
+org.apache.jdo.tck.query.jdoql.parameters.OrderOfParameters \
org.apache.jdo.tck.query.jdoql.parameters.ParameterBoundToDifferentPM \
org.apache.jdo.tck.query.jdoql.parameters.ParameterDeclaredWithSameNameAsFieldOfCandidateClass \
org.apache.jdo.tck.query.jdoql.parameters.PrimitiveParameterPassedAsNull \