/* * ************************************************************************************* * Copyright (C) 2008 EsperTech, Inc. All rights reserved. * * http://esper.codehaus.org * * http://www.espertech.com * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the GPL license * * a copy of which has been included with this distribution in the license.txt file. * * ************************************************************************************* */ package com.espertech.esper.epl.expression; import com.espertech.esper.support.epl.SupportExprNode; import com.espertech.esper.support.epl.SupportExprNodeFactory; import junit.framework.TestCase; public class TestExprNode extends TestCase { public void testGetValidatedSubtree() throws Exception { SupportExprNode.setValidateCount(0); // Confirms all child nodes validated // Confirms depth-first validation SupportExprNode topNode = new SupportExprNode(Boolean.class); SupportExprNode parent_1 = new SupportExprNode(Boolean.class); SupportExprNode parent_2 = new SupportExprNode(Boolean.class); topNode.addChildNode(parent_1); topNode.addChildNode(parent_2); SupportExprNode supportNode1_1 = new SupportExprNode(Boolean.class); SupportExprNode supportNode1_2 = new SupportExprNode(Boolean.class); SupportExprNode supportNode2_1 = new SupportExprNode(Boolean.class); SupportExprNode supportNode2_2 = new SupportExprNode(Boolean.class); parent_1.addChildNode(supportNode1_1); parent_1.addChildNode(supportNode1_2); parent_2.addChildNode(supportNode2_1); parent_2.addChildNode(supportNode2_2); ExprNodeUtility.getValidatedSubtree(topNode, ExprValidationContextFactory.makeEmpty()); assertEquals(1, supportNode1_1.getValidateCountSnapshot()); assertEquals(2, supportNode1_2.getValidateCountSnapshot()); assertEquals(3, parent_1.getValidateCountSnapshot()); assertEquals(4, supportNode2_1.getValidateCountSnapshot()); assertEquals(5, supportNode2_2.getValidateCountSnapshot()); assertEquals(6, parent_2.getValidateCountSnapshot()); assertEquals(7, topNode.getValidateCountSnapshot()); } public void testDeepEquals() throws Exception { assertFalse(ExprNodeUtility.deepEquals(SupportExprNodeFactory.make2SubNodeAnd(), SupportExprNodeFactory.make3SubNodeAnd())); assertFalse(ExprNodeUtility.deepEquals(SupportExprNodeFactory.makeEqualsNode(), SupportExprNodeFactory.makeMathNode())); assertTrue(ExprNodeUtility.deepEquals(SupportExprNodeFactory.makeMathNode(), SupportExprNodeFactory.makeMathNode())); assertFalse(ExprNodeUtility.deepEquals(SupportExprNodeFactory.makeMathNode(), SupportExprNodeFactory.make2SubNodeAnd())); assertTrue(ExprNodeUtility.deepEquals(SupportExprNodeFactory.make3SubNodeAnd(), SupportExprNodeFactory.make3SubNodeAnd())); } public void testParseMappedProp() { ExprNodeUtility.MappedPropertyParseResult result = ExprNodeUtility.parseMappedProperty("a.b('c')"); assertEquals("a", result.getClassName()); assertEquals("b", result.getMethodName()); assertEquals("c", result.getArgString()); result = ExprNodeUtility.parseMappedProperty("SupportStaticMethodLib.delimitPipe('POLYGON ((100.0 100, \", 100 100, 400 400))')"); assertEquals("SupportStaticMethodLib", result.getClassName()); assertEquals("delimitPipe", result.getMethodName()); assertEquals("POLYGON ((100.0 100, \", 100 100, 400 400))", result.getArgString()); result = ExprNodeUtility.parseMappedProperty("a.b.c.d.e('f.g.h,u.h')"); assertEquals("a.b.c.d", result.getClassName()); assertEquals("e", result.getMethodName()); assertEquals("f.g.h,u.h", result.getArgString()); result = ExprNodeUtility.parseMappedProperty("a.b.c.d.E(\"hfhf f f f \")"); assertEquals("a.b.c.d", result.getClassName()); assertEquals("E", result.getMethodName()); assertEquals("hfhf f f f ", result.getArgString()); result = ExprNodeUtility.parseMappedProperty("c.d.getEnumerationSource(\"kf\"kf'kf\")"); assertEquals("c.d", result.getClassName()); assertEquals("getEnumerationSource", result.getMethodName()); assertEquals("kf\"kf'kf", result.getArgString()); result = ExprNodeUtility.parseMappedProperty("c.d.getEnumerationSource('kf\"kf'kf\"')"); assertEquals("c.d", result.getClassName()); assertEquals("getEnumerationSource", result.getMethodName()); assertEquals("kf\"kf'kf\"", result.getArgString()); result = ExprNodeUtility.parseMappedProperty("f('a')"); assertEquals(null, result.getClassName()); assertEquals("f", result.getMethodName()); assertEquals("a", result.getArgString()); assertNull(ExprNodeUtility.parseMappedProperty("('a')")); assertNull(ExprNodeUtility.parseMappedProperty("")); } }