KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > htmlparser > tests > tagTests > FormTagTest


1 // HTMLParser Library $Name: v1_5_20050313 $ - A java-based parser for HTML
2
// http://sourceforge.org/projects/htmlparser
3
// Copyright (C) 2004 Somik Raha
4
//
5
// Revision Control Information
6
//
7
// $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/tagTests/FormTagTest.java,v $
8
// $Author: derrickoswald $
9
// $Date: 2004/07/31 16:42:31 $
10
// $Revision: 1.46 $
11
//
12
// This library is free software; you can redistribute it and/or
13
// modify it under the terms of the GNU Lesser General Public
14
// License as published by the Free Software Foundation; either
15
// version 2.1 of the License, or (at your option) any later version.
16
//
17
// This library is distributed in the hope that it will be useful,
18
// but WITHOUT ANY WARRANTY; without even the implied warranty of
19
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
// Lesser General Public License for more details.
21
//
22
// You should have received a copy of the GNU Lesser General Public
23
// License along with this library; if not, write to the Free Software
24
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25
//
26

27 package org.htmlparser.tests.tagTests;
28
29 import org.htmlparser.Node;
30 import org.htmlparser.Parser;
31 import org.htmlparser.PrototypicalNodeFactory;
32 import org.htmlparser.Remark;
33 import org.htmlparser.Tag;
34 import org.htmlparser.Text;
35 import org.htmlparser.filters.NodeClassFilter;
36 import org.htmlparser.tags.BodyTag;
37 import org.htmlparser.tags.FormTag;
38 import org.htmlparser.tags.HeadTag;
39 import org.htmlparser.tags.Html;
40 import org.htmlparser.tags.InputTag;
41 import org.htmlparser.tags.LinkTag;
42 import org.htmlparser.tags.OptionTag;
43 import org.htmlparser.tags.SelectTag;
44 import org.htmlparser.tags.TableTag;
45 import org.htmlparser.tags.TextareaTag;
46 import org.htmlparser.tests.ParserTestCase;
47 import org.htmlparser.util.NodeIterator;
48 import org.htmlparser.util.NodeList;
49 import org.htmlparser.util.ParserException;
50
51 public class FormTagTest extends ParserTestCase {
52
53     static
54     {
55         System.setProperty ("org.htmlparser.tests.tagTests.FormTagTest", "FormTagTest");
56     }
57
58     public static final String JavaDoc FORM_HTML =
59     "<FORM METHOD=\""+FormTag.POST+"\" ACTION=\"do_login.php\" NAME=\"login_form\" onSubmit=\"return CheckData()\">\n"+
60         "<TR><TD ALIGN=\"center\">&nbsp;</TD></TR>\n"+
61         "<TR><TD ALIGN=\"center\"><FONT face=\"Arial, verdana\" size=2><b>User Name</b></font></TD></TR>\n"+
62         "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"text\" NAME=\"name\" SIZE=\"20\"></TD></TR>\n"+
63         "<TR><TD ALIGN=\"center\"><FONT face=\"Arial, verdana\" size=2><b>Password</b></font></TD></TR>\n"+
64         "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"password\" NAME=\"passwd\" SIZE=\"20\"></TD></TR>\n"+
65         "<TR><TD ALIGN=\"center\">&nbsp;</TD></TR>\n"+
66         "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"submit\" NAME=\"submit\" VALUE=\"Login\"></TD></TR>\n"+
67         "<TR><TD ALIGN=\"center\">&nbsp;</TD></TR>\n"+
68         "<TEXTAREA name=\"Description\" rows=\"15\" cols=\"55\" wrap=\"virtual\" class=\"composef\" tabindex=\"5\">Contents of TextArea</TEXTAREA>\n"+
69 // "<TEXTAREA name=\"AnotherDescription\" rows=\"15\" cols=\"55\" wrap=\"virtual\" class=\"composef\" tabindex=\"5\">\n"+
70
"<INPUT TYPE=\"hidden\" NAME=\"password\" SIZE=\"20\">\n"+
71         "<INPUT TYPE=\"submit\">\n"+
72         "</FORM>";
73
74     public FormTagTest(String JavaDoc name) {
75         super(name);
76     }
77
78     public void assertTypeNameSize(String JavaDoc description,String JavaDoc type,String JavaDoc name,String JavaDoc size,InputTag inputTag)
79     {
80         assertEquals(description+" type",type,inputTag.getAttribute("TYPE"));
81         assertEquals(description+" name",name,inputTag.getAttribute("NAME"));
82         assertEquals(description+" size",size,inputTag.getAttribute("SIZE"));
83     }
84
85     public void assertTypeNameValue(String JavaDoc description,String JavaDoc type,String JavaDoc name,String JavaDoc value,InputTag inputTag)
86     {
87         assertEquals(description+" type",type,inputTag.getAttribute("TYPE"));
88         assertEquals(description+" name",name,inputTag.getAttribute("NAME"));
89         assertEquals(description+" value",value,inputTag.getAttribute("VALUE"));
90     }
91
92     public void testScan() throws ParserException
93     {
94         createParser(FORM_HTML,"http://www.google.com/test/index.html");
95         parseAndAssertNodeCount(1);
96         assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag);
97         FormTag formTag = (FormTag)node[0];
98         assertStringEquals("Method",FormTag.POST,formTag.getFormMethod());
99         assertStringEquals("Location","http://www.google.com/test/do_login.php",formTag.getFormLocation());
100         assertStringEquals("Name","login_form",formTag.getFormName());
101         InputTag nameTag = formTag.getInputTag("name");
102         InputTag passwdTag = formTag.getInputTag("passwd");
103         InputTag submitTag = formTag.getInputTag("submit");
104         InputTag dummyTag = formTag.getInputTag("dummy");
105         assertNotNull("Input Name Tag should not be null",nameTag);
106         assertNotNull("Input Password Tag should not be null",passwdTag);
107         assertNotNull("Input Submit Tag should not be null",submitTag);
108         assertNull("Input dummy tag should be null",dummyTag);
109
110         assertTypeNameSize("Input Name Tag","text","name","20",nameTag);
111         assertTypeNameSize("Input Password Tag","password","passwd","20",passwdTag);
112         assertTypeNameValue("Input Submit Tag","submit","submit","Login",submitTag);
113
114         TextareaTag textAreaTag = formTag.getTextAreaTag("Description");
115         assertNotNull("Text Area Tag should have been found",textAreaTag);
116         assertEquals("Text Area Tag Contents","Contents of TextArea",textAreaTag.getValue());
117         assertNull("Should have been null",formTag.getTextAreaTag("junk"));
118
119         assertStringEquals("toHTML",FORM_HTML,formTag.toHtml());
120     }
121
122     public void testScanFormWithNoEnding() throws Exception JavaDoc
123     {
124         createParser(
125         "<TABLE>\n"+
126         "<FORM METHOD=\"post\" ACTION=\"do_login.php\" NAME=\"login_form\" onSubmit=\"return CheckData()\">\n"+
127         "<TR><TD ALIGN=\"center\">&nbsp;</TD></TR>\n"+
128         "<TR><TD ALIGN=\"center\"><FONT face=\"Arial, verdana\" size=2><b>User Name</b></font></TD></TR>\n"+
129         "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"text\" NAME=\"name\" SIZE=\"20\"></TD></TR>\n"+
130         "<TR><TD ALIGN=\"center\"><FONT face=\"Arial, verdana\" size=2><b>Password</b></font></TD></TR>\n"+
131         "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"password\" NAME=\"passwd\" SIZE=\"20\"></TD></TR>\n"+
132         "<TR><TD ALIGN=\"center\">&nbsp;</TD></TR>\n"+
133         "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"submit\" NAME=\"submit\" VALUE=\"Login\"></TD></TR>\n"+
134         "<TR><TD ALIGN=\"center\">&nbsp;</TD></TR>\n"+
135         "<INPUT TYPE=\"hidden\" NAME=\"password\" SIZE=\"20\">\n"+
136         "</TABLE>","http://www.google.com/test/index.html");
137
138         parser.setNodeFactory (
139             new PrototypicalNodeFactory (
140                 new Tag[]
141                 {
142                     new FormTag (),
143                     new InputTag (),
144                     new TextareaTag (),
145                     new SelectTag (),
146                     new OptionTag (),
147                 }));
148
149         parseAndAssertNodeCount(4);
150     }
151
152     /**
153      * Bug reported by Pavan Podila - forms with links are not being parsed
154      * Sample html is from google
155      */

