<!DOCTYPE html>
<html>
<head>
<title>Check duplicate definition</title>
<meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
<meta name="assert" content="If there already exists a definition with the same TYPE, set ERROR to DuplicateDefinition and stop">
<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';
    doc.registerElement(name);
    assert_throws('NotSupportedError', function() {
        doc.registerElement(name);
    }, 'Exception should be thrown if definition with the same type already exists');
}, 'Check duplicate definition');


test(function() {
    var doc = newHTMLDocument();
    var name = 'x-b';
    doc.registerElement(name);
    HTML5_ELEMENTS.forEach(function(tagName) {
        assert_throws('NotSupportedError', function() {
            doc.registerElement(name, {
                extends: tagName
            });
        }, 'Exception should be thrown if definition with the same type already exists');
    });
}, 'Check duplicate definition. Specify constructor');


test(function() {
    var doc = newHTMLDocument();
    var name = 'x-c';
    doc.registerElement(name, {
        prototype: Object.create(HTMLAnchorElement.prototype),
        extends: 'a'
    });
    HTML5_ELEMENTS.forEach(function(tagName) {
        assert_throws('NotSupportedError', function() {
            doc.registerElement(name, {
                extends: tagName
            });
        }, 'Exception should be thrown if definition with the same type already exists');
    });
}, 'Check duplicate definition. Test different prototypes and extends');
</script>
</body>
</html>
