<!DOCTYPE html>
<html>
  <head>
    <title>Dataset - Set</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
  </head>
  <body>
    <h1>Dataset - Set</h1>
    <div id="log"></div>
    <script>
      function testSet(prop, expected)
      {
        var d = document.createElement("div");
        d.dataset[prop] = "value";
        return d.getAttribute(expected) == "value";
      }

      test(function() { assert_true(testSet('foo', 'data-foo')); },
        "Setting element.dataset['foo'] should also change the value of element.getAttribute('data-foo')'");
      test(function() { assert_true(testSet('fooBar', 'data-foo-bar')); },
        "Setting element.dataset['fooBar'] should also change the value of element.getAttribute('data-foo-bar')'");
      test(function() { assert_true(testSet('-', 'data--')); },
        "Setting element.dataset['-'] should also change the value of element.getAttribute('data--')'");
      test(function() { assert_true(testSet('Foo', 'data--foo')); },
        "Setting element.dataset['Foo'] should also change the value of element.getAttribute('data--foo')'");
      test(function() { assert_true(testSet('-Foo', 'data---foo')); },
        "Setting element.dataset['-Foo'] should also change the value of element.getAttribute('data---foo')'");
      test(function() { assert_true(testSet('', 'data-')); },
        "Setting element.dataset[''] should also change the value of element.getAttribute('data-')'");
      test(function() { assert_true(testSet('\xE0', 'data-\xE0')); },
        "Setting element.dataset['\xE0'] should also change the value of element.getAttribute('data-\xE0')'");
      test(function() { assert_throws('SYNTAX_ERR', function() { testSet('-foo', 'dummy') }); },
        "Setting element.dataset['-foo'] should throw a SYNTAX_ERR'");
      test(function() { assert_throws('INVALID_CHARACTER_ERR', function() { testSet('foo\x20', 'dummy') }); },
        "Setting element.dataset['foo\x20'] should throw an INVALID_CHARACTER_ERR'");
      test(function() { assert_throws('INVALID_CHARACTER_ERR', function() { testSet('foo\uF900', 'dummy') }); },
        "Setting element.dataset['foo\uF900'] should throw an INVALID_CHARACTER_ERR'");

    </script>
  </body>
</html>