156     public void testScanFormWithLinks() throws ParserException
157     {
158         createParser(
159         "<form action=\"/search\" name=f><table cellspacing=0 cellpadding=0><tr><td width=75>&nbsp;"+
160         "</td><td align=center><input type=hidden name=hl value=en><input type=hidden name=ie "+
161         "value=\"UTF-8\"><input type=hidden name=oe value=\"UTF-8\"><input maxLength=256 size=55"+
162         " name=q value=\"\"><br><input type=submit value=\"Google Search\" name=btnG><input type="+
163         "submit value=\"I'm Feeling Lucky\" name=btnI></td><td valign=top nowrap><font size=-2>"+
164         "&nbsp;&#8226;&nbsp;<a HREF=/advanced_search?hl=en>Advanced&nbsp;Search</a><br>&nbsp;&#8226;"+
165         "&nbsp;<a HREF=/preferences?hl=en>Preferences</a><br>&nbsp;&#8226;&nbsp;<a HREF=/"+
166         "language_tools?hl=en>Language Tools</a></font></td></tr></table></form>"
167         );
168
169         parser.setNodeFactory (
170             new PrototypicalNodeFactory (
171                 new Tag[]
172                 {
173                     new FormTag (),
174                     new InputTag (),
175                     new TextareaTag (),
176                     new SelectTag (),
177                     new OptionTag (),
178                     new LinkTag (),
179                     new TableTag (),
180                 }));
181         parseAndAssertNodeCount(1);
182         assertTrue("Should be a HTMLFormTag",node[0] instanceof FormTag);
183         NodeList linkTags = new NodeList ();
184         NodeClassFilter filter = new NodeClassFilter (LinkTag.class);
185         for (NodeIterator e = ((FormTag)node[0]).children (); e.hasMoreNodes ();)
186             e.nextNode ().collectInto (linkTags, filter);
187         assertEquals("Link Tag Count",3,linkTags.size ());
188         LinkTag[] linkTag = new LinkTag[3];
189         linkTags.copyToNodeArray (linkTag);
190         assertEquals("First Link Tag Text","Advanced&nbsp;Search",linkTag[0].getLinkText());
191         assertEquals("Second Link Tag Text","Preferences",linkTag[1].getLinkText());
192         assertEquals("Third Link Tag Text","Language Tools",linkTag[2].getLinkText());
193     }
194     /**
195      * Bug 652674 - forms with comments are not being parsed
196      */

