Bug 361804 - StaticContextAdapter returns mock function
Also plugged a memory leak, where each test was retaining a lot of references to XPath engines and contexts.
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/AbstractPsychoPathTest.java b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/AbstractPsychoPathTest.java
index 0839c83..d8b77f3 100644
--- a/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/AbstractPsychoPathTest.java
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/AbstractPsychoPathTest.java
@@ -238,9 +238,13 @@
protected void tearDown() throws Exception {
super.tearDown();
- domDoc = null;
- domDoc2 = null;
- dynamicContext = null;
+ this.domDoc = null;
+ this.domDoc2 = null;
+ this.dynamicContext = null;
+ this.dynamicContextBuilder = null;
+ this.newXPath = null;
+ this.oldXPath = null;
+ this.staticContextBuilder = null;
}
protected XSModel getGrammar() {
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/AllPsychoPathTests.java b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/AllPsychoPathTests.java
index dbb0df6..bcd0109 100644
--- a/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/AllPsychoPathTests.java
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/AllPsychoPathTests.java
@@ -34,6 +34,8 @@
suite.addTestSuite(XPathDecimalFormatTest.class);
suite.addTestSuite(LiteralUtilsTest.class);
suite.addTestSuite(KindTestSITest.class);
+
+ suite.addTestSuite(StaticContextAdapterTest.class);
//$JUnit-END$
return suite;
}
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/StaticContextAdapterTest.java b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/StaticContextAdapterTest.java
new file mode 100644
index 0000000..1b3c26c
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/StaticContextAdapterTest.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Jesper S Moller and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Lukasz Wycisk - bug 361804 - StaticContextAdapter returns mock function
+ *******************************************************************************/
+
+package org.eclipse.wst.xml.xpath2.processor.test;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.xml.xpath2.processor.DefaultDynamicContext;
+import org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator;
+import org.eclipse.wst.xml.xpath2.processor.Evaluator;
+import org.eclipse.wst.xml.xpath2.processor.JFlexCupParser;
+import org.eclipse.wst.xml.xpath2.processor.ResultSequence;
+import org.eclipse.wst.xml.xpath2.processor.StaticChecker;
+import org.eclipse.wst.xml.xpath2.processor.StaticNameResolver;
+import org.eclipse.wst.xml.xpath2.processor.XPathParser;
+import org.eclipse.wst.xml.xpath2.processor.ast.XPath;
+import org.eclipse.wst.xml.xpath2.processor.function.FnFunctionLibrary;
+import org.eclipse.wst.xml.xpath2.processor.internal.DefaultStaticContext;
+import org.eclipse.wst.xml.xpath2.processor.internal.types.XSDecimal;
+
+public class StaticContextAdapterTest extends TestCase {
+
+ public void testFunctionCall()
+ {
+ XPathParser xpp = new JFlexCupParser();
+ XPath xpath = xpp.parse( "fn:sum((1,2,3))" );
+
+ DefaultStaticContext sc = new DefaultStaticContext( null );
+ sc.add_namespace( "fn", "http://www.w3.org/2005/xpath-functions" );
+ sc.add_function_library( new FnFunctionLibrary() );
+
+ StaticChecker namecheck = new StaticNameResolver( sc );
+ namecheck.check( xpath );
+
+ DefaultDynamicContext dc = new DefaultDynamicContext( null, null );
+ dc.add_namespace( "fn", "http://www.w3.org/2005/xpath-functions" );
+ dc.add_function_library( new FnFunctionLibrary() );
+
+ Evaluator eval = new DefaultEvaluator( dc, null );
+ ResultSequence rs = eval.evaluate( xpath );
+ assertEquals(1, rs.size());
+
+ XSDecimal result = (XSDecimal) rs.first();
+ String actual = result.getStringValue();
+ assertEquals("6", actual);
+ }
+
+}