<!DOCTYPE html>
<html>
<head>
<title>noModule IDL attribute must reflect nomodule content attribute</title>
<link rel="author" title="Yusuke Suzuki" href="mailto:utatane.tea@gmail.com">
<link rel="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script id="classicWithoutNomodule"></script>
<script id="classicWithNomodule" nomodule></script>
<script id="moduleWithoutNomodule" type=module></script>
<script id="moduleWithNomodule" type=module nomodule></script>
<script>

test(() => {
    assert_false(document.getElementById('classicWithoutNomodule').noModule);
}, 'noModule IDL attribute on a parser created classic script element without nomodule content attribute');

test(() => {
    assert_true(document.getElementById('classicWithNomodule').noModule);
}, 'noModule IDL attribute on a parser created classic script element with nomodule content attribute');

test(() => {
    assert_false(document.getElementById('moduleWithoutNomodule').noModule);
}, 'noModule IDL attribute on a parser created module script element without nomodule content attribute');

test(() => {
    assert_true(document.getElementById('moduleWithNomodule').noModule);
}, 'noModule IDL attribute on a parser created module script element with nomodule content attribute');


test(() => {
    const script = document.createElement('script');
    assert_false(script.noModule);
}, 'noModule IDL attribute on a dynamically created script element without nomodule content attribute');

test(() => {
    const script = document.createElement('script');
    script.setAttribute('nomodule', 'nomodule');
    assert_true(script.noModule);
}, 'noModule IDL attribute on a dynamically created script element after nomodule content attribute is set to "nomodule"');

test(() => {
    const script = document.createElement('script');
    script.setAttribute('nomodule', '');
    assert_true(script.noModule);
}, 'noModule IDL attribute on a dynamically created script element after nomodule content attribute is set to ""');

test(() => {
    const script = document.createElement('script');
    script.setAttribute('nomodule', 'nomodule');
    assert_true(script.noModule);
    script.removeAttribute('nomodule');
    assert_false(script.noModule);
}, 'noModule IDL attribute on a dynamically created script element after nomodule content attribute had been removed');

test(() => {
    const script = document.createElement('script');
    assert_false(script.hasAttribute('nomodule'));
    script.noModule = true;
    assert_true(script.hasAttribute('nomodule'));
}, 'noModule IDL attribute must add nomodule content attribute on setting to true');

test(() => {
    const script = document.createElement('script');
    script.setAttribute('nomodule', 'nomodule');
    script.noModule = false;
    assert_false(script.hasAttribute('nomodule'));
}, 'noModule IDL attribute must remove nomodule content attribute on setting to false');

</script>
</body>
</html>