197     public void testScanFormWithComments() throws ParserException {
198         createParser(
199         "<form action=\"/search\" name=f><table cellspacing=0 cellpadding=0><tr><td width=75>&nbsp;"+
200         "</td><td align=center><input type=hidden name=hl value=en><input type=hidden name=ie "+
201         "value=\"UTF-8\"><input type=hidden name=oe value=\"UTF-8\"><!-- Hello World -->"+
202         "<input maxLength=256 size=55"+
203         " name=q value=\"\"><br><input type=submit value=\"Google Search\" name=btnG><input type="+
204         "submit value=\"I'm Feeling Lucky\" name=btnI></td><td valign=top nowrap><font size=-2>"+
205         "&nbsp;&#8226;&nbsp;<a HREF=/advanced_search?hl=en>Advanced&nbsp;Search</a><br>&nbsp;&#8226;"+
206         "&nbsp;<a HREF=/preferences?hl=en>Preferences</a><br>&nbsp;&#8226;&nbsp;<a HREF=/"+
207         "language_tools?hl=en>Language Tools</a></font></td></tr></table></form>"
208         );
209
210         parser.setNodeFactory (
211             new PrototypicalNodeFactory (
212                 new Tag[]
213                 {
214                     new FormTag (),
215                     new InputTag (),
216                     new TextareaTag (),
217                     new SelectTag (),
218                     new OptionTag (),
219                     new TableTag (),
220                 }));
221         parseAndAssertNodeCount(1);
222         assertTrue("Should be a HTMLFormTag",node[0] instanceof FormTag);
223         NodeList remarkNodes = new NodeList ();
224         NodeClassFilter filter = new NodeClassFilter (Remark.class);
225         for (NodeIterator e = ((FormTag)node[0]).children (); e.hasMoreNodes ();)
226             e.nextNode ().collectInto (remarkNodes, filter);
227         assertEquals("Remark Node Count",1,remarkNodes.size ());
228         assertEquals("First Remark Node"," Hello World ",remarkNodes.elementAt (0).toPlainTextString());
229     }
230     /**
231      * Bug 652674 - forms with comments are not being parsed
232      */

