Author: andy
Date: Sun Apr 20 14:10:48 2014
New Revision: 1588764

URL: http://svn.apache.org/r1588764
Log:
JENA-684 : The test code.
Rename TableLib to TableJoin in engine package.

Added:
    
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/TableJoin.java
      - copied, changed from r1588743, 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/TableLib.java
    
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/TestTableLib.java
   (with props)
Removed:
    
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/TableLib.java
Modified:
    
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/main/iterator/QueryIterJoinBase.java
    
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/ref/EvaluatorSimple.java
    
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/TS_Engine.java

Copied: 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/TableJoin.java 
(from r1588743, 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/TableLib.java)
URL: 
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/TableJoin.java?p2=jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/TableJoin.java&p1=jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/TableLib.java&r1=1588743&r2=1588764&rev=1588764&view=diff
==============================================================================
--- 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/TableLib.java 
(original)
+++ 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/TableJoin.java 
Sun Apr 20 14:10:48 2014
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package com.hp.hpl.jena.sparql.algebra;
+package com.hp.hpl.jena.sparql.engine;
 
 import static com.hp.hpl.jena.sparql.algebra.JoinType.* ;
 
@@ -24,9 +24,10 @@ import java.util.ArrayList ;
 import java.util.Iterator ;
 import java.util.List ;
 
+import com.hp.hpl.jena.sparql.algebra.Algebra ;
+import com.hp.hpl.jena.sparql.algebra.JoinType ;
+import com.hp.hpl.jena.sparql.algebra.Table ;
 import com.hp.hpl.jena.sparql.algebra.table.TableUnit ;
-import com.hp.hpl.jena.sparql.engine.ExecutionContext ;
-import com.hp.hpl.jena.sparql.engine.QueryIterator ;
 import com.hp.hpl.jena.sparql.engine.binding.Binding ;
 import com.hp.hpl.jena.sparql.engine.iterator.QueryIterFilterExpr ;
 import com.hp.hpl.jena.sparql.engine.iterator.QueryIterNullIterator ;
@@ -35,7 +36,7 @@ import com.hp.hpl.jena.sparql.expr.Expr 
 import com.hp.hpl.jena.sparql.expr.ExprList ;
 
 /** Table join - this only haoppens if the patterns can not be streamed. */  
