From: <rb...@us...> - 2013-05-02 17:06:00
|
Revision: 8254 http://sourceforge.net/p/htmlunit/code/8254 Author: rbri Date: 2013-05-02 17:05:55 +0000 (Thu, 02 May 2013) Log Message: ----------- fixes for defaultValue processing for the various input controls together with more tests Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlButtonInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlHiddenInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImageInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPasswordInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlResetInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlSubmitInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlTextInput.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlButtonTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlHiddenInputTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPasswordInputTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlResetInputTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlSubmitInputTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextInput2Test.java Added Paths: ----------- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlButtonInput2Test.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlImageInput2Test.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlResetInput2Test.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlButtonInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlButtonInput.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlButtonInput.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -26,6 +26,7 @@ * @author <a href="mailto:cs...@dy...">Christian Sell</a> * @author Daniel Gredler * @author Ahmed Ashour + * @author Ronald Brill */ public class HtmlButtonInput extends HtmlInput { @@ -51,5 +52,14 @@ // Empty. } + /** + * {@inheritDoc} + */ + @Override + public void setAttributeNS(final String namespaceURI, final String qualifiedName, final String attributeValue) { + if ("value".equals(qualifiedName)) { + setDefaultValue(attributeValue, false); + } + super.setAttributeNS(namespaceURI, qualifiedName, attributeValue); + } } - Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlHiddenInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlHiddenInput.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlHiddenInput.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -46,6 +46,17 @@ } /** + * {@inheritDoc} + */ + @Override + public void setAttributeNS(final String namespaceURI, final String qualifiedName, final String attributeValue) { + if ("value".equals(qualifiedName)) { + setDefaultValue(attributeValue, false); + } + super.setAttributeNS(namespaceURI, qualifiedName, attributeValue); + } + + /** * @see com.gargoylesoftware.htmlunit.html.HtmlInput#asText() * @return an empty string as an hidden field is not visible */ Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImageInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImageInput.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImageInput.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -144,4 +144,15 @@ super.setDefaultValue(defaultValue); setValueAttribute(defaultValue); } + + /** + * {@inheritDoc} + */ + @Override + public void setAttributeNS(final String namespaceURI, final String qualifiedName, final String attributeValue) { + if ("value".equals(qualifiedName)) { + setDefaultValue(attributeValue, false); + } + super.setAttributeNS(namespaceURI, qualifiedName, attributeValue); + } } Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlInput.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlInput.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -353,7 +353,8 @@ } /** - * {@inheritDoc} Also sets the value attribute when emulating Netscape browsers. + * {@inheritDoc} + * Also sets the value attribute when emulating Netscape browsers. * @see SubmittableElement#setDefaultValue(String) * @see HtmlFileInput#setDefaultValue(String) */ Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPasswordInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPasswordInput.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPasswordInput.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -16,6 +16,8 @@ import java.util.Map; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_SET_DEFAULT_VALUE_UPDATES_VALUE; + import com.gargoylesoftware.htmlunit.SgmlPage; import com.gargoylesoftware.htmlunit.html.impl.SelectableTextInput; import com.gargoylesoftware.htmlunit.html.impl.SelectionDelegate; @@ -29,6 +31,7 @@ * @author <a href="mailto:cs...@dy...">Christian Sell</a> * @author Daniel Gredler * @author Ahmed Ashour + * @author Ronald Brill */ public class HtmlPasswordInput extends HtmlInput implements SelectableTextInput { @@ -174,4 +177,13 @@ setSelectionEnd(attributeValue.length()); } } + + /** + * {@inheritDoc} + */ + public void setDefaultValue(final String defaultValue) { + boolean modifyValue = hasFeature(HTMLINPUT_SET_DEFAULT_VALUE_UPDATES_VALUE); + modifyValue = modifyValue && getValueAttribute().equals(getDefaultValue()); + setDefaultValue(defaultValue, modifyValue); + } } Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlResetInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlResetInput.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlResetInput.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -28,6 +28,7 @@ * @author <a href="mailto:cs...@dy...">Christian Sell</a> * @author Daniel Gredler * @author Ahmed Ashour + * @author Ronald Brill */ public class HtmlResetInput extends HtmlInput { @@ -67,4 +68,14 @@ // Empty. } + /** + * {@inheritDoc} + */ + @Override + public void setAttributeNS(final String namespaceURI, final String qualifiedName, final String attributeValue) { + if ("value".equals(qualifiedName)) { + setDefaultValue(attributeValue, false); + } + super.setAttributeNS(namespaceURI, qualifiedName, attributeValue); + } } Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlSubmitInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlSubmitInput.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlSubmitInput.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -149,4 +149,15 @@ } return super.getSubmitKeyValuePairs(); } + + /** + * {@inheritDoc} + */ + @Override + public void setAttributeNS(final String namespaceURI, final String qualifiedName, final String attributeValue) { + if ("value".equals(qualifiedName)) { + setDefaultValue(attributeValue, false); + } + super.setAttributeNS(namespaceURI, qualifiedName, attributeValue); + } } Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlTextInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlTextInput.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlTextInput.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -14,6 +14,8 @@ */ package com.gargoylesoftware.htmlunit.html; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_SET_DEFAULT_VALUE_UPDATES_VALUE; + import java.util.Map; import com.gargoylesoftware.htmlunit.SgmlPage; @@ -30,6 +32,7 @@ * @author Daniel Gredler * @author Ahmed Ashour * @author Marc Guillemot + * @author Ronald Brill */ public class HtmlTextInput extends HtmlInput implements SelectableTextInput { @@ -176,4 +179,13 @@ protected Object clone() throws CloneNotSupportedException { return new HtmlTextInput(getNamespaceURI(), getQualifiedName(), getPage(), getAttributesMap()); } + + /** + * {@inheritDoc} + */ + public void setDefaultValue(final String defaultValue) { + boolean modifyValue = hasFeature(HTMLINPUT_SET_DEFAULT_VALUE_UPDATES_VALUE); + modifyValue = modifyValue && getValueAttribute().equals(getDefaultValue()); + setDefaultValue(defaultValue, modifyValue); + } } Added: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlButtonInput2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlButtonInput2Test.java (rev 0) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlButtonInput2Test.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2002-2013 Gargoyle Software Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gargoylesoftware.htmlunit.html; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import com.gargoylesoftware.htmlunit.BrowserRunner; +import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; +import com.gargoylesoftware.htmlunit.WebDriverTestCase; + +/** + * Tests for {@link HtmlButtonInput}. + * + * @version $Revision$ + * @author <a href="mailto:mb...@Ga...">Mike Bowler</a> + * @author Ronald Brill + */ +@RunWith(BrowserRunner.class) +public class HtmlButtonInput2Test extends WebDriverTestCase { + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "initial-initial", "initial-initial", "some text-some text", "some text-some text" }) + public void reset() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var button = document.getElementById('testId');\n" + + " alert(button.value + '-' + button.defaultValue);\n" + + + " document.getElementById('testReset').click;\n" + + " alert(button.value + '-' + button.defaultValue);\n" + + + " button.value = 'some text';\n" + + " alert(button.value + '-' + button.defaultValue);\n" + + + " document.getElementById('testReset').click;\n" + + " alert(button.value + '-' + button.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <input type='button' id='testId' value='initial'>\n" + + " <input type='reset' id='testReset'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "initial-initial", "default-default", "some text-some text", "newdefault-newdefault" }) + public void defaultValue() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var button = document.getElementById('testId');\n" + + " alert(button.value + '-' + button.defaultValue);\n" + + + " button.defaultValue = 'default';\n" + + " alert(button.value + '-' + button.defaultValue);\n" + + + " button.value = 'some text';\n" + + " alert(button.value + '-' + button.defaultValue);\n" + + " button.defaultValue = 'newdefault';\n" + + " alert(button.value + '-' + button.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <input type='button' id='testId' value='initial'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } +} Property changes on: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlButtonInput2Test.java ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Author Date Id Revision \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlButtonTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlButtonTest.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlButtonTest.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -48,7 +48,7 @@ * @throws Exception if the test fails */ @Test - public void testButtonClick_onClick() throws Exception { + public void buttonClick_onClick() throws Exception { final String htmlContent = "<html><head><title>foo</title></head><body>\n" + "<form id='form1' onSubmit='alert(\"bar\")' onReset='alert(\"reset\")'>\n" @@ -72,7 +72,7 @@ * @throws Exception if the test fails */ @Test - public void testSubmitClick_onClick() throws Exception { + public void submitClick_onClick() throws Exception { final String htmlContent = "<html><head><title>foo</title></head><body>\n" + "<form id='form1' onSubmit='alert(\"bar\")' onReset='alert(\"reset\")'>\n" @@ -95,95 +95,9 @@ * @throws Exception if the test fails */ @Test - public void testResetClick_onClick() throws Exception { + public void buttonTypeSubmit() throws Exception { final String htmlContent = "<html><head><title>foo</title></head><body>\n" - + "<form id='form1' onSubmit='alert(\"bar\")' onReset='alert(\"reset\")'>\n" - + " <button type='reset' name='button' id='button' " - + "onClick='alert(\"foo\")'>Push me</button>\n" - + "</form></body></html>"; - final List<String> collectedAlerts = new ArrayList<String>(); - final HtmlPage page = loadPage(htmlContent, collectedAlerts); - final HtmlButton button = page.getHtmlElementById("button"); - - final HtmlPage secondPage = button.click(); - - final String[] expectedAlerts = {"foo", "reset"}; - assertEquals(expectedAlerts, collectedAlerts); - - assertSame(page, secondPage); - } - - /** - * @throws Exception if the test fails - */ - @Test - public void testReset() throws Exception { - final String htmlContent - = "<html><head><title>foo</title></head><body>\n" - + "<form id='form1'>\n" - + "<input type='text' name='textfield1' id='textfield1' value='foo'/>\n" - + "<input type='password' name='password1' id='password1' value='foo'/>\n" - + "<input type='hidden' name='hidden1' id='hidden1' value='foo'/>\n" - + "<input type='radio' name='radioButton' value='foo' checked/>\n" - + "<input type='radio' name='radioButton' value='bar'/>\n" - + "<input type='checkbox' name='checkBox' value='check'/>\n" - + "<select id='select1'>\n" - + " <option id='option1' selected value='1'>Option1</option>\n" - + " <option id='option2' value='2'>Option2</option>\n" - + "</select>\n" - + "<textarea id='textarea1'>Foobar</textarea>\n" - + "<isindex prompt='Enter some text' id='isindex1'>\n" - + "<button type='reset' id='resetButton' value='pushme'/>\n" - + "</form></body></html>"; - final HtmlPage page = loadPage(htmlContent); - final HtmlForm form = page.getHtmlElementById("form1"); - final HtmlButton resetInput = page.getHtmlElementById("resetButton"); - - // change all the values to something else - form.<HtmlRadioButtonInput>getFirstByXPath( - "//input[@type='radio' and @name='radioButton' and @value='bar']").setChecked(true); - ((HtmlCheckBoxInput) form.getInputByName("checkBox")).setChecked(true); - page.<HtmlOption>getHtmlElementById("option1").setSelected(false); - page.<HtmlOption>getHtmlElementById("option2").setSelected(true); - page.<HtmlTextArea>getHtmlElementById("textarea1").setText("Flintstone"); - page.<HtmlTextInput>getHtmlElementById("textfield1").setValueAttribute("Flintstone"); - page.<HtmlHiddenInput>getHtmlElementById("hidden1").setValueAttribute("Flintstone"); - page.<HtmlPasswordInput>getHtmlElementById("password1").setValueAttribute("Flintstone"); - page.<HtmlIsIndex>getHtmlElementById("isindex1").setValue("Flintstone"); - - // Check to make sure they did get changed - assertEquals("bar", form.getCheckedRadioButton("radioButton").getValueAttribute()); - assertTrue(form.<HtmlCheckBoxInput>getInputByName("checkBox").isChecked()); - assertFalse(page.<HtmlOption>getHtmlElementById("option1").isSelected()); - assertTrue(page.<HtmlOption>getHtmlElementById("option2").isSelected()); - assertEquals("Flintstone", page.<HtmlTextArea>getHtmlElementById("textarea1").getText()); - assertEquals("Flintstone", page.<HtmlTextInput>getHtmlElementById("textfield1").getValueAttribute()); - assertEquals("Flintstone", page.<HtmlHiddenInput>getHtmlElementById("hidden1").getValueAttribute()); - assertEquals("Flintstone", page.<HtmlIsIndex>getHtmlElementById("isindex1").getValue()); - - final HtmlPage secondPage = (HtmlPage) resetInput.click(); - assertSame(page, secondPage); - - // Check to make sure all the values have been set back to their original values. - assertEquals("foo", form.getCheckedRadioButton("radioButton").getValueAttribute()); - assertFalse(form.<HtmlCheckBoxInput>getInputByName("checkBox").isChecked()); - assertTrue(page.<HtmlOption>getHtmlElementById("option1").isSelected()); - assertFalse(page.<HtmlOption>getHtmlElementById("option2").isSelected()); - assertEquals("Foobar", page.<HtmlTextArea>getHtmlElementById("textarea1").getText()); - assertEquals("foo", page.<HtmlTextInput>getHtmlElementById("textfield1").getValueAttribute()); - assertEquals("foo", page.<HtmlHiddenInput>getHtmlElementById("hidden1").getValueAttribute()); - assertEquals("foo", page.<HtmlPasswordInput>getHtmlElementById("password1").getValueAttribute()); - assertEquals("", page.<HtmlIsIndex>getHtmlElementById("isindex1").getValue()); - } - - /** - * @throws Exception if the test fails - */ - @Test - public void testButtonTypeSubmit() throws Exception { - final String htmlContent - = "<html><head><title>foo</title></head><body>\n" + "<form id='form1' method='post' onSubmit='alert(\"bar\")' onReset='alert(\"reset\")'>\n" + " <button type='submit' name='button' id='button' value='foo'" + " >Push me</button>\n" @@ -212,7 +126,7 @@ * @throws Exception if the test fails */ @Test - public void testDefaultButtonType_StandardsCompliantBrowser() throws Exception { + public void defaultButtonType_StandardsCompliantBrowser() throws Exception { final String expectedType = getBrowserVersion().isFirefox() ? "submit" : "button"; final String firstContent = "<html><head><title>First</title></head><body>\n" Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlHiddenInputTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlHiddenInputTest.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlHiddenInputTest.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -22,6 +22,7 @@ import com.gargoylesoftware.htmlunit.BrowserRunner; import com.gargoylesoftware.htmlunit.WebDriverTestCase; +import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; /** * Tests for {@link HtmlHiddenInput}. @@ -51,4 +52,65 @@ assertEquals("", input.getText()); } + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "initial-initial", "initial-initial", "some text-some text", "some text-some text" }) + public void reset() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var hidden = document.getElementById('testId');\n" + + " alert(hidden.value + '-' + hidden.defaultValue);\n" + + + " document.getElementById('testReset').click;\n" + + " alert(hidden.value + '-' + hidden.defaultValue);\n" + + + " hidden.value = 'some text';\n" + + " alert(hidden.value + '-' + hidden.defaultValue);\n" + + + " document.getElementById('testReset').click;\n" + + " alert(hidden.value + '-' + hidden.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <input type='hidden' id='testId' value='initial'>\n" + + " <input type='reset' id='testReset'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "initial-initial", "default-default", "some text-some text", "newdefault-newdefault" }) + public void defaultValue() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var hidden = document.getElementById('testId');\n" + + " alert(hidden.value + '-' + hidden.defaultValue);\n" + + + " hidden.defaultValue = 'default';\n" + + " alert(hidden.value + '-' + hidden.defaultValue);\n" + + + " hidden.value = 'some text';\n" + + " alert(hidden.value + '-' + hidden.defaultValue);\n" + + " hidden.defaultValue = 'newdefault';\n" + + " alert(hidden.value + '-' + hidden.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <input type='hidden' id='testId' value='initial'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } } Added: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlImageInput2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlImageInput2Test.java (rev 0) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlImageInput2Test.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2002-2013 Gargoyle Software Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gargoylesoftware.htmlunit.html; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import com.gargoylesoftware.htmlunit.BrowserRunner; +import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; +import com.gargoylesoftware.htmlunit.WebDriverTestCase; + +/** + * Tests for {@link HtmlImageInput}. + * + * @version $Revision$ + * @author Ronald Brill + */ +@RunWith(BrowserRunner.class) +public class HtmlImageInput2Test extends WebDriverTestCase { + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "initial-initial", "initial-initial", "some text-some text", "some text-some text" }) + public void reset() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var image = document.getElementById('testId');\n" + + " alert(image.value + '-' + image.defaultValue);\n" + + + " document.getElementById('testReset').click;\n" + + " alert(image.value + '-' + image.defaultValue);\n" + + + " image.value = 'some text';\n" + + " alert(image.value + '-' + image.defaultValue);\n" + + + " document.getElementById('testReset').click;\n" + + " alert(image.value + '-' + image.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <input type='image' id='testId' value='initial'>\n" + + " <input type='reset' id='testReset'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "initial-initial", "default-default", "some text-some text", "newdefault-newdefault" }) + public void defaultValue() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var image = document.getElementById('testId');\n" + + " alert(image.value + '-' + image.defaultValue);\n" + + + " image.defaultValue = 'default';\n" + + " alert(image.value + '-' + image.defaultValue);\n" + + + " image.value = 'some text';\n" + + " alert(image.value + '-' + image.defaultValue);\n" + + " image.defaultValue = 'newdefault';\n" + + " alert(image.value + '-' + image.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <input type='image' id='testId' value='initial'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } +} Property changes on: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlImageInput2Test.java ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Author Date Id Revision \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPasswordInputTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPasswordInputTest.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPasswordInputTest.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -26,6 +26,7 @@ import com.gargoylesoftware.htmlunit.BrowserRunner; import com.gargoylesoftware.htmlunit.WebDriverTestCase; +import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; /** * Tests for {@link HtmlPasswordInput}. @@ -162,4 +163,66 @@ final String[] expectedAlerts2 = {"foo", "change", "boo", "blur", "boo", "blur"}; assertEquals(expectedAlerts2, getCollectedAlerts(driver)); } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "initial-initial", "initial-initial", "some text-initial", "some text-initial" }) + public void reset() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var password = document.getElementById('testId');\n" + + " alert(password.value + '-' + password.defaultValue);\n" + + + " document.getElementById('testReset').click;\n" + + " alert(password.value + '-' + password.defaultValue);\n" + + + " password.value = 'some text';\n" + + " alert(password.value + '-' + password.defaultValue);\n" + + + " document.getElementById('testReset').click;\n" + + " alert(password.value + '-' + password.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <input type='password' id='testId' value='initial'>\n" + + " <input type='reset' id='testReset'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "initial-initial", "default-default", "some text-default", "some text-newdefault" }) + public void defaultValue() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var password = document.getElementById('testId');\n" + + " alert(password.value + '-' + password.defaultValue);\n" + + + " password.defaultValue = 'default';\n" + + " alert(password.value + '-' + password.defaultValue);\n" + + + " password.value = 'some text';\n" + + " alert(password.value + '-' + password.defaultValue);\n" + + " password.defaultValue = 'newdefault';\n" + + " alert(password.value + '-' + password.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <input type='password' id='testId' value='initial'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } } Added: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlResetInput2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlResetInput2Test.java (rev 0) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlResetInput2Test.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2002-2013 Gargoyle Software Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gargoylesoftware.htmlunit.html; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import com.gargoylesoftware.htmlunit.BrowserRunner; +import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; +import com.gargoylesoftware.htmlunit.WebDriverTestCase; + +/** + * Tests for {@link HtmlResetInput}. + * + * @version $Revision$ + * @author Ronald Brill + */ +@RunWith(BrowserRunner.class) +public class HtmlResetInput2Test extends WebDriverTestCase { + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "initial-initial", "default-default", "some text-some text", "newdefault-newdefault" }) + public void defaultValue() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var reset = document.getElementById('testId');\n" + + " alert(reset.value + '-' + reset.defaultValue);\n" + + + " reset.defaultValue = 'default';\n" + + " alert(reset.value + '-' + reset.defaultValue);\n" + + + " reset.value = 'some text';\n" + + " alert(reset.value + '-' + reset.defaultValue);\n" + + " reset.defaultValue = 'newdefault';\n" + + " alert(reset.value + '-' + reset.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <input type='reset' id='testId' value='initial'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } +} Property changes on: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlResetInput2Test.java ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Author Date Id Revision \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlResetInputTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlResetInputTest.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlResetInputTest.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -41,7 +41,8 @@ @Test public void reset() throws Exception { final String htmlContent - = "<html><head><title>foo</title></head><body>\n" + = "<!DOCTYPE HTML>\n" + + "<html><head><title>foo</title></head><body>\n" + "<form id='form1'>\n" + "<input type='text' name='textfield1' id='textfield1' value='foo'/>\n" + "<input type='password' name='password1' id='password1' value='foo'/>\n" @@ -94,7 +95,11 @@ assertFalse(page.<HtmlOption>getHtmlElementById("option2").isSelected()); assertEquals("Foobar", page.<HtmlTextArea>getHtmlElementById("textarea1").getText()); assertEquals("foo", page.<HtmlTextInput>getHtmlElementById("textfield1").getValueAttribute()); - assertEquals("foo", page.<HtmlHiddenInput>getHtmlElementById("hidden1").getValueAttribute()); + + // this is strange but this is the way the browsers are working + // com.gargoylesoftware.htmlunit.html.HtmlHiddenInputTest.reset() + assertEquals("Flintstone", page.<HtmlHiddenInput>getHtmlElementById("hidden1").getValueAttribute()); + assertEquals("foo", page.<HtmlPasswordInput>getHtmlElementById("password1").getValueAttribute()); assertEquals("", page.<HtmlIsIndex>getHtmlElementById("isindex1").getValue()); } @@ -103,6 +108,30 @@ * @throws Exception if the test fails */ @Test + public void resetClick_onClick() throws Exception { + final String htmlContent + = "<!DOCTYPE HTML>\n" + + "<html><head><title>foo</title></head><body>\n" + + "<form id='form1' onSubmit='alert(\"bar\")' onReset='alert(\"reset\")'>\n" + + " <button type='reset' name='button' id='button' " + + "onClick='alert(\"foo\")'>Push me</button>\n" + + "</form></body></html>"; + final List<String> collectedAlerts = new ArrayList<String>(); + final HtmlPage page = loadPage(htmlContent, collectedAlerts); + final HtmlButton button = page.getHtmlElementById("button"); + + final HtmlPage secondPage = button.click(); + + final String[] expectedAlerts = {"foo", "reset"}; + assertEquals(expectedAlerts, collectedAlerts); + + assertSame(page, secondPage); + } + + /** + * @throws Exception if the test fails + */ + @Test public void outsideForm() throws Exception { final String html = "<html><head></head>\n" Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlSubmitInputTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlSubmitInputTest.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlSubmitInputTest.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -38,6 +38,7 @@ * @author <a href="mailto:mb...@Ga...">Mike Bowler</a> * @author Marc Guillemot * @author Ahmed Ashour + * @author Ronald Brill */ @RunWith(BrowserRunner.class) public class HtmlSubmitInputTest extends WebDriverTestCase { @@ -46,7 +47,7 @@ * @throws Exception if the test fails */ @Test - public void testSubmit() throws Exception { + public void submit() throws Exception { final String html = "<html><head><title>foo</title></head><body>\n" + "<form id='form1' method='post'>\n" @@ -71,7 +72,7 @@ */ @Test @Alerts({ "foo", "bar" }) - public void testClick_onClick() throws Exception { + public void click_onClick() throws Exception { final String html = "<html><head><title>foo</title></head><body>\n" + "<form id='form1' onSubmit='alert(\"bar\"); return false;'>\n" @@ -90,7 +91,7 @@ * @throws Exception if the test fails */ @Test - public void testClick_onClick_JavascriptReturnsTrue() throws Exception { + public void click_onClick_JavascriptReturnsTrue() throws Exception { final String html = "<html><head><title>First</title></head><body>\n" + "<form name='form1' method='get' action='foo.html'>\n" @@ -114,7 +115,7 @@ */ @Test @Alerts("1") - public void testOutsideForm() throws Exception { + public void outsideForm() throws Exception { final String html = "<html><head></head>\n" + "<body>\n" @@ -190,4 +191,66 @@ assertEquals("next page", wd.getTitle()); assertEquals(3, mockWebConnection.getRequestCount()); } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "initial-initial", "initial-initial", "some text-some text", "some text-some text" }) + public void reset() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var submit = document.getElementById('testId');\n" + + " alert(submit.value + '-' + submit.defaultValue);\n" + + + " document.getElementById('testReset').click;\n" + + " alert(submit.value + '-' + submit.defaultValue);\n" + + + " submit.value = 'some text';\n" + + " alert(submit.value + '-' + submit.defaultValue);\n" + + + " document.getElementById('testReset').click;\n" + + " alert(submit.value + '-' + submit.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <input type='submit' id='testId' value='initial'>\n" + + " <input type='reset' id='testReset'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "initial-initial", "default-default", "some text-some text", "newdefault-newdefault" }) + public void defaultValue() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var submit = document.getElementById('testId');\n" + + " alert(submit.value + '-' + submit.defaultValue);\n" + + + " submit.defaultValue = 'default';\n" + + " alert(submit.value + '-' + submit.defaultValue);\n" + + + " submit.value = 'some text';\n" + + " alert(submit.value + '-' + submit.defaultValue);\n" + + " submit.defaultValue = 'newdefault';\n" + + " alert(submit.value + '-' + submit.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <input type='submit' id='testId' value='initial'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextInput2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextInput2Test.java 2013-05-01 16:13:34 UTC (rev 8253) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextInput2Test.java 2013-05-02 17:05:55 UTC (rev 8254) @@ -29,11 +29,44 @@ */ @RunWith(BrowserRunner.class) public class HtmlTextInput2Test extends WebDriverTestCase { + /** * @throws Exception if the test fails */ @Test - @Alerts({ "initial-initial", "default-default" }) + @Alerts({ "initial-initial", "initial-initial", "some text-initial", "some text-initial" }) + public void reset() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var text = document.getElementById('testId');\n" + + " alert(text.value + '-' + text.defaultValue);\n" + + + " document.getElementById('testReset').click;\n" + + " alert(text.value + '-' + text.defaultValue);\n" + + + " text.value = 'some text';\n" + + " alert(text.value + '-' + text.defaultValue);\n" + + + " document.getElementById('testReset').click;\n" + + " alert(text.value + '-' + text.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <input type='text' id='testId' value='initial'>\n" + + " <input type='reset' id='testReset'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "initial-initial", "default-default", "some text-default", "some text-newdefault" }) public void defaultValue() throws Exception { final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + "<script>\n" @@ -43,6 +76,11 @@ + " text.defaultValue = 'default';\n" + " alert(text.value + '-' + text.defaultValue);\n" + + + " text.value = 'some text';\n" + + " alert(text.value + '-' + text.defaultValue);\n" + + " text.defaultValue = 'newdefault';\n" + + " alert(text.value + '-' + text.defaultValue);\n" + " }\n" + "</script>\n" + "</head><body onload='test()'>\n" |