233     public void testScanFormWithComments2() throws ParserException {
234         createParser(
235         "<FORM id=\"id\" name=\"name\" action=\"http://some.site/aPage.asp?id=97\" method=\"post\">\n"+
236         " <!--\n"+
237         " Just a Comment\n"+
238         " -->\n"+
239         "</FORM>");
240         parseAndAssertNodeCount(1);
241         assertTrue("Should be a HTMLFormTag",node[0] instanceof FormTag);
242         FormTag formTag = (FormTag)node[0];
243         Remark [] remarkNode = new Remark[10];
244         int i = 0;
245         for (NodeIterator e=formTag.children();e.hasMoreNodes();) {
246             Node formNode = e.nextNode();
247             if (formNode instanceof Remark) {
248                 remarkNode[i++] = (Remark)formNode;
249             }
250         }
251         assertEquals("Remark Node Count",1,i);
252     }
253
254     /**
255      * Bug 656870 - a form tag with a previously open link causes infinite loop
256      * on encounter
257      */

258     public void testScanFormWithPreviousOpenLink() throws ParserException {
259         createParser(
260             "<A HREF=\"http://www.oygevalt.org/\">Home</A>\n"+
261             "<P>\n"+
262             "And now, the good stuff:\n"+
263             "<P>\n"+
264             "<A HREF=\"http://www.yahoo.com\">Yahoo!\n"+
265             "<FORM ACTION=\".\" METHOD=\"GET\">\n"+
266                 "<INPUT TYPE=\"TEXT\">\n"+
267                 "<BR>\n"+
268                 "<A HREF=\"http://www.helpme.com\">Help</A> " +
269                 "<INPUT TYPE=\"checkbox\">\n"+
270                 "<P>\n"+
271                 "<INPUT TYPE=\"SUBMIT\">\n"+
272             "</FORM>"
273         );
274         parseAndAssertNodeCount(8);
275         assertTrue("Seventh Node is a link",node[6] instanceof LinkTag);
276         LinkTag linkTag = (LinkTag)node[6];
277         assertEquals("Link Text","Yahoo!\n",linkTag.getLinkText());
278         assertEquals("Link URL","http://www.yahoo.com",linkTag.getLink());
279         assertType("Eigth Node",FormTag.class,node[7]);
280     }
281
282     /**
283      * Bug 713907 reported by Dhaval Udani, erroneous
284      * parsing of form tag (even when form scanner is not
285      * registered)
286      */

287     public void testFormScanningShouldNotHappen() throws Exception JavaDoc {
288         String JavaDoc testHTML =
289             "<HTML><HEAD><TITLE>Test Form Tag</TITLE></HEAD>" +
290             "<BODY><FORM name=\"form0\"><INPUT type=\"text\" name=\"text0\"></FORM>" +
291             "</BODY></HTML>";
292         createParser(
293             testHTML
294         );
295         ((PrototypicalNodeFactory)parser.getNodeFactory ()).unregisterTag (new FormTag ());
296         Node [] nodes =
297             parser.extractAllNodesThatAre(
298                 FormTag.class
299             );
300         assertEquals(
301             "shouldnt have found form tag",
302             0,
303             nodes.length
304         );
305     }
306
307     /**
308      * See bug #745566 StackOverflowError on select with too many unclosed options.
309      * Under Windows this throws a stack overflow exception.
310      */

