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);
+	}
+	
+}
