[teiid-commits] teiid SVN: r2977 - trunk/engine/src/test/java/org/teiid/query/rewriter.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Tue Mar 8 15:26:58 EST 2011


Author: shawkins
Date: 2011-03-08 15:26:58 -0500 (Tue, 08 Mar 2011)
New Revision: 2977

Modified:
   trunk/engine/src/test/java/org/teiid/query/rewriter/TestQueryRewriter.java
Log:
TEIID-1498 expanding the test to include evaluation

Modified: trunk/engine/src/test/java/org/teiid/query/rewriter/TestQueryRewriter.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/rewriter/TestQueryRewriter.java	2011-03-08 19:55:44 UTC (rev 2976)
+++ trunk/engine/src/test/java/org/teiid/query/rewriter/TestQueryRewriter.java	2011-03-08 20:26:58 UTC (rev 2977)
@@ -24,13 +24,17 @@
 
 import static org.junit.Assert.*;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 import java.util.TimeZone;
 
+import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.teiid.api.exception.query.ExpressionEvaluationException;
@@ -44,6 +48,7 @@
 import org.teiid.core.TeiidRuntimeException;
 import org.teiid.core.types.DataTypeManager;
 import org.teiid.core.util.TimestampWithTimezone;
+import org.teiid.query.eval.Evaluator;
 import org.teiid.query.function.FunctionLibrary;
 import org.teiid.query.function.FunctionTree;
 import org.teiid.query.metadata.QueryMetadataInterface;
@@ -118,6 +123,14 @@
             expectedCrit = QueryRewriter.rewriteCriteria(expectedCrit, null, null, metadata);
         }
         return helpTestRewriteCriteria(original, expectedCrit, metadata);
