blob: 28eeed55214b21bb1f3c70b4bd868d860c2e1738 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 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.model;
import junit.framework.TestCase;
import org.eclipse.wst.html.core.internal.provisional.HTMLCMProperties;
import org.eclipse.wst.html.core.internal.provisional.contenttype.ContentTypeIdForHTML;
import org.eclipse.wst.sse.core.StructuredModelManager;
import org.eclipse.wst.sse.core.utils.StringUtils;
import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
import org.eclipse.wst.xml.core.internal.modelquery.ModelQueryUtil;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.w3c.dom.Element;
public class TestCatalogContentModels extends TestCase {
private static final String contentTemplate = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE html ${METHOD} ${PUBLIC} ${SYSTEM}>\n<html>\n<head>\n<title>Insert title here</title>\n</head>\n<body>\n</body>\n</html>";
public TestCatalogContentModels() {
this("HTML Content Models from XML Catalog");
}
public TestCatalogContentModels(String string) {
super(string);
}
private void assertIsNotXHTMLContentModel(IDOMModel htmlModel) {
Element html = htmlModel.getDocument().getDocumentElement();
CMDocument correspondingCMDocument = ModelQueryUtil.getModelQuery(htmlModel).getCorrespondingCMDocument(html);
assertNotNull("content model document not found", correspondingCMDocument);
assertTrue("document is unexpectedly XHTML", correspondingCMDocument.supports(HTMLCMProperties.IS_XHTML));
}
private void assertIsXHTMLContentModel(IDOMModel htmlModel) {
Element html = htmlModel.getDocument().getDocumentElement();
CMDocument correspondingCMDocument = ModelQueryUtil.getModelQuery(htmlModel).getCorrespondingCMDocument(html);
assertNotNull("content model document not found", correspondingCMDocument);
assertTrue("document is not XHTML", correspondingCMDocument.supports(HTMLCMProperties.IS_XHTML));
}
private IDOMModel createHTMLModel(String publicId, String systemId) {
IDOMModel model = (IDOMModel) StructuredModelManager.getModelManager().createUnManagedStructuredModelFor(ContentTypeIdForHTML.ContentTypeID_HTML);
String source = createTestContents(publicId, systemId);
model.getStructuredDocument().set(source);
return model;
}
private String createTestContents(String publicId, String systemId) {
String result = null;
if (systemId != null) {
result = StringUtils.replace(contentTemplate, "${SYSTEM}", "\"" + systemId + "\"");
}
else {
result = StringUtils.replace(contentTemplate, "${SYSTEM}", "");
}
if (publicId != null) {
result = StringUtils.replace(contentTemplate, "${PUBLIC}", "\"" + publicId + "\"");
}
else {
result = StringUtils.replace(contentTemplate, "${PUBLIC}", "");
}
if (publicId != null && systemId != null)
result = StringUtils.replace(contentTemplate, "${METHOD}", "PUBLIC");
else if (publicId == null && systemId != null)
result = StringUtils.replace(contentTemplate, "${METHOD}", "SYSTEM");
else
result = StringUtils.replace(contentTemplate, "${METHOD}", "");
return result;
}
public void testCHTMLdraft() throws Exception {
IDOMModel htmlModel = createHTMLModel("-//W3C//DTD Compact HTML 1.0 Draft//EN", null);
assertIsNotXHTMLContentModel(htmlModel);
}
public void testHTML401Frameset() throws Exception {
IDOMModel htmlModel = createHTMLModel("-//W3C//DTD HTML 4.01 Frameset//EN", "http://www.w3.org/TR/html4/frameset.dtd");
assertIsNotXHTMLContentModel(htmlModel);
}
public void testHTML401Strict() throws Exception {
IDOMModel htmlModel = createHTMLModel("-//W3C//DTD HTML 4.01//EN", "http://www.w3.org/TR/html4/strict.dtd");
assertIsNotXHTMLContentModel(htmlModel);
}
public void testHTML401Transitional() throws Exception {
IDOMModel htmlModel = createHTMLModel("-//W3C//DTD HTML 4.01 Transitional//EN", "http://www.w3.org/TR/html4/loose.dtd");
assertIsNotXHTMLContentModel(htmlModel);
}
public void testWML11() throws Exception {
IDOMModel htmlModel = createHTMLModel("-//WAPFORUM//DTD WML 1.1//EN", null);
assertIsXHTMLContentModel(htmlModel);
}
public void testWML13() throws Exception {
IDOMModel htmlModel = createHTMLModel("-//WAPFORUM//DTD WML 1.3//EN", "http://www.wapforum.org/DTD/wml13.dtd");
assertIsXHTMLContentModel(htmlModel);
}
public void testXHTML10Basic() throws Exception {
IDOMModel htmlModel = createHTMLModel("-//W3C//DTD XHTML Basic 1.0//EN", "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd");
assertIsXHTMLContentModel(htmlModel);
}
public void testXHTML10Frameset() throws Exception {
IDOMModel htmlModel = createHTMLModel("-//W3C//DTD XHTML 1.0 Frameset//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd");
assertIsXHTMLContentModel(htmlModel);
}
public void testXHTML10Mobile() throws Exception {
IDOMModel htmlModel = createHTMLModel("-//WAPFORUM//DTD XHTML Mobile 1.0//EN", "http://www.wapforum.org/DTD/xhtml-mobile10.dtd");
assertIsXHTMLContentModel(htmlModel);
}
public void testXHTML10Strict() throws Exception {
IDOMModel htmlModel = createHTMLModel("-//W3C//DTD XHTML 1.0 Strict//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd");
assertIsXHTMLContentModel(htmlModel);
}
public void testXHTML10Transitional() throws Exception {
IDOMModel htmlModel = createHTMLModel("-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd");
assertIsXHTMLContentModel(htmlModel);
}
public void testXHTML11() throws Exception {
IDOMModel htmlModel = createHTMLModel("-//W3C//DTD XHTML 1.1//EN", "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd");
assertIsXHTMLContentModel(htmlModel);
}
}