[290538]: XSLT Model needs to be enhanced for XSLT 2.0
https://bugs.eclipse.org/bugs/show_bug.cgi?id=290538
diff --git a/tests/org.eclipse.wst.xsl.core.tests/projectfiles/XSLT20FunctionTest.xsl b/tests/org.eclipse.wst.xsl.core.tests/projectfiles/XSLT20FunctionTest.xsl
new file mode 100644
index 0000000..7493a0a
--- /dev/null
+++ b/tests/org.eclipse.wst.xsl.core.tests/projectfiles/XSLT20FunctionTest.xsl
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+	<xsl:template match="/">
+		<!-- TODO: Auto-generated template -->
+	</xsl:template>
+	
+	<xsl:function name="func1">
+	
+	</xsl:function>
+	
+	<xsl:function name="func2">
+	
+	</xsl:function>
+	
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.xsl.core.tests/src/org/eclipse/wst/xsl/internal/model/tests/TestStylesheet.java b/tests/org.eclipse.wst.xsl.core.tests/src/org/eclipse/wst/xsl/internal/model/tests/TestStylesheet.java
index 21690fe..5dc7120 100644
--- a/tests/org.eclipse.wst.xsl.core.tests/src/org/eclipse/wst/xsl/internal/model/tests/TestStylesheet.java
+++ b/tests/org.eclipse.wst.xsl.core.tests/src/org/eclipse/wst/xsl/internal/model/tests/TestStylesheet.java
@@ -4,6 +4,7 @@
 import java.util.Map;
 
 import org.eclipse.wst.xsl.core.internal.StylesheetBuilder;
+import org.eclipse.wst.xsl.core.model.Function;
 import org.eclipse.wst.xsl.core.model.Import;
 import org.eclipse.wst.xsl.core.model.Include;
 import org.eclipse.wst.xsl.core.model.Stylesheet;
@@ -12,19 +13,30 @@
 import org.eclipse.wst.xsl.core.model.XSLAttribute;
 
 public class TestStylesheet extends AbstractModelTest {
+	StylesheetBuilder builder = null;
 
 	public TestStylesheet() {
 		// TODO Auto-generated constructor stub
 	}
+	
+	@Override
+	protected void setUp() throws Exception {
+		super.setUp();
+		builder = StylesheetBuilder.getInstance();
+	}
+	
+	@Override
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		builder.release();
+	}
 
 	public void testLoadModel() {
-		StylesheetBuilder builder = StylesheetBuilder.getInstance();
 		Stylesheet model = builder.getStylesheet(getFile("style1.xsl"), false);
 		assertNotNull("Model failed to load, returned NULL", model);
 	}
 
 	public void testgetLocalTemplatesTemplates() {
-		StylesheetBuilder builder = StylesheetBuilder.getInstance();
 		Stylesheet model = builder.getStylesheet(getFile("style1.xsl"), false);
 		assertNotNull("Model failed to load, returned NULL", model);
 
@@ -34,7 +46,6 @@
 	}
 
 	public void testGetIncludes() {
-		StylesheetBuilder builder = StylesheetBuilder.getInstance();
 		Stylesheet stylesheet = builder.getStylesheet(getFile("style1.xsl"),
 				false);
 		assertNotNull("Model failed to load, returned NULL", stylesheet);
@@ -45,7 +56,6 @@
 	}
 
 	public void testGetImports() {
-		StylesheetBuilder builder = StylesheetBuilder.getInstance();
 		Stylesheet stylesheet = builder.getStylesheet(getFile("style1.xsl"),
 				false);
 		assertNotNull("Model failed to load, returned NULL", stylesheet);
@@ -57,7 +67,6 @@
 	}
 
 	public void testGetGlobalVariables() {
-		StylesheetBuilder builder = StylesheetBuilder.getInstance();
 		Stylesheet stylesheet = builder.getStylesheet(
 				getFile("globalVariablesTest.xsl"), false);
 		assertNotNull("Model failed to load, returned NULL", stylesheet);
@@ -68,7 +77,6 @@
 	}
 
 	public void testGetLineNumber() {
-		StylesheetBuilder builder = StylesheetBuilder.getInstance();
 		Stylesheet stylesheet = builder.getStylesheet(
 				getFile("globalVariablesTest.xsl"), false);
 		assertNotNull("Model failed to load, returned NULL", stylesheet);
@@ -77,7 +85,6 @@
 	}
 
 	public void testGetColumnNumber() {
-		StylesheetBuilder builder = StylesheetBuilder.getInstance();
 		Stylesheet stylesheet = builder.getStylesheet(
 				getFile("globalVariablesTest.xsl"), false);
 		assertNotNull("Model failed to load, returned NULL", stylesheet);
@@ -87,7 +94,6 @@
 	}
 
 	public void testGetVersion() {
-		StylesheetBuilder builder = StylesheetBuilder.getInstance();
 		Stylesheet stylesheet = builder.getStylesheet(
 				getFile("globalVariablesTest.xsl"), false);
 		assertNotNull("Model failed to load, returned NULL", stylesheet);
@@ -98,7 +104,6 @@
 	}
 
 	public void testXSLT2GetVersion() {
-		StylesheetBuilder builder = StylesheetBuilder.getInstance();
 		Stylesheet stylesheet = builder.getStylesheet(
 				getFile("XSLT20Test.xsl"), false);
 		assertNotNull("Model failed to load, returned NULL", stylesheet);
@@ -108,7 +113,6 @@
 	}
 
 	public void testGetAttributes() {
-		StylesheetBuilder builder = StylesheetBuilder.getInstance();
 		Stylesheet stylesheet = builder.getStylesheet(
 				getFile("globalVariablesTest.xsl"), false);
 		assertNotNull("Model failed to load, returned NULL", stylesheet);
@@ -122,4 +126,28 @@
 
 	}
 
+	public void testGetFunction() {
+		Stylesheet stylesheet = builder.getStylesheet(
+				getFile("XSLT20FunctionTest.xsl"), false);
+		assertNotNull("Model failed to load, returned NULL", stylesheet);
+
+		List<Function> functionList = stylesheet.getFunctions();
+		assertEquals("Wrong number of global variables returned.", 2,
+				functionList.size());
+	}
+	
+	public void testGetFunctionFunc1() {
+		Stylesheet stylesheet = builder.getStylesheet(
+				getFile("XSLT20FunctionTest.xsl"), false);
+		assertNotNull("Model failed to load, returned NULL", stylesheet);
+
+		List<Function> functionList = stylesheet.getFunctions();
+		for (Function function : functionList) {
+			if (function.getName().equals("func1")) {
+				return;
+			}
+		}
+		fail("Did not find XSL func func1");
+	}
+		
 }