<!DOCTYPE html>
<html>
<head>
<title>DOMException constructor</title>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<link rel="stylesheet" href="../../../resources/testharness.css">
</head>
<body>
<script>
test(function() {
var ex = new DOMException();
assert_equals(ex.name, 'Error', 'Default name should be "Error"');
assert_equals(ex.message, '', 'Default message should be ""');
assert_equals(ex.code, 0, 'Default code should be 0');
}, 'new DOMException()');
test(function() {
var ex = new DOMException(null);
assert_equals(ex.name, 'Error', 'Default name should be "Error"');
assert_equals(ex.message, 'null', 'Passing null as message should be stringified to "null"');
assert_equals(ex.code, 0, 'Default code should be 0');
}, 'new DOMException(null)');
test(function() {
var ex = new DOMException(undefined);
assert_equals(ex.name, 'Error', 'Default name should be "Error"');
assert_equals(ex.message, '', 'Passing undefined as message should give default ""');
assert_equals(ex.code, 0, 'Default code should be 0');
}, 'new DOMException(undefined)');
test(function() {
var ex = new DOMException('example');
assert_equals(ex.name, 'Error', 'Default name should be "Error"');
assert_equals(ex.message, 'example', 'Passed string as message should be used');
assert_equals(ex.code, 0, 'Default code should be 0');
}, 'new DOMException(string)');
test(function() {
var ex = new DOMException('example', undefined);
assert_equals(ex.name, 'Error', 'Passing undefined as name should give default "Error"');
assert_equals(ex.message, 'example', 'Passed string as message should be used');
assert_equals(ex.code, 0, 'Default code should be 0');
}, 'new DOMException(string, undefined)');
test(function() {
var ex = new DOMException('example', null);
assert_equals(ex.name, 'null', 'Passing null as name should be stringified to "null"');
assert_equals(ex.message, 'example', 'Passed string as message should be used');
assert_equals(ex.code, 0, 'Default code should be 0');
}, 'new DOMException(string, null)');
test(function() {
var ex = new DOMException('example', 'bar');
assert_equals(ex.name, 'bar', 'Passed string as name should be used');
assert_equals(ex.message, 'example', 'Passed string as message should be used');
assert_equals(ex.code, 0, 'Default code should be 0');
}, 'new DOMException(string, string)');
[
{name: "IndexSizeError", code: 1},
{name: "HierarchyRequestError", code: 3},
{name: "WrongDocumentError", code: 4},
{name: "InvalidCharacterError", code: 5},
{name: "NoModificationAllowedError", code: 7},
{name: "NotFoundError", code: 8},
{name: "NotSupportedError", code: 9},
{name: "InUseAttributeError", code: 10},
{name: "InvalidStateError", code: 11},
{name: "SyntaxError", code: 12},
{name: "InvalidModificationError", code: 13},
{name: "NamespaceError", code: 14},
{name: "InvalidAccessError", code: 15},
{name: "SecurityError", code: 18},
{name: "NetworkError", code: 19},
{name: "AbortError", code: 20},
{name: "URLMismatchError", code: 21},
{name: "QuotaExceededError", code: 22},
{name: "TimeoutError", code: 23},
{name: "InvalidNodeTypeError", code: 24},
{name: "DataCloneError", code: 25}
].forEach(function(test_case) {
test(function() {
var ex = new DOMException('example', test_case.name);
assert_equals(ex.name, test_case.name, 'Passed string as name should be used');
assert_equals(ex.message, 'example', 'Passed string as message should be used');
assert_equals(ex.code, test_case.code, 'Legacy code should be used for matching name');
}, 'Legacy code matching: new DOMException(string, "' + test_case.name + '")');
});
</script>
</body>
</html>