<!DOCTYPE html>
<html>
<head>
<title>If NAME is null then localName must be set to TYPE</title>
<meta name="author" title="Vasiliy Degtyarev" href="mailto:vasya@unipro.ru">
<meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
<meta name="assert" content="If NAME is null then localName must be set to TYPE">
<link rel="help" href="http://www.w3.org/TR/custom-elements/#registering-custom-elements">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../testcommon.js"></script>
<link rel="stylesheet" href="/resources/testharness.css">
</head>
<body>
<div id="log"></div>
<script>
test(function() {
    var doc = newHTMLDocument();
    var name = 'x-a';
    var proto = Object.create(HTMLElement.prototype);
    var GeneratedConstructor = doc.registerElement(name, {prototype: proto});
    var customElement = new GeneratedConstructor();

    assert_equals(customElement.localName, name, 'LocalName should be a type in case of ' +
        'attempt to register a custom element and local name is not provided');
}, 'If NAME is not specified then localName must be set to TYPE');


test(function() {
    var doc = newHTMLDocument();
    var name = 'x-b';
    var proto = Object.create(HTMLElement.prototype);
    var GeneratedConstructor = doc.registerElement(name, {prototype: proto, extends: null});
    var customElement = new GeneratedConstructor();

    assert_equals(customElement.localName, name, 'LocalName should be a type in case of ' +
        'attempt to register a custom element and name is null');
}, 'If NAME is null then localName must be set to TYPE');
</script>
</body>
</html>
