/******************************************************************************* * Copyright (c) 2010 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.jst.jsp.core.tests.dom; import junit.framework.TestCase; import org.eclipse.wst.sse.core.StructuredModelManager; import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument; import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; import org.eclipse.wst.xml.core.internal.parser.ContextRegionContainer; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class AttrValueTest extends TestCase { private static final String[] VALUES = {"<<Previous", "<page>", "Next>>"}; public void testAttributeValue() { IDOMModel model = (IDOMModel) StructuredModelManager.getModelManager().createUnManagedStructuredModelFor("org.eclipse.jst.jsp.core.jspsource"); assertNotNull(model); IStructuredDocument document = model.getStructuredDocument(); assertNotNull(document); document.setText(this, "<button value=\""+ VALUES[0] +"\"></button><button value=\"" + VALUES[1] + "\"></button><button value=\"" + VALUES[2] + "\"></button>"); IDOMDocument dom = model.getDocument(); NodeList nodes = dom.getElementsByTagName("button"); assertTrue("Must be 3 button elements in the document.", nodes.getLength() == 3); for (int i = 0; i < nodes.getLength(); i++) { Node node = nodes.item(i); Node attr = node.getAttributes().getNamedItem("value"); assertTrue("Attribute 'value' not present.", attr != null && attr.getNodeValue().length() > 0); assertEquals("Attribute values are not equal", VALUES[i], attr.getNodeValue()); } } public void testEmbeddedTagValue() { IDOMModel model = (IDOMModel) StructuredModelManager.getModelManager().createUnManagedStructuredModelFor("org.eclipse.jst.jsp.core.jspsource"); assertNotNull(model); IStructuredDocument document = model.getStructuredDocument(); assertNotNull(document); document.setText(this, "<a href=\"<c:out value='test.html'></c:out>\">Test</a>"); IDOMDocument dom = model.getDocument(); NodeList nodes = dom.getElementsByTagName("a"); assertTrue("Must be 1 anchor element in the document.", nodes.getLength() == 1); IStructuredDocumentRegion region = document.getFirstStructuredDocumentRegion(); ITextRegion embeddedRegion = region.getRegionAtCharacterOffset(9); assertTrue("The attribute is not a ContextRegionContainer", embeddedRegion instanceof ContextRegionContainer); Node node = nodes.item(0); Node attr = node.getAttributes().getNamedItem("href"); assertEquals("Attribute values are not equal", "<c:out value='test.html'></c:out>", attr.getNodeValue()); } }