/** 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); }
@Test public void testNoParams3() throws Exception { List list = new ArrayList(); list.add(ExpressionFactory.matchExp("k1", new ExpressionParameter("test1"))); list.add(ExpressionFactory.matchExp("k2", new ExpressionParameter("test2"))); list.add(ExpressionFactory.matchExp("k3", new ExpressionParameter("test3"))); list.add(ExpressionFactory.matchExp("k4", new ExpressionParameter("test4"))); Expression e1 = ExpressionFactory.joinExp(Expression.OR, list); Map params = new HashMap(); params.put("test4", "123"); Expression e2 = e1.params(params, true); // some expression nodes must be pruned assertNotNull(e2); assertTrue("List expression: " + e2, !(e2 instanceof ASTList)); assertEquals(2, e2.getOperandCount()); assertEquals("123", e2.getOperand(1)); assertEquals("k4", ((Expression) e2.getOperand(0)).getOperand(0)); }