311     public void testUnclosedOptions () throws ParserException
312     {
313         String JavaDoc url = "http://htmlparser.sourceforge.net/test/overflowpage.html";
314         int i;
315         Node[] nodes;
316
317         parser = new Parser(url);
318         PrototypicalNodeFactory factory = new PrototypicalNodeFactory ();
319         // we want to expose the repetitive tags
320
factory.unregisterTag (new Html ());
321         factory.unregisterTag (new HeadTag ());
322         factory.unregisterTag (new BodyTag ());
323         parser.setNodeFactory (factory);
324         i = 0;
325         nodes = new Node[50];
326         for (NodeIterator e = parser.elements(); e.hasMoreNodes();)
327             nodes[i++] = e.nextNode();
328         assertEquals ("Expected nodes", 39, i);
329     }
330     
331     public void testSetFormLocation() throws ParserException
332     {
333         createParser(FORM_HTML);
334         parseAndAssertNodeCount(1);
335         assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag);
336         FormTag formTag = (FormTag)node[0];
337
338         formTag.setFormLocation("http://www.yahoo.com/yahoo/do_not_login.jsp");
339         String JavaDoc expected =
340             FORM_HTML.substring (0, FORM_HTML.indexOf ("\"do_login.php\""))
341             + "\"http://www.yahoo.com/yahoo/do_not_login.jsp\""
342             + FORM_HTML.substring (FORM_HTML.indexOf ("\"do_login.php\"") + 14);
343         assertStringEquals("Raw String",expected,formTag.toHtml());
344     }
345
346     public void testToPlainTextString() throws ParserException
347     {
348         createParser(FORM_HTML);
349         parseAndAssertNodeCount(1);
350         assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag);
351         FormTag formTag = (FormTag)node[0];
352         assertStringEquals("Form Tag string representation","\n&nbsp;\nUser Name\n\nPassword\n\n&nbsp;\n\n&nbsp;\nContents of TextArea\n\n\n", formTag.toPlainTextString());
353     }
354
355     public void testSearchFor() throws ParserException
356     {
357         createParser(FORM_HTML);
358
359         parser.setNodeFactory (
360             new PrototypicalNodeFactory (
361                 new Tag[]
362                 {
363                     new FormTag (),
364                     new InputTag (),
365                     new TextareaTag (),
366                     new SelectTag (),
367                     new OptionTag (),
368                 }));
369         parseAndAssertNodeCount(1);
370         assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag);
371         FormTag formTag = (FormTag)node[0];
372         NodeList nodeList = formTag.searchFor("USER NAME");
373         assertEquals("Should have found nodes",1,nodeList.size());
374
375         Node[] nodes = nodeList.toNodeArray();
376
377         assertEquals("Number of nodes found",1,nodes.length);
378         assertType("search result node",Text.class,nodes[0]);
379         Text stringNode = (Text)nodes[0];
380         assertEquals("Expected contents of string node","User Name",stringNode.getText());
381     }
382
383     public void testSearchForCaseSensitive() throws ParserException
384     {
385         createParser(FORM_HTML);
386         parseAndAssertNodeCount(1);
387         assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag);
388         FormTag formTag = (FormTag)node[0];
389         NodeList nodeList = formTag.searchFor("USER NAME",true);
390         assertEquals("Should have not found nodes",0,nodeList.size());
391
392         nodeList = formTag.searchFor("User Name",true);
393         assertNotNull("Should have not found nodes",nodeList);
394     }
395
396
397     public void testSearchByName() throws ParserException
398     {
399         createParser(FORM_HTML);
400
401         parser.setNodeFactory (
402             new PrototypicalNodeFactory (
403                 new Tag[]
404                 {
405                     new FormTag (),
406                     new InputTag (),
407                     new TextareaTag (),
408                     new SelectTag (),
409                     new OptionTag (),
410                 }));
411         parseAndAssertNodeCount(1);
412         assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag);
413         FormTag formTag = (FormTag)node[0];
414
415         Tag tag= formTag.searchByName("passwd");
416         assertNotNull("Should have found the password node",tag);
417         assertType("tag found",InputTag.class,tag);
418     }
419
420     /**
421      * Bug 713907 reported by Dhaval Udani, erroneous
422      * attributes being reported.
423      */

