// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Dhaval Udani // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/tagTests/SelectTagTest.java,v $ // $Author: derrickoswald $ // $Date: 2005/05/10 22:11:48 $ // $Revision: 1.41 $ // // 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.tagTests; import org.htmlparser.tags.OptionTag; import org.htmlparser.tags.SelectTag; import org.htmlparser.tests.ParserTestCase; import org.htmlparser.util.ParserException; public class SelectTagTest extends ParserTestCase { static { System.setProperty ("org.htmlparser.tests.tagTests.SelectTagTest", "SelectTagTest"); } private String testHTML = "<SELECT name=\"Nominees\">\n"+ "<option value=\"Spouse\">Spouse"+ "<option value=\"Father\"></option>\n"+ "<option value=\"Mother\">Mother\n" + "<option value=\"Son\">\nSon\n</option>"+ "<option value=\"Daughter\">\nDaughter\n"+ "<option value=\"Nephew\">\nNephew</option>\n"+ "<option value=\"Niece\">Niece\n" + "</select>"; private String correctedHTML = "<SELECT name=\"Nominees\">\n"+ "<option value=\"Spouse\">Spouse</option>"+ "<option value=\"Father\"></option>\n"+ "<option value=\"Mother\">Mother\n</option>" + "<option value=\"Son\">\nSon\n</option>"+ "<option value=\"Daughter\">\nDaughter\n</option>"+ "<option value=\"Nephew\">\nNephew</option>\n"+ "<option value=\"Niece\">Niece\n</option>" + "</select>"; private SelectTag selectTag; private String html = "<Select name=\"Remarks\">" + "<option value='option1'>option1</option>" + "</Select>" + "<Select name=\"something\">" + "<option value='option2'>option2</option>" + "</Select>" + "<Select></Select>" + "<Select name=\"Remarks\">The death threats of the organization\n" + "refused to intimidate the soldiers</Select>" + "<Select name=\"Remarks\">The death threats of the LTTE\n" + "refused to intimidate the Tamilians\n</Select>"; public SelectTagTest(String name) { super(name); } protected void setUp() throws Exception{ super.setUp(); createParser(testHTML); parseAndAssertNodeCount(1); assertTrue("Node 1 should be Select Tag",node[0] instanceof SelectTag); selectTag = (SelectTag) node[0]; } public void testToHTML() throws ParserException { assertStringEquals("HTML String", correctedHTML, selectTag.toHtml()); } public void testGetOptionTags() { OptionTag [] optionTags = selectTag.getOptionTags(); assertEquals("option tag array length",7,optionTags.length); assertEquals("option tag 1","Spouse",optionTags[0].getOptionText()); assertEquals("option tag 7","Niece\n",optionTags[6].getOptionText()); } public void testScan() throws ParserException { createParser(html,"http://www.google.com/test/index.html"); parseAndAssertNodeCount(5); // check the Select node for(int j=0;j<nodeCount;j++) assertTrue(node[j] instanceof SelectTag); SelectTag selectTag = (SelectTag)node[0]; OptionTag [] optionTags = selectTag.getOptionTags(); assertEquals("option tag array length",1,optionTags.length); assertEquals("option tag value","option1",optionTags[0].getOptionText()); } /** * Bug reproduction. */ public void testSelectTagWithComments() throws Exception { createParser( "<form>" + "<select> " + "<!-- 1 --><option selected>123 " + "<option>345 " + "</select> " + "</form>" ); parseAndAssertNodeCount(1); } }