// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// @dart = 2.9

/// @assertion factory Element.xxx
/// Creates a new <xxx> element.
/// This is identical to calling new Element.tag('xxx').
/// @description Checks expected element types

import "dart:html";
import "../../../Utils/expect.dart";

main() {
  var x;

  x = new Element.a();
  Expect.equals('A', x.tagName);

  x = new Element.article();
  Expect.equals('ARTICLE', x.tagName);

  x = new Element.aside();
  Expect.equals('ASIDE', x.tagName);

  x = new Element.audio();
  Expect.equals('AUDIO', x.tagName);

  x = new Element.br();
  Expect.equals('BR', x.tagName);

  x = new Element.canvas();
  Expect.equals('CANVAS', x.tagName);

  x = new Element.div();
  Expect.equals('DIV', x.tagName);

  x = new Element.footer();
  Expect.equals('FOOTER', x.tagName);

  x = new Element.header();
  Expect.equals('HEADER', x.tagName);

  x = new Element.hr();
  Expect.equals('HR', x.tagName);

  x = new Element.iframe();
  Expect.equals('IFRAME', x.tagName);

  x = new Element.img();
  Expect.equals('IMG', x.tagName);

  x = new Element.li();
  Expect.equals('LI', x.tagName);

  x = new Element.nav();
  Expect.equals('NAV', x.tagName);

  x = new Element.ol();
  Expect.equals('OL', x.tagName);

  x = new Element.option();
  Expect.equals('OPTION', x.tagName);

  x = new Element.p();
  Expect.equals('P', x.tagName);

  x = new Element.pre();
  Expect.equals('PRE', x.tagName);

  x = new Element.section();
  Expect.equals('SECTION', x.tagName);

  x = new Element.select();
  Expect.equals('SELECT', x.tagName);

  x = new Element.span();
  Expect.equals('SPAN', x.tagName);

  x = new Element.svg();
  Expect.equals('SVG', x.tagName);

  x = new Element.table();
  Expect.equals('TABLE', x.tagName);

  x = new Element.td();
  Expect.equals('TD', x.tagName);

  x = new Element.textarea();
  Expect.equals('TEXTAREA', x.tagName);

  x = new Element.th();
  Expect.equals('TH', x.tagName);

  x = new Element.tr();
  Expect.equals('TR', x.tagName);

  x = new Element.ul();
  Expect.equals('UL', x.tagName);

  x = new Element.video();
  Expect.equals('VIDEO', x.tagName);
}
