You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2013/08/03 18:24:37 UTC

svn commit: r1510034 - in /cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/exp: ParametrizedExpressionTest.java parser/ParameterizedExpressionTest.java

Author: aadamchik
Date: Sat Aug  3 16:24:36 2013
New Revision: 1510034

URL: http://svn.apache.org/r1510034
Log:
merging two tests with the same name

Removed:
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/exp/parser/ParameterizedExpressionTest.java
Modified:
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/exp/ParametrizedExpressionTest.java

Modified: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/exp/ParametrizedExpressionTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/exp/ParametrizedExpressionTest.java?rev=1510034&r1=1510033&r2=1510034&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/exp/ParametrizedExpressionTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/exp/ParametrizedExpressionTest.java Sat Aug  3 16:24:36 2013
@@ -98,7 +98,7 @@ public class ParametrizedExpressionTest 
 
     public void testInParameter_AsValues() throws Exception {
         Expression inExp = Expression.fromString("k1 in ($ap, $bp)");
-        
+
         String e1String = "k1 in (\"a\", \"b\")";
         Expression e1 = Expression.fromString(e1String);
 
@@ -107,7 +107,7 @@ public class ParametrizedExpressionTest 
         params.put("bp", "b");
         Expression transformed = inExp.expWithParameters(params);
         TstTraversalHandler.compareExps(e1, transformed);
-        
+
         assertEquals(e1String, transformed.toString());
 
         // just in case manually check params
@@ -251,4 +251,119 @@ public class ParametrizedExpressionTest 
         // null must be preserved
         assertEquals(Expression.fromString("abc = 3 and x = null"), e2);
     }
+
+    public void testNulls() {
+        Expression e1 = Expression.fromString("x = null");
+        Expression e2 = e1.expWithParameters(Collections.EMPTY_MAP, true);
+        assertNotNull(e2);
+        TstTraversalHandler.compareExps(e1, e2);
+    }
+
+    /**
+     * Tests how parameter substitution algorithm works on an expression with no
+     * parameters.
+     * 
+     * @throws Exception
+     */
+    public void testCopy1_FromString() {
+        Expression e1 = Expression.fromString("k1 = 'v1' or k2 = 'v2' or k3 = 'v3'");
+        Expression e2 = e1.expWithParameters(Collections.EMPTY_MAP, true);
+        TstTraversalHandler.compareExps(e1, e2);
+    }
+
+    /**
+     * Tests how parameter substitution algorithm works on an expression with no
+     * parameters.
+     */
+    public void testCopy2_FromString() {
+        Expression e1 = Expression.fromString("(k1 = 'v1' and k2 = 'v2' and k3 = 'v3') or (k1 = 'v1')");
+        Expression e2 = e1.expWithParameters(Collections.EMPTY_MAP, true);
+        TstTraversalHandler.compareExps(e1, e2);
+    }
+
+    public void testCopy3_FromString() {
+        Expression e1 = Expression.fromString("(k1 / 2) = (k2 * 2)");
+        Expression e2 = e1.expWithParameters(Collections.EMPTY_MAP, true);
+        TstTraversalHandler.compareExps(e1, e2);
+    }
+
+    /**
+     * Tests how parameter substitution algorithm works on an expression with no
+     * parameters.
+     */
+    public void testFailOnMissingParams_FromString() {
+        Expression e1 = Expression.fromString("k1 = $test or k2 = 'v2' or k3 = 'v3'");
+
+        try {
+            e1.expWithParameters(Collections.EMPTY_MAP, false);
+            fail("Parameter was missing, but no exception was thrown.");
+        } catch (ExpressionException ex) {
+            // exception expected
+        }
+    }
+
+    public void testParams1_FromString() {
+        Expression e1 = Expression.fromString("k1 = $test");
+
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("test", "xyz");
+        Expression e2 = e1.expWithParameters(map, false);
+        assertNotNull(e2);
+        assertEquals(2, e2.getOperandCount());
+        assertEquals(Expression.EQUAL_TO, e2.getType());
+        assertEquals("xyz", e2.getOperand(1));
+    }
+
+    public void testParams2_FromString() {
+        Expression e1 = Expression.fromString("k1 like $test");
+
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("test", "xyz");
+        Expression e2 = e1.expWithParameters(map, false);
+        assertNotNull(e2);
+        assertEquals(2, e2.getOperandCount());
+        assertEquals(Expression.LIKE, e2.getType());
+        assertEquals("xyz", e2.getOperand(1));
+    }
+
+    public void testNoParams1_FromString() {
+        Expression e1 = Expression.fromString("k1 = $test");
+        Expression e2 = e1.expWithParameters(Collections.EMPTY_MAP, true);
+
+        // all expression nodes must be pruned
+        assertNull(e2);
+    }
+
+    public void testNoParams2_FromString() {
+        Expression e1 = Expression.fromString("k1 = $test1 or k2 = $test2 or k3 = $test3 or k4 = $test4");
+
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("test2", "abc");
+        params.put("test3", "xyz");
+        Expression e2 = e1.expWithParameters(params, true);
+
+        // some expression nodes must be pruned
+        assertNotNull(e2);
+        assertEquals(2, e2.getOperandCount());
+
+        Expression k2 = (Expression) e2.getOperand(0);
+        assertEquals("abc", k2.getOperand(1));
+
+        Expression k3 = (Expression) e2.getOperand(1);
+        assertEquals("xyz", k3.getOperand(1));
+    }
+
+    public void testNoParams3_FromString() {
+        Expression e1 = Expression.fromString("k1 = $test1 or k2 = $test2 or k3 = $test3 or k4 = $test4");
+
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("test4", "123");
+        Expression e2 = e1.expWithParameters(params, true);
+
+        // some expression nodes must be pruned
+        assertNotNull(e2);
+        assertEquals(2, e2.getOperandCount());
+        assertEquals("123", e2.getOperand(1));
+        assertEquals("k4", ((Expression) e2.getOperand(0)).getOperand(0));
+    }
 }