Rubber-stamped by Brady Eidson.
[webbrowser.git] / LayoutTests / fast / forms / old-names.html
blobb17fb7da28a53f281edcf767a08f189b290968cd
1 <html>
2 <head>
3 <link rel="stylesheet" type="text/css" href="../js/resources/js-test-style.css">
4 <script src="../js/resources/js-test-pre.js"></script>
5 <script>
6 function runTest()
8 description("This tests accessing form elements by name. "
9 + "IE only lets you look up names under the first name the element had and "
10 + "does not respond to name changes. Firefox remembers every name item has been "
11 + "accessed with, but forgets items that have not been accessed. "
12 + "This test has been written to expect the Firefox behavior.");
14 form = document.getElementById('form');
15 a = document.getElementById('a');
16 b = document.getElementById('b');
18 shouldBe('form.length', '2');
19 shouldBe('form.original', 'a');
20 shouldBe('form.originalB', 'b');
21 shouldBe('form.second', 'undefined');
22 shouldBe('form.third', 'undefined');
23 shouldBe('form.elements.original', 'a');
24 shouldBe('form.elements.originalB', 'b');
25 shouldBe('form.elements.second', 'undefined');
26 shouldBe('form.elements.third', 'undefined');
28 debug('');
29 debug("change the form item a's name to thisWillBeRemembered");
30 debug('');
31 a.name="thisWillBeRemembered";
32 debug("get the variable value through form element");
33 shouldBe('form.thisWillBeRemembered', 'a');
34 debug('');
35 debug("now change the form item a's name to thisWillBeRememberedToo");
36 debug("access it in boolean context");
37 a.name="thisWillBeRememberedToo";
38 debug('');
39 if (form.thisWillBeRememberedToo)
40 debug('accessed form.thisWillBeRememberedToo');
41 debug('');
42 debug("now change the form item a's name to thisWillBeForgotten");
43 debug('');
44 a.name="thisWillBeForgotten";
45 debug("get the variable value through collection");
46 shouldBe('form.elements.thisWillBeForgotten', 'a');
47 debug('');
48 debug("now change the form item a's name to thisWillBeForgottenToo, but don't access it afterwards");
49 a.name="thisWillBeForgottenToo";
51 debug('');
52 debug("now change the form item a's name to second");
53 debug('');
54 a.name="second";
56 shouldBe('form.length', '2');
57 shouldBe('form.original', 'a');
58 shouldBe('form.originalB', 'b');
59 shouldBe('form.second', 'a');
60 shouldBe('form.third', 'undefined');
61 shouldBe('form.elements.original', 'undefined');
62 shouldBe('form.elements.originalB', 'b');
63 shouldBe('form.elements.second', 'a');
64 shouldBe('form.elements.third', 'undefined');
66 debug('');
67 debug("now change the form item a's name to third");
68 debug('');
70 a.name="third";
72 shouldBe('form.length', '2');
73 shouldBe('form.original', 'a');
74 shouldBe('form.originalB', 'b');
75 shouldBe('form.second', 'a');
76 shouldBe('form.third', 'a');
77 shouldBe('form.elements.original', 'undefined');
78 shouldBe('form.elements.originalB', 'b');
79 shouldBe('form.elements.second', 'undefined');
80 shouldBe('form.elements.third', 'a');
82 debug('');
83 debug("now change form item b's name to second");
84 debug('');
86 b.name="second";
88 shouldBe('form.length', '2');
89 shouldBe('form.original', 'a');
90 shouldBe('form.originalB', 'b');
91 shouldBe('form.second', 'b');
92 shouldBe('form.elements.original', 'undefined');
93 shouldBe('form.elements.originalB', 'undefined');
94 shouldBe('form.elements.second', 'b');
96 debug('');
97 debug("now change a form item b's name to third");
98 debug('');
100 form.originalB.name="third";
102 shouldBe('form.length', '2');
103 shouldBe('form.original', 'a');
104 shouldBe('form.originalB', 'b');
105 shouldBe('form.second', 'b');
106 shouldBe('form.third.length', '2');
107 shouldBe('form.third[0]', 'a');
108 shouldBe('form.third[1]', 'b');
109 shouldBe('form.elements.original', 'undefined');
110 shouldBe('form.elements.originalB', 'undefined');
111 shouldBe('form.elements.second', 'undefined');
112 shouldBe('form.elements.third.length', '2');
113 shouldBe('form.elements.third[0]', 'a');
114 shouldBe('form.elements.third[1]', 'b');
116 debug('');
117 debug("now change a form item b's name to fourth");
118 debug('');
120 form.originalB.name="fourth";
122 shouldBe('form.third', 'a');
123 shouldBe('form.third.length', 'undefined');
124 shouldBe('form.elements.third', 'a');
125 shouldBe('form.elements.third.length', 'undefined');
127 debug('');
128 debug("now remove element a");
129 debug('');
131 form.removeChild(a);
133 shouldBe('form.length', '1');
134 shouldBe('form.original', 'a');
135 shouldBe('form.originalB', 'b');
136 shouldBe('form.second', 'b');
137 shouldBe('form.third', 'a');
138 shouldBe('form.fourth', 'b');
139 shouldBe('form.elements.original', 'undefined');
140 shouldBe('form.elements.originalB', 'undefined');
141 shouldBe('form.elements.second', 'undefined');
142 shouldBe('form.elements.third', 'undefined');
143 shouldBe('form.elements.fourth', 'b');
145 debug('');
146 debug("check we still remember names we should");
147 debug('');
149 shouldBe('form.thisWillBeForgotten', 'undefined');
150 shouldBe('form.thisWillBeForgottenToo', 'undefined');
151 shouldBe('form.thisWillBeRemembered', 'a');
152 shouldBe('form.thisWillBeRememberedToo', 'a');
153 debug('');
154 successfullyParsed = true;
156 </script>
157 </head>
158 <body>
159 <form id='form'>
160 <input type='hidden' id='a' name='original'>
161 <input type='hidden' id='b' name='originalB'>
162 </form>
163 <p id="description"></p>
164 <div id="console"></div>
165 <script>runTest();</script>
166 <script src="../js/resources/js-test-post.js"></script>
167 </body>
168 </html>