// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML
// http://sourceforge.org/projects/htmlparser
// Copyright (C) 2004 Somik Raha
//
// Revision Control Information
//
// $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/utilTests/NodeListTest.java,v $
// $Author: derrickoswald $
// $Date: 2006/05/31 02:10:14 $
// $Revision: 1.29 $
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
package org.htmlparser.tests.utilTests;
import org.htmlparser.Node;
import org.htmlparser.nodes.AbstractNode;
import org.htmlparser.tests.ParserTestCase;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.SimpleNodeIterator;
import org.htmlparser.visitors.NodeVisitor;
public class NodeListTest extends ParserTestCase {
static
{
System.setProperty ("org.htmlparser.tests.utilTests.NodeListTest", "NodeListTest");
}
private NodeList nodeList;
private Node[] testNodes;
public NodeListTest(String name) {
super(name);
}
protected void setUp() {
nodeList = new NodeList();
}
public void testOneItemConstructor() {
Node node = createHTMLNodeObject();
nodeList = new NodeList(node);
assertEquals("Vector Size",1,nodeList.size());
assertTrue("First Element",node==nodeList.elementAt(0));
}
public void testAddOneItem() {
Node node = createHTMLNodeObject();
nodeList.add(node);
assertEquals("Vector Size",1,nodeList.size());
assertTrue("First Element",node==nodeList.elementAt(0));
}
public void testAddTwoItems() {
Node node1 = createHTMLNodeObject();
Node node2 = createHTMLNodeObject();
nodeList.add(node1);
nodeList.add(node2);
assertEquals("Vector Size",2,nodeList.size());
assertTrue("First Element",node1==nodeList.elementAt(0));
assertTrue("Second Element",node2==nodeList.elementAt(1));
}
public void testAddTenItems() {
createTestDataAndPutInVector(10);
assertTestDataCouldBeExtractedFromVector(10);
}
public void testAddElevenItems() {
createTestDataAndPutInVector(11);
assertTestDataCouldBeExtractedFromVector(11);
}
public void testAddThirtyItems() {
createTestDataAndPutInVector(30);
assertTestDataCouldBeExtractedFromVector(30);
}
public void testAddThirtyOneItems() {
createTestDataAndPutInVector(31);
assertTestDataCouldBeExtractedFromVector(31);
}
public void testAddFiftyItems() {
createTestDataAndPutInVector(50);
assertTestDataCouldBeExtractedFromVector(50);
}
public void testAddFiftyOneItems() {
createTestDataAndPutInVector(51);
assertTestDataCouldBeExtractedFromVector(51);
}
public void testAddTwoHundredItems() {
createTestDataAndPutInVector(200);
assertTestDataCouldBeExtractedFromVector(200);
}
public void testElements() throws Exception {
createTestDataAndPutInVector(11);
Node [] resultNodes = new Node[11];
int i = 0;
for (SimpleNodeIterator e = nodeList.elements();e.hasMoreNodes();) {
resultNodes[i] = e.nextNode();
assertTrue("Node "+i+" did not match",testNodes[i]==resultNodes[i]);
i++;
}
}
private Node createHTMLNodeObject ()
{
Node node = new AbstractNode(null,10,20) {
public void accept(NodeVisitor visitor) {
}
public String toHtml() {
return null;
}
public String toHtml(boolean verbatim) {
return null;
}
public String toPlainTextString() {
return null;
}
public String toString() {
return "";
}
};
return node;
}
private void createTestDataAndPutInVector(int nodeCount) {
testNodes = new Node[nodeCount];
for (int i=0;i<nodeCount;i++) {
testNodes[i]= createHTMLNodeObject();
nodeList.add(testNodes[i]);
}
}
private void assertTestDataCouldBeExtractedFromVector(int nodeCount) {
for (int i=0;i<nodeCount;i++) {
assertTrue("Element "+i+" did not match",testNodes[i]==nodeList.elementAt(i));
}
}
public void testToNodeArray() {
createTestDataAndPutInVector(387);
Node nodes [] = nodeList.toNodeArray();
assertEquals("Length of array",387,nodes.length);
for (int i=0;i<nodes.length;i++)
assertNotNull("node "+i+" should not be null",nodes[i]);
}
public void testRemove() {
Node node1 = createHTMLNodeObject();
Node node2 = createHTMLNodeObject();
nodeList.add(node1);
nodeList.add(node2);
assertEquals("Vector Size",2,nodeList.size());
assertTrue("First Element",node1==nodeList.elementAt(0));
assertTrue("Second Element",node2==nodeList.elementAt(1));
nodeList.remove(1);
assertEquals("List Size",1,nodeList.size());
assertTrue("First Element",node1==nodeList.elementAt(0));
}
public void testRemoveAll() {
Node node1 = createHTMLNodeObject();
Node node2 = createHTMLNodeObject();
nodeList.add(node1);
nodeList.add(node2);
assertEquals("Vector Size",2,nodeList.size());
assertTrue("First Element",node1==nodeList.elementAt(0));
assertTrue("Second Element",node2==nodeList.elementAt(1));
nodeList.removeAll();
assertEquals("List Size",0,nodeList.size());
assertTrue("First Element",null==nodeList.elementAt(0));
assertTrue("Second Element",null==nodeList.elementAt(1));
}
public void testIndexOf() {
Node node1 = createHTMLNodeObject();
Node node2 = createHTMLNodeObject();
Node node3 = createHTMLNodeObject();
nodeList.add(node1);
nodeList.add(node2);
nodeList.add(node3);
assertEquals("Vector Size",3,nodeList.size());
assertTrue("First Element",node1==nodeList.elementAt(0));
assertTrue("Second Element",node2==nodeList.elementAt(1));
assertTrue("Third Element",node3==nodeList.elementAt(2));
assertTrue("Index wrong",1 == nodeList.indexOf(node2));
assertTrue("Index wrong",0 == nodeList.indexOf(node1));
assertTrue("Index wrong",2 == nodeList.indexOf(node3));
}
public void testRemoveItem() {
Node node1 = createHTMLNodeObject();
Node node2 = createHTMLNodeObject();
nodeList.add(node1);
nodeList.add(node2);
assertEquals("Vector Size",2,nodeList.size());
assertTrue("First Element",node1==nodeList.elementAt(0));
assertTrue("Second Element",node2==nodeList.elementAt(1));
nodeList.remove(node1);
assertEquals("List Size",1,nodeList.size());
assertTrue("First Element",node2==nodeList.elementAt(0));
}
public void testRemoveLastItem() {
Node node1 = createHTMLNodeObject();
Node node2 = createHTMLNodeObject();
nodeList.add(node1);
nodeList.add(node2);
assertEquals("Vector Size",2,nodeList.size());
assertTrue("First Element",node1==nodeList.elementAt(0));
assertTrue("Second Element",node2==nodeList.elementAt(1));
nodeList.remove(node2);
assertEquals("List Size",1,nodeList.size());
assertTrue("First Element",node1==nodeList.elementAt(0));
}
}