db-jdo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From c..@apache.org
Subject svn commit: r693243 - in /db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/query/result: VariableInResultMultipleNavigation.java VariableInResultNavigation.java
Date Mon, 08 Sep 2008 20:23:47 GMT
Author: clr
Date: Mon Sep  8 13:23:47 2008
New Revision: 693243

URL: http://svn.apache.org/viewvc?rev=693243&view=rev
Log:
JDO-573 Move failing test case to new class VariableInResultMultipleNavigation from VariableInResultNavigation

Added:
    db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/query/result/VariableInResultMultipleNavigation.java
  (with props)
Modified:
    db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/query/result/VariableInResultNavigation.java

Added: db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/query/result/VariableInResultMultipleNavigation.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/query/result/VariableInResultMultipleNavigation.java?rev=693243&view=auto
==============================================================================
--- db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/query/result/VariableInResultMultipleNavigation.java
(added)
+++ db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/query/result/VariableInResultMultipleNavigation.java
Mon Sep  8 13:23:47 2008
@@ -0,0 +1,196 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.result;
+
+import java.util.Arrays;
+
+import org.apache.jdo.tck.pc.company.CompanyModelReader;
+import org.apache.jdo.tck.pc.company.Company;
+import org.apache.jdo.tck.pc.company.Department;
+import org.apache.jdo.tck.query.QueryElementHolder;
+import org.apache.jdo.tck.query.QueryTest;
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+/**
+ *<B>Title:</B> Variable in Result.
+ *<BR>
+ *<B>Keywords:</B> query
+ *<BR>
+ *<B>Assertion ID:</B> A14.6.9-3.
+ *<BR>
+ *<B>Assertion Description: </B>
+ * If a variable or a field of a variable is included in the result, 
+ * either directly or via navigation through the variable, 
+ * then the semantics of the contains clause that include the variable change. 
+ * In this case, all values of the variable 
+ * that satisfy the filter are included in the result.
+ * Result expressions begin with either an instance of the candidate class 
+ * (with an explicit or implicit "this") or an instance of a variable 
+ * (using the variable name). The candidate tuples are the cartesian product 
+ * of the candidate class and all variables used in the result. The result 
+ * tuples are the tuples of the candidate class and all variables used 
+ * in the result that satisfy the filter. 
+ * The result is the collection of result expressions projected from the 
+ * result tuples. 
+ * 
+ * This test differs from VariableInResult by extending the navigation
+ * of variables. It navigates from the candidate Department class to include
+ * fields in the corresponding Company. It navigates from the candidate
+ * Company class to Department, Employee, and Project.
+ */
+public class VariableInResultMultipleNavigation extends QueryTest {
+
+    /** */
+    private static final String ASSERTION_FAILED = 
+        "Assertion A14.6.9-3 (VariableInResult) 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, d, e, p",
+        /*INTO*/        null, 
+        /*FROM*/        Company.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       "name == \"Sun Microsystems, Inc.\" && departments.contains(d)
&& d.employees.contains(e) && e.projects.contains(p)",
+        /*VARIABLES*/   "Department d; Employee e; Project p",
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "this, e, p",
+        /*INTO*/        null, 
+        /*FROM*/        Company.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       "name == \"Sun Microsystems, Inc.\" && departments.contains(d)
&& d.employees.contains(e) && e.projects.contains(p)",
+        /*VARIABLES*/   "Department d; Employee e; Project p",
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "d, e, p",
+        /*INTO*/        null, 
+        /*FROM*/        Company.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       "name == \"Sun Microsystems, Inc.\" && departments.contains(d)
&& d.employees.contains(e) && e.projects.contains(p)",
+        /*VARIABLES*/   "Department d; Employee e; Project p",
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null)
+    };
+    
+    /** 
+     * The expected results of valid queries.
+     */
+    private Object company1 = getTransientCompanyModelInstance("company1");
+    private Object emp1 = getTransientCompanyModelInstance("emp1");
+    private Object emp2 = getTransientCompanyModelInstance("emp2");
+    private Object emp3 = getTransientCompanyModelInstance("emp3");
+    private Object emp4 = getTransientCompanyModelInstance("emp4");
+    private Object emp5 = getTransientCompanyModelInstance("emp5");
+    private Object proj1 = getTransientCompanyModelInstance("proj1");
+    private Object proj2 = getTransientCompanyModelInstance("proj2");
+    private Object proj3 = getTransientCompanyModelInstance("proj3");
+    private Object dept1 = getTransientCompanyModelInstance("dept1");
+    private Object dept2 = getTransientCompanyModelInstance("dept2");
+
+    private Object[] expectedResult = {
+        Arrays.asList(new Object[] {
+            new Object[] {company1, dept1, emp1, proj1},
+            new Object[] {company1, dept1, emp2, proj1},
+            new Object[] {company1, dept1, emp3, proj1},
+            new Object[] {company1, dept1, emp2, proj2},
+            new Object[] {company1, dept1, emp3, proj2},
+            new Object[] {company1, dept2, emp4, proj3},
+            new Object[] {company1, dept2, emp5, proj3}}),
+        Arrays.asList(new Object[] {
+            new Object[] {company1, emp1, proj1},
+            new Object[] {company1, emp2, proj1},
+            new Object[] {company1, emp3, proj1},
+            new Object[] {company1, emp2, proj2},
+            new Object[] {company1, emp3, proj2},
+            new Object[] {company1, emp4, proj3},
+            new Object[] {company1, emp5, proj3}}),
+        Arrays.asList(new Object[] {
+            new Object[] {dept1, emp1, proj1},
+            new Object[] {dept1, emp2, proj1},
+            new Object[] {dept1, emp3, proj1},
+            new Object[] {dept1, emp2, proj2},
+            new Object[] {dept1, emp3, proj2},
+            new Object[] {dept2, emp4, proj3},
+            new Object[] {dept2, emp5, proj3}})
+    };
+
+    /**
+     * 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(VariableInResult.class);
+    }
+    
+    /** */
+    public void testNavigationWithCompanyAndDepartmentAndEmployeeAndProject() {
+        int index = 0;
+        executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
+                expectedResult[index]);
+        executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
+                expectedResult[index]);
+    }
+
+    /** */
+    public void testNavigationWithCompanyAndEmployeeAndProject() {
+        int index = 1;
+        executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
+                expectedResult[index]);
+        executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
+                expectedResult[index]);
+    }
+
+    /** */
+    public void testNavigationWithDepartmentAndEmployeeAndProject() {
+        int index = 2;
+        executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
+                expectedResult[index]);
+        executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
+                expectedResult[index]);
+    }
+
+    /**
+     * @see QueryTest#localSetUp()
+     */
+    protected void localSetUp() {
+        addTearDownClass(CompanyModelReader.getTearDownClasses());
+        loadAndPersistCompanyModel(getPM());
+    }
+}

