[371430] Wrong encoding type returned for XHTML file without 'html' as document root
diff --git a/tests/org.eclipse.wst.html.core.tests/src/org/eclipse/wst/html/core/tests/HTMLCoreTestSuite.java b/tests/org.eclipse.wst.html.core.tests/src/org/eclipse/wst/html/core/tests/HTMLCoreTestSuite.java index 7555650..9e49db4 100644 --- a/tests/org.eclipse.wst.html.core.tests/src/org/eclipse/wst/html/core/tests/HTMLCoreTestSuite.java +++ b/tests/org.eclipse.wst.html.core.tests/src/org/eclipse/wst/html/core/tests/HTMLCoreTestSuite.java
@@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2004, 2010 IBM Corporation and others. + * Copyright (c) 2004, 2012 IBM Corporation 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 @@ -14,6 +14,7 @@ import junit.framework.TestSuite; import org.eclipse.wst.html.core.tests.cleanup.TestHTMLCleanupProcessor; +import org.eclipse.wst.html.core.tests.contenttype.TestHTMLResourceEncodingDetector; import org.eclipse.wst.html.core.tests.format.TestFormatProcessorHTML; import org.eclipse.wst.html.core.tests.format.TestFormatUtility; import org.eclipse.wst.html.core.tests.html5.model.HTML5ContentModelTest; @@ -55,6 +56,6 @@ addTest(new TestSuite(TestCatalogContentModels.class)); addTest(TestHTMLCleanupProcessor.suite()); addTest(new TestSuite(HTML5ContentModelTest.class)); - + addTest(new TestSuite(TestHTMLResourceEncodingDetector.class)); } } \ No newline at end of file
diff --git a/tests/org.eclipse.wst.html.core.tests/src/org/eclipse/wst/html/core/tests/contenttype/TestHTMLResourceEncodingDetector.java b/tests/org.eclipse.wst.html.core.tests/src/org/eclipse/wst/html/core/tests/contenttype/TestHTMLResourceEncodingDetector.java new file mode 100644 index 0000000..32b3cea --- /dev/null +++ b/tests/org.eclipse.wst.html.core.tests/src/org/eclipse/wst/html/core/tests/contenttype/TestHTMLResourceEncodingDetector.java
@@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright (c) 2012 IBM Corporation 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +package org.eclipse.wst.html.core.tests.contenttype; + +import java.io.CharArrayReader; +import java.io.IOException; +import java.io.Reader; + +import org.eclipse.wst.html.core.internal.contenttype.HTMLResourceEncodingDetector; + +import junit.framework.TestCase; +/** + * + * Create due to bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=371430 + * + */ +public class TestHTMLResourceEncodingDetector extends TestCase { + + HTMLResourceEncodingDetector htmlResouceEncodingDetector; + private static final String XMLDeclContent_UTF8= "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"; + private static final String XMLDeclContent_ISO= "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>"; + private static final String XHTMLContent_HTML_AS_ROOTELEMENT = "<html xmlns=\"http://www.w3.org/1999/xhtml\">"; + private static final String XHTMLContent_NOT_HTML_AS_ROOTELEMENT= "<ui:composition attribut=43 xmlns=\"http://www.w3.org/1999/xhtml\">"; + private static final String METAContent = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />"; + + + public TestHTMLResourceEncodingDetector() { + this("HTML Resource Encoding Detector"); + } + + public TestHTMLResourceEncodingDetector(String string) { + super(string); + } + + + protected void setUp() throws Exception { + htmlResouceEncodingDetector = new HTMLResourceEncodingDetector(); + } + + + private String getContentType(String content) throws IOException{ + Reader contentReader = new CharArrayReader(content.toCharArray()); + htmlResouceEncodingDetector.set(contentReader); + return htmlResouceEncodingDetector.getEncoding(); + } + + + public void testXMLDecl() throws IOException{ + String contentType=getContentType(XMLDeclContent_UTF8+XHTMLContent_HTML_AS_ROOTELEMENT+METAContent); + assertEquals("UTF-8", contentType); + + contentType=getContentType(XMLDeclContent_ISO+XHTMLContent_HTML_AS_ROOTELEMENT+METAContent); + assertEquals("ISO-8859-1", contentType); + + contentType=getContentType(XMLDeclContent_UTF8+XHTMLContent_NOT_HTML_AS_ROOTELEMENT+METAContent); + assertEquals("UTF-8", contentType); + + contentType=getContentType (XMLDeclContent_ISO + XHTMLContent_NOT_HTML_AS_ROOTELEMENT); + assertEquals("ISO-8859-1", contentType); + } + + public void testMetaDecl() throws IOException{ + String contentType = getContentType(XHTMLContent_HTML_AS_ROOTELEMENT+METAContent); + assertEquals("ISO-8859-1", contentType); + + contentType = getContentType(XHTMLContent_NOT_HTML_AS_ROOTELEMENT+METAContent); + assertEquals("ISO-8859-1", contentType); + } + + + public void testXHTML() throws IOException{ + String contentType = getContentType(XHTMLContent_HTML_AS_ROOTELEMENT); + assertEquals("UTF-8", contentType); + + contentType = getContentType(XHTMLContent_NOT_HTML_AS_ROOTELEMENT); + assertEquals("UTF-8", contentType); + } +}