blob: 9fec6ca9d99ad64390ce1128e5ca8358de58cc33 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 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.xml.core.tests.dom;
import junit.framework.TestCase;
import org.eclipse.wst.sse.core.StructuredModelManager;
import org.eclipse.wst.xml.core.internal.document.NodeListImpl;
import org.eclipse.wst.xml.core.internal.provisional.contenttype.ContentTypeIdForXML;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
public class NodeListImplTests extends TestCase {
private static class AccessorNodeList extends NodeListImpl {
public Node appendNode(Node node) {
return super.appendNode(node);
}
public Node insertNode(Node node, int index) {
return super.insertNode(node, index);
}
public Node removeNode(int index) {
return super.removeNode(index);
}
}
public NodeListImplTests() {
}
public NodeListImplTests(String name) {
super(name);
}
public void testInsertAtIndex() {
IDOMModel model = (IDOMModel) StructuredModelManager.getModelManager().createUnManagedStructuredModelFor(ContentTypeIdForXML.ContentTypeID_XML);
Document document = model.getDocument();
AccessorNodeList list = new AccessorNodeList();
assertEquals("non-zero length at start", 0, list.getLength());
list.appendNode(document.createElement("test0"));
list.appendNode(document.createElement("test1"));
list.appendNode(document.createElement("test2"));
list.appendNode(document.createElement("test3"));
list.appendNode(document.createElement("test4"));
list.appendNode(document.createElement("test5"));
list.appendNode(document.createElement("test6"));
list.insertNode(document.createElement("test"), 3);
assertEquals("list size did not increment", 8, list.getLength());
assertEquals("test0 was not at expected index", "test0", list.item(0).getLocalName());
assertEquals("test1 was not at expected index", "test1", list.item(1).getLocalName());
assertEquals("test2 was not at expected index", "test2", list.item(2).getLocalName());
assertEquals("test was not at expected index", "test", list.item(3).getLocalName());
assertEquals("test3 was not at expected index", "test3", list.item(4).getLocalName());
assertEquals("test4 was not at expected index", "test4", list.item(5).getLocalName());
assertEquals("test5 was not at expected index", "test5", list.item(6).getLocalName());
assertEquals("test6 was not at expected index", "test6", list.item(7).getLocalName());
}
public void testRemoveFromIndex() {
IDOMModel model = (IDOMModel) StructuredModelManager.getModelManager().createUnManagedStructuredModelFor(ContentTypeIdForXML.ContentTypeID_XML);
Document document = model.getDocument();
AccessorNodeList list = new AccessorNodeList();
list.appendNode(document.createElement("test0"));
list.appendNode(document.createElement("test1"));
list.appendNode(document.createElement("test2"));
list.appendNode(document.createElement("test3"));
list.appendNode(document.createElement("test4"));
list.appendNode(document.createElement("test5"));
list.appendNode(document.createElement("test6"));
assertEquals("wrong length after setup", 7, list.getLength());
Node excised = list.removeNode(3);
assertEquals("test3 was not the one removed", "test3", excised.getLocalName());
assertEquals("wrong length after removal", 6, list.getLength());
assertEquals("test0 was not at expected index", "test0", list.item(0).getLocalName());
assertEquals("test1 was not at expected index", "test1", list.item(1).getLocalName());
assertEquals("test2 was not at expected index", "test2", list.item(2).getLocalName());
assertEquals("test4 was not at expected index", "test4", list.item(3).getLocalName());
assertEquals("test5 was not at expected index", "test5", list.item(4).getLocalName());
assertEquals("test6 was not at expected index", "test6", list.item(5).getLocalName());
}
public void testInsertAtNegativeIndex() {
IDOMModel model = (IDOMModel) StructuredModelManager.getModelManager().createUnManagedStructuredModelFor(ContentTypeIdForXML.ContentTypeID_XML);
Document document = model.getDocument();
AccessorNodeList list = new AccessorNodeList();
// appends on bad value
list.insertNode(document.createElement("test-1"),-1);
assertEquals("wrong length after insert at negative index", 1, list.getLength());
}
public void testRemoveFromNegativeIndex() {
IDOMModel model = (IDOMModel) StructuredModelManager.getModelManager().createUnManagedStructuredModelFor(ContentTypeIdForXML.ContentTypeID_XML);
Document document = model.getDocument();
AccessorNodeList list = new AccessorNodeList();
list.appendNode(document.createElement("test-1"));
// ignores bad index
list.removeNode(-1);
assertEquals("wrong length after removal at negative index", 1, list.getLength());
}
public void testInsertAtExcessiveIndex() {
IDOMModel model = (IDOMModel) StructuredModelManager.getModelManager().createUnManagedStructuredModelFor(ContentTypeIdForXML.ContentTypeID_XML);
Document document = model.getDocument();
AccessorNodeList list = new AccessorNodeList();
// appends on bad value
list.insertNode(document.createElement("test3"), 3);
assertEquals("wrong length after insert at out of bounds index", 1, list.getLength());
}
public void testRemoveFromExcessiveIndex() {
IDOMModel model = (IDOMModel) StructuredModelManager.getModelManager().createUnManagedStructuredModelFor(ContentTypeIdForXML.ContentTypeID_XML);
Document document = model.getDocument();
AccessorNodeList list = new AccessorNodeList();
list.appendNode(document.createElement("test0"));
// ignores bad index
list.removeNode(3);
assertEquals("wrong length after removal at nonexistent index", 1, list.getLength());
}
public void testAppend() {
IDOMModel model = (IDOMModel) StructuredModelManager.getModelManager().createUnManagedStructuredModelFor(ContentTypeIdForXML.ContentTypeID_XML);
Document document = model.getDocument();
AccessorNodeList list = new AccessorNodeList();
assertEquals("non-zero length at start", 0, list.getLength());
list.appendNode(document.createElement("test1"));
assertEquals("list size did not increment", 1, list.getLength());
list.appendNode(document.createElement("test2"));
assertEquals("list size did not increment", 2, list.getLength());
list.appendNode(document.createElement("test3"));
assertEquals("list size did not increment", 3, list.getLength());
Node element4 = list.appendNode(document.createElement("test4"));
assertEquals("list size did not increment", 4, list.getLength());
assertEquals("test4 not returned from append", "test4", element4.getLocalName());
Node element5 = list.appendNode(document.createElement("test5"));
assertEquals("list size did not increment", 5, list.getLength());
assertEquals("test5 not returned from append", "test5", element5.getLocalName());
Node element6 = list.appendNode(document.createElement("test6"));
assertEquals("list size did not increment", 6, list.getLength());
assertEquals("test6 not returned from append", "test6", element6.getLocalName());
Node element7 = list.appendNode(document.createElement("test7"));
assertEquals("list size did not increment", 7, list.getLength());
assertEquals("test7 not returned from append", "test7", element7.getLocalName());
}
}