@Test public void testNulls() { Expression e1 = ExpressionFactory.exp("x = null"); Expression e2 = e1.params(Collections.EMPTY_MAP, true); assertNotNull(e2); TstTraversalHandler.compareExps(e1, e2); }
/** Tests how parameter substitution algorithm works on an expression with no parameters. */ @Test public void testCopy1() throws Exception { Expression e1 = ExpressionFactory.matchExp("k1", "v1"); e1 = e1.orExp(ExpressionFactory.matchExp("k2", "v2")); e1 = e1.orExp(ExpressionFactory.matchExp("k3", "v3")); Expression e2 = e1.params(new HashMap()); TstTraversalHandler.compareExps(e1, e2); }
/** Tests how parameter substitution algorithm works on an expression with no parameters. */ @Test public void testCopy2() throws Exception { Expression andExp = ExpressionFactory.matchExp("k1", "v1"); andExp = andExp.andExp(ExpressionFactory.matchExp("k2", "v2")); andExp = andExp.andExp(ExpressionFactory.matchExp("k3", "v3")); List exprs = new ArrayList(); exprs.add(andExp); exprs.add(ExpressionFactory.matchExp("k1", "v1")); Expression e1 = ExpressionFactory.joinExp(Expression.OR, exprs); Expression e2 = e1.params(new HashMap()); TstTraversalHandler.compareExps(e1, e2); }
/** Tests how parameter substitution algorithm works on an expression with no parameters. */ @Test public void testInParameter() throws Exception { Expression inExp = ExpressionFactory.exp("k1 in $test"); Expression e1 = ExpressionFactory.exp("k1 in ('a', 'b')"); Expression transformed = inExp.params(Collections.singletonMap("test", new Object[] {"a", "b"})); TstTraversalHandler.compareExps(e1, transformed); // just in case manually check params DataObject o1 = new CayenneDataObject(); o1.writePropertyDirectly("k1", "a"); assertTrue(transformed.match(o1)); DataObject o2 = new CayenneDataObject(); o2.writePropertyDirectly("k1", "x"); assertFalse(transformed.match(o2)); }
@Test public void testInParameter_AsValues() throws Exception { Expression inExp = ExpressionFactory.exp("k1 in ($ap, $bp)"); String e1String = "k1 in (\"a\", \"b\")"; Expression e1 = ExpressionFactory.exp(e1String); Map<String, Object> params = new HashMap<String, Object>(); params.put("ap", "a"); params.put("bp", "b"); Expression transformed = inExp.params(params); TstTraversalHandler.compareExps(e1, transformed); assertEquals(e1String, transformed.toString()); // just in case manually check params DataObject o1 = new CayenneDataObject(); o1.writePropertyDirectly("k1", "a"); assertTrue(transformed.match(o1)); DataObject o2 = new CayenneDataObject(); o2.writePropertyDirectly("k1", "x"); assertFalse(transformed.match(o2)); }
@Test public void testCopy3_FromString() { Expression e1 = ExpressionFactory.exp("(k1 / 2) = (k2 * 2)"); Expression e2 = e1.params(Collections.EMPTY_MAP); TstTraversalHandler.compareExps(e1, e2); }
/** Tests how parameter substitution algorithm works on an expression with no parameters. */ @Test public void testCopy2_FromString() { Expression e1 = ExpressionFactory.exp("(k1 = 'v1' and k2 = 'v2' and k3 = 'v3') or (k1 = 'v1')"); Expression e2 = e1.params(Collections.EMPTY_MAP); TstTraversalHandler.compareExps(e1, e2); }