-public class TableLib
+public class TableJoin
 {
     public static QueryIterator join(QueryIterator left, Table right, ExprList 
condition, ExecutionContext execCxt) {
         return joinWorker(left, right, PLAIN, condition, execCxt) ;

Modified: 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/main/iterator/QueryIterJoinBase.java
URL: 
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/main/iterator/QueryIterJoinBase.java?rev=1588764&r1=1588763&r2=1588764&view=diff
==============================================================================
--- 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/main/iterator/QueryIterJoinBase.java
 (original)
+++ 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/main/iterator/QueryIterJoinBase.java
 Sun Apr 20 14:10:48 2014
@@ -21,9 +21,9 @@ package com.hp.hpl.jena.sparql.engine.ma
 import com.hp.hpl.jena.sparql.algebra.JoinType ;
 import com.hp.hpl.jena.sparql.algebra.Table ;
 import com.hp.hpl.jena.sparql.algebra.TableFactory ;
-import com.hp.hpl.jena.sparql.algebra.TableLib ;
 import com.hp.hpl.jena.sparql.engine.ExecutionContext ;
 import com.hp.hpl.jena.sparql.engine.QueryIterator ;
+import com.hp.hpl.jena.sparql.engine.TableJoin ;
 import com.hp.hpl.jena.sparql.engine.binding.Binding ;
 import com.hp.hpl.jena.sparql.engine.iterator.QueryIter ;
 import com.hp.hpl.jena.sparql.expr.ExprList ;
@@ -49,7 +49,7 @@ public class QueryIterJoinBase extends Q
 
     private static QueryIterator calc(QueryIterator left, QueryIterator right, 
JoinType joinType, ExprList exprs, ExecutionContext execCxt) {
         Table tableRight = TableFactory.create(right) ;
-        return TableLib.joinWorker(left, tableRight, joinType, exprs, execCxt) 
;
+        return TableJoin.joinWorker(left, tableRight, joinType, exprs, 
execCxt) ;
 
     }
     

Modified: 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/ref/EvaluatorSimple.java
URL: 
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/ref/EvaluatorSimple.java?rev=1588764&r1=1588763&r2=1588764&view=diff
==============================================================================
--- 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/ref/EvaluatorSimple.java
 (original)
+++ 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/engine/ref/EvaluatorSimple.java
 Sun Apr 20 14:10:48 2014
@@ -34,6 +34,7 @@ import com.hp.hpl.jena.sparql.core.VarEx
 import com.hp.hpl.jena.sparql.engine.ExecutionContext ;
 import com.hp.hpl.jena.sparql.engine.QueryIterator ;
 import com.hp.hpl.jena.sparql.engine.ResultSetStream ;
+import com.hp.hpl.jena.sparql.engine.TableJoin ;
 import com.hp.hpl.jena.sparql.engine.binding.Binding ;
 import com.hp.hpl.jena.sparql.engine.iterator.* ;
 import com.hp.hpl.jena.sparql.engine.main.QC ;
@@ -275,7 +276,7 @@ public class EvaluatorSimple implements 
         // Have an iterator that yields one-by-one.
         QueryIterator left = tableLeft.iterator(execCxt) ;
         JoinType joinType = (leftJoin? JoinType.LEFT : JoinType.PLAIN ) ;
-        QueryIterator qIter = TableLib.joinWorker(left, tableRight, joinType, 
conditions, execCxt) ;
+        QueryIterator qIter = TableJoin.joinWorker(left, tableRight, joinType, 
conditions, execCxt) ;
         tableLeft.close() ;
         tableRight.close() ;
         return new TableN(qIter) ;

Modified: 
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/TS_Engine.java
URL: 
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/TS_Engine.java?rev=1588764&r1=1588763&r2=1588764&view=diff
==============================================================================
--- 
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/TS_Engine.java 
(original)
+++ 
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/TS_Engine.java 
Sun Apr 20 14:10:48 2014
@@ -29,6 +29,7 @@ import com.hp.hpl.jena.sparql.engine.ite
 @RunWith(Suite.class)
 @Suite.SuiteClasses( {
         TestBindingStreams.class
+      , TestTableLib.class
       , TestQueryIterSort.class
       , TestService.class
       , TestQueryEngineHTTP.class

Added: 
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/TestTableLib.java
URL: 
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/TestTableLib.java?rev=1588764&view=auto
==============================================================================
--- 
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/TestTableLib.java
 (added)
+++ 
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/TestTableLib.java
 Sun Apr 20 14:10:48 2014
@@ -0,0 +1,119 @@
+/**
+ * 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 com.hp.hpl.jena.sparql.engine;
+
+import java.util.HashSet ;
+import java.util.Set ;
+
+import org.apache.jena.atlas.junit.BaseTest ;
+import org.junit.Test ;
+
+import com.hp.hpl.jena.query.ARQ ;
+import com.hp.hpl.jena.query.ResultSet ;
+import com.hp.hpl.jena.query.ResultSetFactory ;
+import com.hp.hpl.jena.sparql.algebra.Table ;
+import com.hp.hpl.jena.sparql.algebra.table.TableEmpty ;
+import com.hp.hpl.jena.sparql.algebra.table.TableN ;
+import com.hp.hpl.jena.sparql.algebra.table.TableUnit ;
+import com.hp.hpl.jena.sparql.engine.ExecutionContext ;
+import com.hp.hpl.jena.sparql.engine.QueryIterator ;
+import com.hp.hpl.jena.sparql.expr.ExprList ;
+import com.hp.hpl.jena.sparql.resultset.ResultSetCompare ;
+import com.hp.hpl.jena.sparql.sse.SSE ;
+
+public class TestTableLib extends BaseTest
+{
+    Table unit = new TableUnit() ; 
+    Table zero = new TableEmpty() ;
+    Table zeroData = SSE.parseTable("(table)") ;
+    Table unitData = SSE.parseTable("(table (row))") ;
+    Table data1 = SSE.parseTable("(table (row (?a 1) (?b 2)))") ;
+    Table data2 = SSE.parseTable("(table (row (?a 1) (?c 3)) (row (?a 9) (?c 
5))  )") ;
+    Table data3 = SSE.parseTable("(table (row (?a 1) (?c 3)) (row (?a 1) (?c 
4)) (row (?a 9) (?c 5))  )") ;
+    
+    Table data1J2 = SSE.parseTable("(table (row (?a 1) (?b 2) (?c 3)) )") ;
+    Table data1LJ2 = SSE.parseTable("(table (row (?a 1) (?b 2) (?c 3)) (row 
(?a 9) (?c 5)) )") ;
+    Table data2LJ1 = SSE.parseTable("(table (row (?a 1) (?b 2) (?c 3)) )") ;
+    
+    Table data1J3 = SSE.parseTable("(table (row (?a 1) (?b 2) (?c 3)) (row (?a 
1) (?b 2) (?c 4)) )") ;
+    
+    @Test public void table_01() { test(unit, zero, true, null, zero) ; }
+    @Test public void table_02() { test(zero, unit, true, null, zero) ; }
+    @Test public void table_03() { test(unit, zero, false, null, unit) ; }
+    @Test public void table_04() { test(zero, unit, false, null, zero) ; }
+    // Same again but with non-special tables.
+    @Test public void table_05() { test(unitData, zeroData, true, null, 
zeroData) ; }
+    @Test public void table_06() { test(zeroData, unitData, true, null, 
zeroData) ; }
+    @Test public void table_07() { test(unitData, zeroData, false, null, 
unitData) ; }
+    @Test public void table_08() { test(zeroData, unitData, false, null, 
zeroData) ; }
+
+    @Test public void table_10() { test(data1, zero, true, null, zero) ; }
+    @Test public void table_11() { test(zero, data1, true, null, zero) ; }
+    @Test public void table_12() { test(data1, zero, false, null, data1) ; }
+    @Test public void table_13() { test(zero, data1, false, null, zero) ; }
+    
+    @Test public void table_14() { test(data1, zeroData, true, null, zeroData) 
; }
+    @Test public void table_15() { test(zeroData, data1, true, null, zeroData) 
; }
+    @Test public void table_16() { test(data1, zeroData, false, null, data1) ; 
}
+    @Test public void table_17() { test(zeroData, data1, false, null, 
zeroData) ; }
+
+    @Test public void table_18() { test(data2, unitData, true, null, data2) ; }
+    @Test public void table_19() { test(unitData, data2, true, null, data2) ; }
+    
+    @Test public void table_20() { test(data1, data2, true, null, data1J2) ; }
+    @Test public void table_21() { test(data2, data1, true, null, data1J2) ; }
+    @Test public void table_22() { test(data1, data2, false, null, data1LJ2) ; 
}
+    @Test public void table_23() { test(data2, data1, false, null, data2LJ1) ; 
}
+    
+    @Test public void table_24() { test(data1, data3, true, null, data1J3) ; }
+    @Test public void table_25() { test(data3, data1, true, null, data1J3) ; }
+
+    private void test(Table left, Table right, boolean normalJoin, ExprList 
exprs, Table expected) {
+        ExecutionContext execCxt = new ExecutionContext(ARQ.getContext(), 
null, null, null) ;
+        QueryIterator leftIter = left.iterator(execCxt) ;
+        QueryIterator qIter = normalJoin 
+            ? TableJoin.join(leftIter, right, exprs, execCxt)
+            : TableJoin.leftJoin(leftIter, right, exprs, execCxt) ;
+        
+            // Order issues
+            
+        Set<String> vars1 = new HashSet<String>() ;
+        vars1.addAll(left.getVarNames()) ;
+        vars1.addAll(right.getVarNames()) ;
+        
+        TableN results = new TableN(qIter) ;
+        boolean b = TableCompare.equalsByTerm(expected, results) ;
+        if ( !b ) {
+            System.out.println("** Expected") ;
+            System.out.println(expected) ;
+            System.out.println("** Actual") ;
+            System.out.println(results) ;
+        }
+        assertTrue(b) ;
+    }
+    
+    static class TableCompare {
+        public static boolean equalsByTerm(Table table1, Table table2) {
+            ResultSet rs1 = ResultSetFactory.create(table1.iterator(null), 
table1.getVarNames()) ;
+            ResultSet rs2 = ResultSetFactory.create(table2.iterator(null), 
table2.getVarNames()) ;
+            return ResultSetCompare.equalsByTerm(rs1, rs2) ;
+        }
+    }
+        
+}

Propchange: 
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/engine/TestTableLib.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to