<!doctype html>
<html>
  <head>
    <meta charset=utf-8>
    <title>HTML time element API</title>
    <style>
#time { visibility: hidden; }
    </style>
    <link rel="help" href="https://html.spec.whatwg.org/multipage/#the-time-element">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
  </head>
  <body>
    <div id="log"></div>
    <!-- intentionally nested to test parsing rules -->
    <p id="time"><time pubdate datetime="2000-02-01T03:04:05Z">Dummy text <time>2001-06-07T<time>08:09<time></time></time>Z</time></time></p>
    <script type="text/javascript">
function makeTime(dateTime,contents,dateTimeProp) {
  var timeEl = document.createElement('time');
  if( dateTime ) {
    timeEl.setAttribute('datetime',dateTime);
  }
  if( contents ) {
    timeEl.innerHTML = contents;
  }
  if( dateTimeProp ) {
    timeEl.dateTime = dateTimeProp;
  }
  return timeEl;
}

var timep = document.getElementById('time');
var times = timep.getElementsByTagName('time');

//TIME elements
test(function () {
  assert_equals( times.length, 4 );
}, 'HTML parsing should locate 4 time elements in this document');
test(function () {
  assert_true( !!window.HTMLTimeElement );
}, 'HTMLTimeElement should be exposed for prototyping');
test(function () {
  assert_true( makeTime() instanceof window.HTMLTimeElement, 'createElement variant' );
  assert_true( times[0] instanceof window.HTMLTimeElement, 'HTML parsing variant' );
}, 'the time elements should be instanceof HTMLTimeElement');

//dateTime
test(function () {
  assert_equals( makeTime('2000-02-01T03:04:05Z','2001-02-01T03:04:05Z').dateTime, '2000-02-01T03:04:05Z' );
}, 'the datetime attribute should be reflected by the .dateTime property');
test(function () {
  assert_equals( typeof makeTime().dateTime, 'string', 'typeof test' );
  assert_equals( makeTime().dateTime, '', 'value test' );
}, 'the dateTime IDL property should default to an empty string');
test(function () {
  assert_equals( makeTime(false,false,'2000-02-01T03:04:05Z').dateTime, '2000-02-01T03:04:05Z' );
}, 'the dateTime property should be read/write');
test(function () {
  assert_equals( makeTime('go fish').dateTime, 'go fish' );
}, 'the datetime attribute should be reflected by the .dateTime property even if it is invalid');
test(function () {
  assert_equals( makeTime(false,'2000-02-01T03:04:05Z').dateTime, '' );
}, 'the datetime attribute should not reflect the textContent');

    </script>

  </body>
</html>
