a0829725f373f3292268daf73cbf77264541f418
[WebKit-https.git] / LayoutTests / fast / dom / HTMLButtonElement / change-type.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <script src="../../js/resources/js-test-pre.js"></script>
6 </head>
7 <body onload="runTests()">
8 <script>
9
10 description("Tests for <a href=\"https://bugs.webkit.org/show_bug.cgi?id=14439\"> \
11 bug 14439</a>. Button type should be set using el.type.");
12
13 var didSubmit = false;
14 var btn;
15 var txt;
16
17 function testTypeValue()
18 {
19     btn = document.getElementById("b");
20
21     shouldBe("btn.type = 'submit'; btn.type", "'submit'");
22     shouldBe("btn.getAttribute('type')", "'submit'");
23     
24     shouldBe("btn.type = 'reset'; btn.type", "'reset'");
25     shouldBe("btn.getAttribute('type')", "'reset'");
26     
27     shouldBe("btn.type = 'button'; btn.type", "'button'");
28     shouldBe("btn.getAttribute('type')", "'button'");
29     
30     shouldBe("btn.type = 'reset'; btn.type", "'reset'");
31     shouldBe("btn.getAttribute('type')", "'reset'");
32     
33     shouldBe("btn.type = 'suBmiT'; btn.type", "'submit'");
34     shouldBe("btn.getAttribute('type')", "'suBmiT'");
35     
36     shouldBe("btn.type = ''; btn.type", "'submit'");
37     shouldBe("btn.getAttribute('type')", "''");
38     
39     shouldBe("btn.type = 'b'; btn.type", "'submit'");
40     shouldBe("btn.getAttribute('type')", "'b'");
41     
42     shouldBe("btn.type = 'RESET'; btn.type", "'reset'");
43     shouldBe("btn.getAttribute('type')", "'RESET'");
44     
45     shouldBe("btn.type = ''; btn.type", "'submit'");
46     shouldBe("btn.getAttribute('type')", "''");
47     
48     shouldBe("btn.type = '/'; btn.type", "'submit'");
49     shouldBe("btn.getAttribute('type')", "'/'");
50     
51     shouldBe("btn.type = ' '; btn.type", "'submit'");
52     shouldBe("btn.getAttribute('type')", "' '");
53     
54     shouldBe("btn.type = 'button '; btn.type", "'submit'");
55     shouldBe("btn.getAttribute('type')", "'button '");
56     
57     shouldBe("btn.type = ' b u t t o n '; btn.type", "'submit'");
58     shouldBe("btn.getAttribute('type')", "' b u t t o n '");
59     
60     shouldBe("btn.type = null; btn.type", "'submit'");
61     shouldBe("btn.getAttribute('type')", "null + ''");
62     
63     shouldBe("btn.type = undefined; btn.type", "'submit'");
64     shouldBe("btn.getAttribute('type')", "undefined + ''");
65 }
66
67 function testTypeBehavior()
68 {
69     btn = document.getElementById("b");
70     txt = document.getElementById("t");
71
72     btn.type = "submit";
73     txt.value = "hello";
74
75     shouldBe("btn.type = 'reset'; txt.value = 'hello'; btn.click(); txt.value", "''");
76     shouldBe("didSubmit", "false");
77     shouldBe("btn.type = 'button'; txt.value = 'hello'; btn.click(); txt.value", "'hello'");
78 }
79
80 function testSubmitBehavior()
81 {
82     shouldBe("btn.type = 'submit'; btn.click(); didSubmit", "true");
83     didSubmit = false;
84     txt.value = "";
85 }
86
87 function formWasSubmitted()
88 {
89     didSubmit = true;
90 }
91
92 function runTests()
93 {
94     testTypeValue();
95     testTypeBehavior();
96     testSubmitBehavior();
97     
98     wasPostTestScriptParsed = true;
99
100     if (window.jsTestIsAsync) {
101         if (window.layoutTestController)
102             layoutTestController.waitUntilDone();
103         if (window.wasFinishJSTestCalled)
104             finishJSTest();
105     } else
106         finishJSTest();
107     }
108 </script>
109 <form id="f" action="#submitted" onsubmit="formWasSubmitted();">
110   <input id="t" type="text" />
111   <button id="b"></button>
112 </form>
113 </body>
114 </html>