| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <div id="console"></div> |
| <script> |
| description("This test examines the order of the elements attribute of a form element."); |
| |
| var container = document.createElement('div'); |
| document.body.appendChild(container); |
| container.innerHTML = '<input name=victim id=before1 form=owner />' + |
| '<input name=victim id=before2 form=owner />' + |
| '<form id=owner action= method=GET>' + |
| ' <input name=victim id=inner1 form=owner />' + |
| ' <input name=victim id=inner2 form=owner />' + |
| '</form>' + |
| '<input name=victim id=after1 form=owner />' + |
| '<input name=victim id=after2 form=owner />'; |
| |
| var owner = document.getElementById('owner'); |
| var before1 = document.getElementById('before1'); |
| var before2 = document.getElementById('before2'); |
| var inner1 = document.getElementById('inner1'); |
| var inner2 = document.getElementById('inner2'); |
| var after1 = document.getElementById('after1'); |
| var after2 = document.getElementById('after2'); |
| |
| debug('- Test for the case where some elements are outside of the form.'); |
| shouldBe('owner.elements.length', '6'); |
| shouldBe('owner.elements[0]', 'before1'); |
| shouldBe('owner.elements[1]', 'before2'); |
| shouldBe('owner.elements[2]', 'inner1'); |
| shouldBe('owner.elements[3]', 'inner2'); |
| shouldBe('owner.elements[4]', 'after1'); |
| shouldBe('owner.elements[5]', 'after2'); |
| |
| debug(''); |
| debug('- Test for changing the value of the form attribute of a element which is located before the form owner.'); |
| before2.attributes['form'].value = ''; |
| shouldBe('owner.elements.length', '5'); |
| shouldBe('owner.elements[0]', 'before1'); |
| shouldBe('owner.elements[1]', 'inner1'); |
| shouldBe('owner.elements[2]', 'inner2'); |
| shouldBe('owner.elements[3]', 'after1'); |
| shouldBe('owner.elements[4]', 'after2'); |
| before2.attributes['form'].value = 'owner'; |
| shouldBe('owner.elements.length', '6'); |
| shouldBe('owner.elements[0]', 'before1'); |
| shouldBe('owner.elements[1]', 'before2'); |
| shouldBe('owner.elements[2]', 'inner1'); |
| shouldBe('owner.elements[3]', 'inner2'); |
| shouldBe('owner.elements[4]', 'after1'); |
| shouldBe('owner.elements[5]', 'after2'); |
| |
| debug(''); |
| debug('- Test for changing the value of the form attribute of a element which is located inside of the form owner.'); |
| inner2.attributes['form'].value = ''; |
| shouldBe('owner.elements.length', '5'); |
| shouldBe('owner.elements[0]', 'before1'); |
| shouldBe('owner.elements[1]', 'before2'); |
| shouldBe('owner.elements[2]', 'inner1'); |
| shouldBe('owner.elements[3]', 'after1'); |
| shouldBe('owner.elements[4]', 'after2'); |
| inner2.attributes['form'].value = 'owner'; |
| shouldBe('owner.elements.length', '6'); |
| shouldBe('owner.elements[0]', 'before1'); |
| shouldBe('owner.elements[1]', 'before2'); |
| shouldBe('owner.elements[2]', 'inner1'); |
| shouldBe('owner.elements[3]', 'inner2'); |
| shouldBe('owner.elements[4]', 'after1'); |
| shouldBe('owner.elements[5]', 'after2'); |
| |
| debug(''); |
| debug('- Test for changing the value of the form attribute of a element which is located after the form owner.'); |
| after1.attributes['form'].value = ''; |
| shouldBe('owner.elements.length', '5'); |
| shouldBe('owner.elements[0]', 'before1'); |
| shouldBe('owner.elements[1]', 'before2'); |
| shouldBe('owner.elements[2]', 'inner1'); |
| shouldBe('owner.elements[3]', 'inner2'); |
| shouldBe('owner.elements[4]', 'after2'); |
| after1.attributes['form'].value = 'owner'; |
| shouldBe('owner.elements.length', '6'); |
| shouldBe('owner.elements[0]', 'before1'); |
| shouldBe('owner.elements[1]', 'before2'); |
| shouldBe('owner.elements[2]', 'inner1'); |
| shouldBe('owner.elements[3]', 'inner2'); |
| shouldBe('owner.elements[4]', 'after1'); |
| shouldBe('owner.elements[5]', 'after2'); |
| |
| debug(''); |
| debug('- Test for setting form attribute of elements in reverse order.'); |
| before1.attributes['form'].value = ''; |
| before2.attributes['form'].value = ''; |
| inner1.attributes['form'].value = ''; |
| inner2.attributes['form'].value = ''; |
| after1.attributes['form'].value = ''; |
| after2.attributes['form'].value = ''; |
| |
| after2.attributes['form'].value = 'owner'; |
| after1.attributes['form'].value = 'owner'; |
| inner2.attributes['form'].value = 'owner'; |
| inner1.attributes['form'].value = 'owner'; |
| before2.attributes['form'].value = 'owner'; |
| before1.attributes['form'].value = 'owner'; |
| |
| shouldBe('owner.elements.length', '6'); |
| shouldBe('owner.elements[0]', 'before1'); |
| shouldBe('owner.elements[1]', 'before2'); |
| shouldBe('owner.elements[2]', 'inner1'); |
| shouldBe('owner.elements[3]', 'inner2'); |
| shouldBe('owner.elements[4]', 'after1'); |
| shouldBe('owner.elements[5]', 'after2'); |
| |
| debug(''); |
| debug('- Test for setting form attribute of elements in random order.'); |
| before1.attributes['form'].value = ''; |
| before2.attributes['form'].value = ''; |
| inner1.attributes['form'].value = ''; |
| inner2.attributes['form'].value = ''; |
| after1.attributes['form'].value = ''; |
| after2.attributes['form'].value = ''; |
| |
| after1.attributes['form'].value = 'owner'; |
| before1.attributes['form'].value = 'owner'; |
| inner2.attributes['form'].value = 'owner'; |
| before2.attributes['form'].value = 'owner'; |
| after2.attributes['form'].value = 'owner'; |
| inner1.attributes['form'].value = 'owner'; |
| |
| shouldBe('owner.elements.length', '6'); |
| shouldBe('owner.elements[0]', 'before1'); |
| shouldBe('owner.elements[1]', 'before2'); |
| shouldBe('owner.elements[2]', 'inner1'); |
| shouldBe('owner.elements[3]', 'inner2'); |
| shouldBe('owner.elements[4]', 'after1'); |
| shouldBe('owner.elements[5]', 'after2'); |
| |
| debug(''); |
| debug('- Test for removing/adding elements'); |
| container.removeChild(before2); |
| owner.removeChild(inner2); |
| container.removeChild(after1); |
| shouldBe('owner.elements.length', '3'); |
| shouldBe('owner.elements[0]', 'before1'); |
| shouldBe('owner.elements[1]', 'inner1'); |
| shouldBe('owner.elements[2]', 'after2'); |
| container.insertBefore(before2, owner); |
| owner.appendChild(inner2); |
| container.insertBefore(after1, after2); |
| shouldBe('owner.elements.length', '6'); |
| shouldBe('owner.elements[0]', 'before1'); |
| shouldBe('owner.elements[1]', 'before2'); |
| shouldBe('owner.elements[2]', 'inner1'); |
| shouldBe('owner.elements[3]', 'inner2'); |
| shouldBe('owner.elements[4]', 'after1'); |
| shouldBe('owner.elements[5]', 'after2'); |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |