<!DOCTYPE html>
<html>
<head>
<title>Custom element type should be converted to lower case</title>
<meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
<meta name="assert" content="Custom element type should be lowercased">
<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 GeneratedConstructor = doc.registerElement('X-A');
    var customElement = new GeneratedConstructor();

    assert_equals(customElement.localName, 'x-a', 'Custom element type should be lowercased');
}, 'Custom element type should be lowercased. Test constructor');


test(function() {
    var doc = newHTMLDocument();
    HTML5_ELEMENTS.forEach(function(tagName) {
        var obj = doc.createElement(tagName);
        var name = 'x-a-' + tagName;
        var proto = Object.create(obj.constructor.prototype);
        var GeneratedConstructor = doc.registerElement(name, {
            prototype: proto,
            extends: tagName.toUpperCase()
        });
        var customElement = new GeneratedConstructor();

        assert_equals(customElement.localName, tagName, 'Local name should be lowercased');
    });
}, 'Custom element type should be lowercased. Test constructor of extended HTML element');
</script>
</body>
</html>