424     public void testFormRendering() throws Exception JavaDoc
425     {
426         String JavaDoc testHTML =
427             "<HTML><HEAD><TITLE>Test Form Tag</TITLE></HEAD>" +
428             "<BODY><FORM name=\"form0\"><INPUT type=\"text\" name=\"text0\"></FORM>" +
429             "</BODY></HTML>";
430         createParser(
431             testHTML
432         );
433         FormTag formTag =
434             (FormTag)(parser.extractAllNodesThatAre(
435                 FormTag.class
436             )[0]);
437         assertNotNull("Should have found a form tag",formTag);
438         assertStringEquals("name","form0",formTag.getFormName());
439         assertNull("action",formTag.getAttribute("ACTION"));
440         assertXmlEquals(
441             "html",
442             "<FORM NAME=\"form0\">" +
443                 "<INPUT TYPE=\"text\" NAME=\"text0\">" +
444             "</FORM>",
445             formTag.toHtml()
446         );
447     }
448
449     /**
450      * From support request #772998 Cannot extract input tags
451      * The getFormInputs list was reporting zero size and textarea tags were
452      * in the inputs list.
453      * Neither of these was reproducible.
454      */

455     public void testTextArea () throws Exception JavaDoc
456     {
457         FormTag formTag;
458         NodeList nl;
459         InputTag inpTag;
460         TextareaTag texTag;
461         
462         String JavaDoc html = "<body onload=\"otextnloadHandler()\" onunload=\"closeAdvanced()\">\n" +
463             " <form name=\"searchForm\" onsubmit=\"doSearch()\">\n" +
464             " <table id=\"searchTable\" align=\"left\" valign=\"middle\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n" +
465             " <tbody><tr nowrap=\"\" valign=\"middle\">\n" +
466             " <td id=\"searchTD\">\n" +
467             " <label id=\"searchLabel\" for=\"searchWord\">\n" +
468             " Search:\n" +
469             " </label>\n" +
470             " </td>\n" +
471             "\n" +
472             " <td>\n" +
473             " <input type=\"text\" id=\"searchWord\" name=\"searchWord\" value=\"\" size=\"24\" maxlength=\"256\" alt=\"Search Expression\">\n" +
474             " </td>\n" +
475             // note: this was added as there weren't any textarea tags in the page referenced
476
" <td>\n" +
477             " <textarea name=\"mytextarea\" rows=\"1\" cols=\"12\" alt=\"Free Form Text\">\n" +
478             " The text.\n" +
479             " </textarea>\n" +
480             " </td>\n" +
481             " <td>\n" +
482             " <input type=\"button\" onclick=\"this.blur();doSearch()\" value=\"GO\" id=\"go\" alt=\"GO\">\n" +
483             " <input type=\"hidden\" name=\"maxHits\" value=\"500\">\n" +
484             " </td>\n" +
485             " <td nowrap=\"nowrap\">\n" +
486             "\n" +
487             " <a id=\"scopeLabel\" HREF=\"javascript:openAdvanced();\" title=\"Search only the following topics\" alt=\"Search only the following topics\" onmouseover=\"window.status='Search only the following topics'; return true;\" onmouseout=\"window.status='';\">Search scope:</a>\n" +
488             " </td>\n" +
489             " <td nowrap=\"nowrap\">\n" +
490             " <input type=\"hidden\" name=\"workingSet\" value=\"All topics\">\n" +
491             " <div id=\"scope\">All topics</div>\n" +
492             " </td>\n" +
493             " </tr>\n" +
494             "\n" +
495             " </tbody></table>\n" +
496             " </form>\n" +
497             "\n" +
498             "</body>\n";
499         createParser (html);
500         formTag =
501             (FormTag)(parser.extractAllNodesThatAre (
502                 FormTag.class
503             )[0]);
504         assertNotNull ("Should have found a form tag",formTag);
505         assertStringEquals ("name", "searchForm", formTag.getFormName ());
506         nl = formTag.getFormInputs ();
507         assertTrue ("4 inputs", 4 == nl.size ());
508         inpTag = (InputTag)nl.elementAt (0);
509         assertStringEquals ("name", "searchWord", inpTag.getAttribute ("name"));
510         assertStringEquals ("value", "", inpTag.getAttribute ("value"));
511         inpTag = (InputTag)nl.elementAt (1);
512         assertNull ("name", inpTag.getAttribute ("name"));
513         assertStringEquals ("value", "GO", inpTag.getAttribute ("value"));
514         inpTag = (InputTag)nl.elementAt (2);
515         assertStringEquals ("name", "maxHits", inpTag.getAttribute ("name"));
516         assertStringEquals ("value", "500", inpTag.getAttribute ("value"));
517         inpTag = (InputTag)nl.elementAt (3);
518         assertStringEquals ("name", "workingSet", inpTag.getAttribute ("name"));
519         assertStringEquals ("value", "All topics", inpTag.getAttribute ("value"));
520         nl = formTag.getFormTextareas ();
521         assertTrue ("1 textarea", 1 == nl.size ());
522         texTag = (TextareaTag)nl.elementAt (0);
523         assertStringEquals ("name", "mytextarea", texTag.getAttribute ("name"));
524         assertTrue ("only 1 child", 1 == texTag.getChildCount ());
525         assertStringEquals ("text contents", "\n The text.\n ", texTag.getChild (0).toHtml ());
526     }
527
528     /**
529      * From bug #825645 <input> not getting parsed inside table
530      */

