KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > gargoylesoftware > htmlunit > javascript > host > TextareaTest


1 /*
2  * Copyright (c) 2002, 2005 Gargoyle Software Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * 1. Redistributions of source code must retain the above copyright notice,
8  * this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright notice,
10  * this list of conditions and the following disclaimer in the documentation
11  * and/or other materials provided with the distribution.
12  * 3. The end-user documentation included with the redistribution, if any, must
13  * include the following acknowledgment:
14  *
15  * "This product includes software developed by Gargoyle Software Inc.
16  * (http://www.GargoyleSoftware.com/)."
17  *
18  * Alternately, this acknowledgment may appear in the software itself, if
19  * and wherever such third-party acknowledgments normally appear.
20  * 4. The name "Gargoyle Software" must not be used to endorse or promote
21  * products derived from this software without prior written permission.
22  * For written permission, please contact info@GargoyleSoftware.com.
23  * 5. Products derived from this software may not be called "HtmlUnit", nor may
24  * "HtmlUnit" appear in their name, without prior written permission of
25  * Gargoyle Software Inc.
26  *
27  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
28  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
29  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARGOYLE
30  * SOFTWARE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
31  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
33  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
36  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37  */

38 package com.gargoylesoftware.htmlunit.javascript.host;
39
40 import java.util.ArrayList;
41 import java.util.Arrays;
42 import java.util.List;
43
44 import com.gargoylesoftware.htmlunit.WebTestCase;
45 import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
46 import com.gargoylesoftware.htmlunit.html.HtmlForm;
47 import com.gargoylesoftware.htmlunit.html.HtmlPage;
48 import com.gargoylesoftware.htmlunit.html.HtmlTextArea;
49
50
51 /**
52  * Tests for Inputs
53  *
54  * @version $Revision: 1.9 $
55  * @author <a HREF="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
56  * @author Marc Guillemot
57  */

58 public class TextareaTest extends WebTestCase {
59     /**
60      * Create an instance
61      * @param name The name of the test
62      */

63     public TextareaTest( final String name ) {
64         super(name);
65     }
66
67
68     /**
69      * @throws Exception if the test fails
70      */

71     public void testGetValue() throws Exception {
72         final String htmlContent
73             = "<html><head><title>foo</title><script>"
74             + "function doTest(){\n"
75             + "alert(document.form1.textarea1.value )\n"
76             + "document.form1.textarea1.value='PoohBear';\n"
77             + "alert(document.form1.textarea1.value )\n"
78             + "}\n"
79             + "</script></head><body onload='doTest()'>"
80             + "<p>hello world</p>"
81             + "<form name='form1' method='post' >"
82             + "<textarea name='textarea1' cols='45' rows='4'>1234</textarea>"
83             + "</form></body></html>";
84         final List collectedAlerts = new ArrayList();
85         final HtmlPage page = loadPage(htmlContent, collectedAlerts);
86         assertEquals("foo", page.getTitleText());
87
88         final List expectedAlerts = Arrays.asList( new String[]{
89             "1234", "PoohBear"
90         } );
91
92         assertEquals( expectedAlerts, collectedAlerts );
93     }
94
95     
96     /**
97      * @throws Exception if the test fails
98      */

99     public void testOnChange() throws Exception {
100         final String htmlContent = "<html><head><title>foo</title>"
101             + "</head><body>"
102             + "<p>hello world</p>"
103             + "<form name='form1'>"
104             + " <textarea name='textarea1' onchange='alert(this.value)'></textarea>"
105             + "<input name='myButton' type='button' onclick='document.form1.textarea1.value=\"from button\"'>"
106             + "</form>"
107             + "</body></html>";
108
109         final List collectedAlerts = new ArrayList();
110         final HtmlPage page = loadPage(htmlContent, collectedAlerts);
111
112         final HtmlForm form = page.getFormByName("form1");
113         final HtmlTextArea textarea
114             = (HtmlTextArea)form.getTextAreasByName("textarea1").get(0);
115         textarea.setText("foo");
116         final HtmlButtonInput button = (HtmlButtonInput) form.getInputByName("myButton");
117         button.click();
118
119         final List expectedAlerts = Arrays.asList(new String[] {"foo"});
120         assertEquals(expectedAlerts, collectedAlerts);
121     }
122
123     /**
124      * Tests that setValue doesn't has side effect. Test for bug 1155063.
125      * @throws Exception if the test fails
126      */

127     public void testSetValue() throws Exception {
128         final String content = "<html><head></head>"
129             + "<body>"
130             + "<form name='form1'>"
131             + "<textarea name='question'></textarea>"
132             + "<input type='button' name='btn_submit' value='Next'>"
133             + "</form>"
134             + "<script>"
135             + "document.form1.question.value = 'some text';"
136             + "alert(document.form1.elements[0].tagName);"
137             + "alert(document.form1.elements[1].tagName);"
138             + "</script>"
139             + "</body>"
140             + "</html>";
141         final List expectedAlerts = Arrays.asList( new String[]{ "TEXTAREA", "INPUT" } );
142         final List collectedAlerts = new ArrayList();
143         createTestPageForRealBrowserIfNeeded(content, expectedAlerts);
144         loadPage(content, collectedAlerts);
145
146         assertEquals(expectedAlerts, collectedAlerts);
147     }
148 }
149
Popular Tags