dataset-delete.html (2684B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Dataset - Delete</title> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 </head> 8 <body> 9 <h1>Dataset - Delete</h1> 10 <div id="log"></div> 11 <script> 12 function testDelete(attr, prop) 13 { 14 var d = document.createElement("div"); 15 d.setAttribute(attr, "value"); 16 delete d.dataset[prop]; 17 return d.hasAttribute(attr) === false && d.getAttribute(attr) != "value"; 18 } 19 20 function testDeleteNoAdd(prop) 21 { 22 var d = document.createElement("div"); 23 delete d.dataset[prop]; 24 return true; 25 } 26 27 test(function() { assert_true(testDelete('data-foo', 'foo')); }, 28 "Deleting element.dataset['foo'] should also remove an attribute with name 'data-foo' should it exist."); 29 test(function() { assert_true(testDelete('data-foo-bar', 'fooBar')); }, 30 "Deleting element.dataset['fooBar'] should also remove an attribute with name 'data-foo-bar' should it exist."); 31 test(function() { assert_true(testDelete('data--', '-')); }, 32 "Deleting element.dataset['-'] should also remove an attribute with name 'data--' should it exist."); 33 test(function() { assert_true(testDelete('data--foo', 'Foo')); }, 34 "Deleting element.dataset['Foo'] should also remove an attribute with name 'data--foo' should it exist."); 35 test(function() { 36 var d = document.createElement("div"); 37 d.setAttribute('data--foo', "value"); 38 assert_equals(d.dataset['-foo'], undefined); 39 assert_false('-foo' in d.dataset); 40 delete d.dataset['-foo']; 41 assert_true(d.hasAttribute('data--foo')); 42 assert_equals(d.getAttribute('data--foo'), "value"); 43 }, "Deleting element.dataset['-foo'] should not remove an attribute with name 'data--foo' should it exist."); 44 test(function() { assert_true(testDelete('data---foo', '-Foo')); }, 45 "Deleting element.dataset['-Foo'] should also remove an attribute with name 'data---foo' should it exist."); 46 test(function() { assert_true(testDelete('data-', '')); }, 47 "Deleting element.dataset[''] should also remove an attribute with name 'data-' should it exist."); 48 test(function() { assert_true(testDelete('data-\xE0', '\xE0')); }, 49 "Deleting element.dataset['\xE0'] should also remove an attribute with name 'data-\xE0' should it exist."); 50 test(function() { assert_true(testDeleteNoAdd('foo')); }, 51 "Deleting element.dataset['foo'] should not throw if even if the element does now have an attribute with the name data-foo."); 52 </script> 53 </body> 54 </html>