Propchange: db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/query/result/VariableInResultMultipleNavigation.java
------------------------------------------------------------------------------
    svn:eol-style = LF

Modified: db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/query/result/VariableInResultNavigation.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/query/result/VariableInResultNavigation.java?rev=693243&r1=693242&r2=693243&view=diff
==============================================================================
--- db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/query/result/VariableInResultNavigation.java
(original)
+++ db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/query/result/VariableInResultNavigation.java
Mon Sep  8 13:23:47 2008
@@ -108,20 +108,6 @@
         /*TO*/          null),
         new QueryElementHolder(
         /*UNIQUE*/      null,
-        /*RESULT*/      "this, e, p",
-        /*INTO*/        null, 
-        /*FROM*/        Company.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       "name == \"Sun Microsystems, Inc.\" && departments.contains(d)
&& d.employees.contains(e) && e.projects.contains(p)",
-        /*VARIABLES*/   "Department d; Employee e; Project p",
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
         /*RESULT*/      "e, p",
         /*INTO*/        null, 
         /*FROM*/        Department.class,
@@ -186,14 +172,6 @@
             new Object[] {dept2, emp4, proj3},
             new Object[] {dept2, emp5, proj3}}),
         Arrays.asList(new Object[] {
-            new Object[] {dept1, emp1, proj1},
-            new Object[] {dept1, emp2, proj1},
-            new Object[] {dept1, emp3, proj1},
-            new Object[] {dept1, emp2, proj2},
-            new Object[] {dept1, emp3, proj2},
-            new Object[] {dept2, emp4, proj3},
-            new Object[] {dept2, emp5, proj3}}),
-        Arrays.asList(new Object[] {
             new Object[] {emp1, proj1},
             new Object[] {emp2, proj1},
             new Object[] {emp3, proj1},
@@ -246,17 +224,8 @@
     }
 
     /** */
-    public void testNavigationWithThisAndCompany() {
-        int index = 3;
-        executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
-                expectedResult[index]);
-        executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
-                expectedResult[index]);
-    }
-
-    /** */
     public void testNavigationWithThisConstraint() {
-        int index = 4;
+        int index = 3;
         executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
                 expectedResult[index]);
         executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
@@ -265,7 +234,7 @@
 
     /** */
     public void testNavigationWithCompanyConstraint() {
-        int index = 5;
+        int index = 4;
         executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
                 expectedResult[index]);
         executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index], 



Mime
View raw message