+    }
+    
+    private Map<ElementSymbol, Integer> elements;
+    private List<List> tuples;
+    
+    @Before public void setUp() {
+    	elements = null;
+    	tuples = new ArrayList<List>();
     }
 
     private Criteria helpTestRewriteCriteria(String original, Criteria expectedCrit, QueryMetadataInterface metadata) {
@@ -125,9 +138,16 @@
         
         Criteria actual = null;
         // rewrite
-        try { 
-            actual = QueryRewriter.rewriteCriteria(origCrit, null, null, metadata);
-            assertEquals("Did not rewrite correctly: ", expectedCrit, actual); //$NON-NLS-1$
+        try { 
+        	ArrayList<Boolean> booleanVals = new ArrayList<Boolean>(tuples.size());
+        	for (List<Object> tuple : tuples) {
+            	booleanVals.add(new Evaluator(elements, null, null).evaluate(origCrit, tuple));
+			}
+            actual = QueryRewriter.rewriteCriteria(origCrit, null, null, metadata);
+            assertEquals("Did not rewrite correctly: ", expectedCrit, actual); //$NON-NLS-1$
+            for (int i = 0; i < tuples.size(); i++) {
+            	assertEquals(tuples.get(i).toString(), booleanVals.get(i), new Evaluator(elements, null, null).evaluate(actual, tuples.get(i)));
+			}
         } catch(TeiidException e) { 
         	throw new RuntimeException(e);
         }
@@ -2206,66 +2226,88 @@
     @Test public void testRewriteNullHandling() {
     	String original = "pm1.g1.e1 like '%'"; //$NON-NLS-1$
     	String expected = "pm1.g1.e1 is not null"; //$NON-NLS-1$
+    	addTestData();
     	
     	helpTestRewriteCriteria(original, expected);
     }
+
+	private void addTestData() {
+		this.elements = new HashMap<ElementSymbol, Integer>();
+    	elements.put(new ElementSymbol("pm1.g1.e1"), 0);
+    	elements.put(new ElementSymbol("pm1.g1.e2"), 1);
+    	elements.put(new ElementSymbol("pm1.g1.e3"), 2);
+    	for (String s : Arrays.asList("a", null, "*")) {
+			for (Integer i : Arrays.asList(1, null, 6)) {
+	    		for (Boolean b : Arrays.asList(true, false, null)) {
+    		    	tuples.add(Arrays.asList(s, i, b));
+    			}
+    		}
+		}
+	}
     
     @Test public void testRewriteNullHandling1() {
     	String original = "not(pm1.g1.e1 like '%' or pm1.g1.e1 = '1')"; //$NON-NLS-1$
     	String expected = "1 = 0"; //$NON-NLS-1$
-    	
+    	addTestData();
     	helpTestRewriteCriteria(original, expected);
     }
     
     @Test public void testRewriteNullHandling2() {
     	String original = "not(pm1.g1.e1 like '%' and pm1.g1.e1 = '1')"; //$NON-NLS-1$
     	String expected = "pm1.g1.e1 <> '1'"; //$NON-NLS-1$
-    	
+    	addTestData();
     	helpTestRewriteCriteria(original, expected);
     }
     
     @Test public void testRewriteNullHandling3() {
     	String original = "pm1.g1.e1 like '%' or pm1.g1.e1 = '1'"; //$NON-NLS-1$
     	String expected = "(pm1.g1.e1 IS NOT NULL) OR (pm1.g1.e1 = '1')"; //$NON-NLS-1$
-    	
+    	addTestData();
     	helpTestRewriteCriteria(original, expected);
     }
     
     @Test public void testRewriteNullHandling4() {
-    	String original = "not((pm1.g1.e1 like '%' or pm1.g1.e2 = 1) and pm1.g1.e2 < 5)"; //$NON-NLS-1$
+    	String original = "not((pm1.g1.e1 like '%' or pm1.g1.e3 = true) and pm1.g1.e2 < 5)"; //$NON-NLS-1$
     	String expected = "pm1.g1.e2 >= 5"; //$NON-NLS-1$
-    	
+    	addTestData();
     	helpTestRewriteCriteria(original, expected);
     }
     
     @Test public void testRewriteNullHandling4a() {
-    	String original = "not(not((pm1.g1.e1 like '%' or pm1.g1.e2 = 1) and pm1.g1.e2 < 5))"; //$NON-NLS-1$
-    	String expected = "((pm1.g1.e1 IS NOT NULL) OR (pm1.g1.e2 = 1)) AND (pm1.g1.e2 < 5)"; //$NON-NLS-1$
-    	
+    	String original = "not(not((pm1.g1.e1 like '%' or pm1.g1.e3 = true) and pm1.g1.e2 < 5))"; //$NON-NLS-1$
+    	String expected = "((pm1.g1.e1 IS NOT NULL) OR (pm1.g1.e3 = TRUE)) AND (pm1.g1.e2 < 5)"; //$NON-NLS-1$
+    	addTestData();
     	helpTestRewriteCriteria(original, expected);
     }
     
     @Test public void testRewriteNullHandling5() {
-    	String original = "not((pm1.g1.e1 not like '%' or pm1.g1.e2 = 1) and pm1.g1.e2 < 5)"; //$NON-NLS-1$
-    	String expected = "((pm1.g1.e1 IS NOT NULL) AND (pm1.g1.e2 <> 1)) OR (pm1.g1.e2 >= 5)"; //$NON-NLS-1$
-    	
+    	String original = "not((pm1.g1.e1 not like '%' or pm1.g1.e3 = true) and pm1.g1.e2 < 5)"; //$NON-NLS-1$
+    	String expected = "((pm1.g1.e1 IS NOT NULL) AND (pm1.g1.e3 <> TRUE)) OR (pm1.g1.e2 >= 5)"; //$NON-NLS-1$
+    	addTestData();
     	helpTestRewriteCriteria(original, expected);
     }
     
     @Test public void testRewriteNullHandling6() {
-    	String original = "not((pm1.g1.e1 not like '%' and pm1.g1.e2 = 1) or pm1.g1.e2 < 5)"; //$NON-NLS-1$
-    	String expected = "((pm1.g1.e1 IS NOT NULL) OR (pm1.g1.e2 <> 1)) AND (pm1.g1.e2 >= 5)"; //$NON-NLS-1$
-    	
+    	String original = "not((pm1.g1.e1 not like '%' and pm1.g1.e3 = true) or pm1.g1.e2 < 5)"; //$NON-NLS-1$
+    	String expected = "((pm1.g1.e1 IS NOT NULL) OR (pm1.g1.e3 <> TRUE)) AND (pm1.g1.e2 >= 5)"; //$NON-NLS-1$
+    	addTestData();
     	helpTestRewriteCriteria(original, expected);
     }
     
     @Test public void testRewriteNullHandling7() {
-    	String original = "not(not(pm1.g1.e1 not like '%' and pm1.g1.e2 = 1) or pm1.g1.e2 < 5)"; //$NON-NLS-1$
+    	String original = "not(not(pm1.g1.e1 not like '%' and pm1.g1.e3 = true) or pm1.g1.e2 < 5)"; //$NON-NLS-1$
     	String expected = "1 = 0"; //$NON-NLS-1$
-    	
+    	addTestData();
     	helpTestRewriteCriteria(original, expected);
     }
     
+    @Test public void testRewriteNullHandling7a() {
+    	String original = "not(not(pm1.g1.e1 like '*%' and pm1.g1.e3 = true) or pm1.g1.e2 < 5)"; //$NON-NLS-1$
+    	String expected = "(pm1.g1.e1 LIKE '*%') AND (pm1.g1.e3 = TRUE) AND (pm1.g1.e2 >= 5)"; //$NON-NLS-1$
+    	addTestData();
+    	helpTestRewriteCriteria(original, expected);
+    }
+    
     @Test public void testRewriteChar() {
     	String original = "convert(pm1.g1.e1, char) = '100'"; //$NON-NLS-1$
     	String expected = "1 = 0"; //$NON-NLS-1$



More information about the teiid-commits mailing list