531     public void testInputInTable () throws Exception JavaDoc
532     {
533         FormTag formTag;
534         NodeList nl;
535         InputTag inpTag;
536
537         String JavaDoc html = "<html>\n" +
538             "<body>\n" +
539             "<form action=\"/cgi-bin/test.pl\" method=\"post\">\n" +
540             "<table><tr><td>\n" +
541             "<INPUT type=hidden NAME=\"test1\" VALUE=\"insidetable\">\n" +
542             "</td></tr>\n" +
543             "</table>\n" +
544             "<INPUT type=hidden NAME=\"Test2\"\n" +
545             "VALUE=\"outsidetable\">\n" +
546             "<INPUT type=hidden name=\"a\" value=\"b\">\n" +
547             "</form>\n" +
548             "</body>\n" +
549             "</html>\n";
550         createParser (html);
551         formTag =
552             (FormTag)(parser.extractAllNodesThatAre (
553                 FormTag.class
554             )[0]);
555         assertNotNull ("Should have found a form tag",formTag);
556         nl = formTag.getFormInputs ();
557         assertTrue ("3 inputs", 3 == nl.size ());
558         inpTag = (InputTag)nl.elementAt (0);
559         assertStringEquals ("name", "test1", inpTag.getAttribute ("name"));
560         assertStringEquals ("value", "insidetable", inpTag.getAttribute ("value"));
561         inpTag = (InputTag)nl.elementAt (1);
562         assertStringEquals ("name", "Test2", inpTag.getAttribute ("name"));
563         assertStringEquals ("value", "outsidetable", inpTag.getAttribute ("value"));
564         inpTag = (InputTag)nl.elementAt (2);
565         assertStringEquals ("name", "a", inpTag.getAttribute ("name"));
566         assertStringEquals ("value", "b", inpTag.getAttribute ("value"));
567     }
568 }
569
Popular Tags