You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by br...@apache.org on 2005/10/19 15:16:00 UTC

svn commit: r326551 - in /incubator/jdo/trunk/tck20/test: conf/ java/org/apache/jdo/tck/query/jdoql/parameters/

Author: brazil
Date: Wed Oct 19 06:15:52 2005
New Revision: 326551

URL: http://svn.apache.org/viewcvs?rev=326551&view=rev
Log:
JDO-160: Implement new JDO 2 query tests cases concerning parameters.

Added:
    incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/ImplicitParameters.java
    incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/MixedParameters.java
    incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/OrderOfParameters.java
Modified:
    incubator/jdo/trunk/tck20/test/conf/alltests.conf

Modified: incubator/jdo/trunk/tck20/test/conf/alltests.conf
URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/conf/alltests.conf?rev=326551&r1=326550&r2=326551&view=diff
==============================================================================
--- incubator/jdo/trunk/tck20/test/conf/alltests.conf (original)
+++ incubator/jdo/trunk/tck20/test/conf/alltests.conf Wed Oct 19 06:15:52 2005
@@ -344,6 +344,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 \

Added: incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/ImplicitParameters.java
URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/ImplicitParameters.java?rev=326551&view=auto
==============================================================================
--- incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/ImplicitParameters.java (added)
+++ incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/ImplicitParameters.java Wed Oct 19 06:15:52 2005
@@ -0,0 +1,184 @@
+/*
+ * 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.Employee;
+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;
+
+/**
+ *<B>Title:</B> Implicit parameters.
+ *<BR>
+ *<B>Keywords:</B> query
+ *<BR>
+ *<B>Assertion ID:</B> A14.6.3-3.
+ *<BR>
+ *<B>Assertion Description: </B>
+ * 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*/      "department.name", 
+        /*INTO*/        null, 
+        /*FROM*/        Employee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    "department.name HAVING COUNT(this) >= :min",
+        /*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 Object[][] expectedResult = {
+        {"emp1", "emp2", "emp3", "emp4", "emp5"},
+        {"emp1"},
+        {"Development"}, /* Note: this is not a bean name! */
+        {"emp1", "emp2", "emp3", "emp4", "emp5"}
+    };
+            
+    /**
+     * The <code>main</code> 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(toStringArray(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(toStringArray(expectedResult[index]));
+        executeQuery(index, new Object[] {"emp1First"}, expectedResultValues);
+    }
+    
+    /** */
+    public void testGrouping() {
+        int index = 2;
+        executeQuery(index, new Object[] {new Long(3)}, expectedResult[index]);
+    }
+    
+    /** */
+    public void testRange() {
+        int index = 3;
+        Object[] expectedResultValues = 
+            getCompanyModelInstances(toStringArray(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);
+    }
+    
+    /** */
+    private String[] toStringArray(Object[] array) {
+        String[] result = new String[array.length];
+        System.arraycopy(array, 0, result, 0, result.length);
+        return result;
+    }
+}

Added: incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/MixedParameters.java
URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/MixedParameters.java?rev=326551&view=auto
==============================================================================
--- incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/MixedParameters.java (added)
+++ incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/MixedParameters.java Wed Oct 19 06:15:52 2005
@@ -0,0 +1,135 @@
+/*
+ * 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;
+
+/**
+ *<B>Title:</B> Mixed parameters.
+ *<BR>
+ *<B>Keywords:</B> query
+ *<BR>
+ *<B>Assertion ID:</B> A14.6.3-2.
+ *<BR>
+ *<B>Assertion Description: </B>
+ * 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),
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      null, 
+        /*INTO*/        null, 
+        /*FROM*/        Person.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       "firstname == param1 && lastname == :param2",
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  "String param1",
+        /*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 <code>main</code> 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);
+        }
+    }
+}

Added: incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/OrderOfParameters.java
URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/OrderOfParameters.java?rev=326551&view=auto
==============================================================================
--- incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/OrderOfParameters.java (added)
+++ incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/query/jdoql/parameters/OrderOfParameters.java Wed Oct 19 06:15:52 2005
@@ -0,0 +1,118 @@
+/*
+ * 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;
+
+/**
+ *<B>Title:</B> Order of Parameters.
+ *<BR>
+ *<B>Keywords:</B> query
+ *<BR>
+ *<B>Assertion ID:</B> A14.6.13-3.
+ *<BR>
+ *<B>Assertion Description: </B>
+ * 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),
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      null, 
+        /*INTO*/        null, 
+        /*FROM*/        Person.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       "firstname == :param2 & lastname == :param1",
+        /*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"},
+        {"emp1First", "emp1Last"}
+    };
+            
+    /**
+     * The <code>main</code> 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());
+    }
+}