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 \