Add JUnit tests to cover main parts of 275195
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/util/TestCMUtil.java b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/util/TestCMUtil.java
new file mode 100644
index 0000000..2f722d0
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/util/TestCMUtil.java
@@ -0,0 +1,97 @@
+package org.eclipse.jst.jsf.core.tests.util;
+
+import java.util.zip.ZipFile;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jst.common.project.facet.JavaFacetUtils;
+import org.eclipse.jst.jsf.core.internal.tld.CMUtil;
+import org.eclipse.jst.jsf.core.tests.TestsPlugin;
+import org.eclipse.jst.jsf.test.util.JSFTestUtil;
+import org.eclipse.jst.jsf.test.util.WebProjectTestEnvironment;
+import org.eclipse.jst.jsp.core.internal.contentmodel.tld.CMDocumentFactoryTLD;
+import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDDocument;
+import org.eclipse.jst.jsp.core.taglib.ITaglibRecord;
+import org.eclipse.jst.jsp.core.taglib.TaglibIndex;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+
+public class TestCMUtil extends TestCase {
+
+    private WebProjectTestEnvironment _webProject;
+    private IProject 			  	 _project;
+
+    @Override
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+
+        JSFTestUtil.setValidationEnabled(false);
+        JSFTestUtil.setInternetProxyPreferences(true, "www-proxy.uk.oracle.com", "80");
+
+        final ZipFile zipFile = JSFTestUtil.createZipFile(TestsPlugin.getDefault().getBundle()
+                , "/testfiles/testzips/TLDTests.zip");
+
+        _webProject = new WebProjectTestEnvironment(this, JavaFacetUtils.JAVA_50, ProjectFacetsManager.getProjectFacet( "jst.web" ).getVersion("2.4"));
+        _webProject.createFromZip(zipFile, true);
+        assertNotNull(_webProject);
+        
+        _project = _webProject.getTestProject();
+        assertNotNull(_project);
+        assertTrue(_project.isAccessible());
+        
+    }
+
+	public void testGetURIFromDoc() {
+        
+        for (ITaglibRecord tldRec : TaglibIndex.getAvailableTaglibRecords(_project.getFullPath())){
+        	if (tldRec.getDescriptor().getShortName().equals("tags"))
+        		assertEquals("/WEB-INF/tags", CMUtil.getURIFromTaglibRecord(tldRec, _project));
+        	else if (tldRec.getDescriptor().getShortName().equals("moreTags"))
+        		assertEquals("/WEB-INF/tags/moreTags", CMUtil.getURIFromTaglibRecord(tldRec, _project));
+        	else if (tldRec.getDescriptor().getShortName().equals("mysample"))
+        		assertEquals("/WEB-INF/SampleTagLib.tld", CMUtil.getURIFromTaglibRecord(tldRec, _project));
+        	else if (tldRec.getDescriptor().getShortName().equals("XXXXmysample"))
+        		assertEquals("/WEB-INF/tlds/XXXXSampleTagLib.tld", CMUtil.getURIFromTaglibRecord(tldRec, _project));
+        	else if (tldRec.getDescriptor().getShortName().equals("uri-supplied"))
+        		assertEquals("uri-supplied", CMUtil.getURIFromTaglibRecord(tldRec, _project));        	
+        }
+	}
+
+	public void testGetURIFromTaglibRecord() {
+		
+        CMDocumentFactoryTLD factory = new CMDocumentFactoryTLD();
+        for (ITaglibRecord tldRec : TaglibIndex.getAvailableTaglibRecords(_project.getFullPath())){
+        	TLDDocument tldDoc = (TLDDocument)factory.createCMDocument(tldRec);
+        	if (tldRec.getDescriptor().getShortName().equals("tags"))
+        		assertEquals("/WEB-INF/tags", CMUtil.getURIFromDoc(tldDoc, _project));
+        	else if (tldRec.getDescriptor().getShortName().equals("moreTags"))
+        		assertEquals("/WEB-INF/tags/moreTags", CMUtil.getURIFromDoc(tldDoc, _project));
+        	else if (tldRec.getDescriptor().getShortName().equals("mysample"))
+        		assertEquals("/WEB-INF/SampleTagLib.tld", CMUtil.getURIFromDoc(tldDoc, _project));
+        	else if (tldRec.getDescriptor().getShortName().equals("XXXXmysample"))
+        		assertEquals("/WEB-INF/tlds/XXXXSampleTagLib.tld", CMUtil.getURIFromDoc(tldDoc, _project));
+        	else if (tldRec.getDescriptor().getShortName().equals("uri-supplied"))
+        		assertEquals("uri-supplied", CMUtil.getURIFromDoc(tldDoc, _project));        	
+        }
+	}
+
+	public void testIsTagDirDocument() {
+		
+		CMDocumentFactoryTLD factory = new CMDocumentFactoryTLD();
+	    for (ITaglibRecord tldRec : TaglibIndex.getAvailableTaglibRecords(_project.getFullPath())){
+	
+			TLDDocument tldDoc = (TLDDocument)factory.createCMDocument(tldRec);
+	    	if (tldRec.getDescriptor().getShortName().equals("tags"))
+	    		assertTrue(CMUtil.isTagDirDocument(tldDoc, _project));
+	    	else if (tldRec.getDescriptor().getShortName().equals("moreTags"))
+	    		assertTrue(CMUtil.isTagDirDocument(tldDoc, _project));
+	    	else if (tldRec.getDescriptor().getShortName().equals("mysample"))
+	    		assertFalse(CMUtil.isTagDirDocument(tldDoc, _project));
+	    	else if (tldRec.getDescriptor().getShortName().equals("XXXXmysample"))
+	    		assertFalse(CMUtil.isTagDirDocument(tldDoc, _project));
+	    	else if (tldRec.getDescriptor().getShortName().equals("uri-supplied"))
+	    		assertFalse(CMUtil.isTagDirDocument(tldDoc, _project));	
+	    }
+	}
+}
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/util/UtilSuite.java b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/util/UtilSuite.java
index 4606013..6876e95 100644
--- a/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/util/UtilSuite.java
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/src/org/eclipse/jst/jsf/core/tests/util/UtilSuite.java
@@ -31,6 +31,8 @@
         suite.addTestSuite(TestJDTBeanPropertyWorkingCopy.class);
         suite.addTestSuite(TestJDTBeanIntrospector.class);
 
+        suite.addTestSuite(TestCMUtil.class);
+        
         //$JUnit-END$
         return suite;
     }
diff --git a/jsf/tests/org.eclipse.jst.jsf.core.tests/testfiles/testzips/TLDTests.zip b/jsf/tests/org.eclipse.jst.jsf.core.tests/testfiles/testzips/TLDTests.zip
new file mode 100644
index 0000000..c0a0837
--- /dev/null
+++ b/jsf/tests/org.eclipse.jst.jsf.core.tests/testfiles/testzips/TLDTests.zip
Binary files differ