|
| 1 | +'use strict'; |
| 2 | + |
| 3 | +test(function() { |
| 4 | + var ex = new DOMException(); |
| 5 | + assert_equals(ex.name, "Error", |
| 6 | + "Not passing a name should end up with 'Error' as the name"); |
| 7 | + assert_equals(ex.message, "", |
| 8 | + "Not passing a message should end up with empty string as the message"); |
| 9 | +}, 'new DOMException()'); |
| 10 | + |
| 11 | +test(function() { |
| 12 | + var ex = new DOMException(); |
| 13 | + assert_false(ex.hasOwnProperty("name"), |
| 14 | + "The name property should be inherited"); |
| 15 | + assert_false(ex.hasOwnProperty("message"), |
| 16 | + "The message property should be inherited"); |
| 17 | +}, 'new DOMException(): inherited-ness'); |
| 18 | + |
| 19 | +test(function() { |
| 20 | + var ex = new DOMException(null); |
| 21 | + assert_equals(ex.name, "Error", |
| 22 | + "Not passing a name should end up with 'Error' as the name"); |
| 23 | + assert_equals(ex.message, "null", |
| 24 | + "Passing null as message should end up with stringified 'null' as the message"); |
| 25 | +}, 'new DOMException(null)'); |
| 26 | + |
| 27 | +test(function() { |
| 28 | + var ex = new DOMException(undefined); |
| 29 | + assert_equals(ex.name, "Error", |
| 30 | + "Not passing a name should end up with 'Error' as the name"); |
| 31 | + assert_equals(ex.message, "", |
| 32 | + "Not passing a message should end up with empty string as the message"); |
| 33 | +}, 'new DOMException(undefined)'); |
| 34 | + |
| 35 | +test(function() { |
| 36 | + var ex = new DOMException(undefined); |
| 37 | + assert_false(ex.hasOwnProperty("name"), |
| 38 | + "The name property should be inherited"); |
| 39 | + assert_false(ex.hasOwnProperty("message"), |
| 40 | + "The message property should be inherited"); |
| 41 | +}, 'new DOMException(undefined): inherited-ness'); |
| 42 | + |
| 43 | +test(function() { |
| 44 | + var ex = new DOMException("foo"); |
| 45 | + assert_equals(ex.name, "Error", |
| 46 | + "Not passing a name should still end up with 'Error' as the name"); |
| 47 | + assert_equals(ex.message, "foo", "Should be using passed-in message"); |
| 48 | +}, 'new DOMException("foo")'); |
| 49 | + |
| 50 | +test(function() { |
| 51 | + var ex = new DOMException("foo"); |
| 52 | + assert_false(ex.hasOwnProperty("name"), |
| 53 | + "The name property should be inherited"); |
| 54 | + assert_false(ex.hasOwnProperty("message"), |
| 55 | + "The message property should be inherited"); |
| 56 | +}, 'new DOMException("foo"): inherited-ness'); |
| 57 | + |
| 58 | +test(function() { |
| 59 | + var ex = new DOMException("bar", undefined); |
| 60 | + assert_equals(ex.name, "Error", |
| 61 | + "Passing undefined for name should end up with 'Error' as the name"); |
| 62 | + assert_equals(ex.message, "bar", "Should still be using passed-in message"); |
| 63 | +}, 'new DOMException("bar", undefined)'); |
| 64 | + |
| 65 | +test(function() { |
| 66 | + var ex = new DOMException("bar", "NotSupportedError"); |
| 67 | + assert_equals(ex.name, "NotSupportedError", "Should be using the passed-in name"); |
| 68 | + assert_equals(ex.message, "bar", "Should still be using passed-in message"); |
| 69 | + assert_equals(ex.code, DOMException.NOT_SUPPORTED_ERR, |
| 70 | + "Should have the right exception code"); |
| 71 | +}, 'new DOMException("bar", "NotSupportedError")'); |
| 72 | + |
| 73 | +test(function() { |
| 74 | + var ex = new DOMException("bar", "NotSupportedError"); |
| 75 | + assert_false(ex.hasOwnProperty("name"), |
| 76 | + "The name property should be inherited"); |
| 77 | + assert_false(ex.hasOwnProperty("message"), |
| 78 | + "The message property should be inherited"); |
| 79 | +}, 'new DOMException("bar", "NotSupportedError"): inherited-ness'); |
| 80 | + |
| 81 | +test(function() { |
| 82 | + var ex = new DOMException("bar", "foo"); |
| 83 | + assert_equals(ex.name, "foo", "Should be using the passed-in name"); |
| 84 | + assert_equals(ex.message, "bar", "Should still be using passed-in message"); |
| 85 | + assert_equals(ex.code, 0, |
| 86 | + "Should have 0 for code for a name not in the exception names table"); |
| 87 | +}, 'new DOMException("bar", "foo")'); |
| 88 | + |
| 89 | +[ |
| 90 | + {name: "IndexSizeError", code: 1}, |
| 91 | + {name: "HierarchyRequestError", code: 3}, |
| 92 | + {name: "WrongDocumentError", code: 4}, |
| 93 | + {name: "InvalidCharacterError", code: 5}, |
| 94 | + {name: "NoModificationAllowedError", code: 7}, |
| 95 | + {name: "NotFoundError", code: 8}, |
| 96 | + {name: "NotSupportedError", code: 9}, |
| 97 | + {name: "InUseAttributeError", code: 10}, |
| 98 | + {name: "InvalidStateError", code: 11}, |
| 99 | + {name: "SyntaxError", code: 12}, |
| 100 | + {name: "InvalidModificationError", code: 13}, |
| 101 | + {name: "NamespaceError", code: 14}, |
| 102 | + {name: "InvalidAccessError", code: 15}, |
| 103 | + {name: "TypeMismatchError", code: 17}, |
| 104 | + {name: "SecurityError", code: 18}, |
| 105 | + {name: "NetworkError", code: 19}, |
| 106 | + {name: "AbortError", code: 20}, |
| 107 | + {name: "URLMismatchError", code: 21}, |
| 108 | + {name: "QuotaExceededError", code: 22}, |
| 109 | + {name: "TimeoutError", code: 23}, |
| 110 | + {name: "InvalidNodeTypeError", code: 24}, |
| 111 | + {name: "DataCloneError", code: 25}, |
| 112 | + |
| 113 | + // These were removed from the error names table. |
| 114 | + // See https://github.com/heycam/webidl/pull/946. |
| 115 | + {name: "DOMStringSizeError", code: 0}, |
| 116 | + {name: "NoDataAllowedError", code: 0}, |
| 117 | + {name: "ValidationError", code: 0}, |
| 118 | + |
| 119 | + // The error names which don't have legacy code values. |
| 120 | + {name: "EncodingError", code: 0}, |
| 121 | + {name: "NotReadableError", code: 0}, |
| 122 | + {name: "UnknownError", code: 0}, |
| 123 | + {name: "ConstraintError", code: 0}, |
| 124 | + {name: "DataError", code: 0}, |
| 125 | + {name: "TransactionInactiveError", code: 0}, |
| 126 | + {name: "ReadOnlyError", code: 0}, |
| 127 | + {name: "VersionError", code: 0}, |
| 128 | + {name: "OperationError", code: 0}, |
| 129 | + {name: "NotAllowedError", code: 0} |
| 130 | +].forEach(function(test_case) { |
| 131 | + test(function() { |
| 132 | + var ex = new DOMException("msg", test_case.name); |
| 133 | + assert_equals(ex.name, test_case.name, |
| 134 | + "Should be using the passed-in name"); |
| 135 | + assert_equals(ex.message, "msg", |
| 136 | + "Should be using the passed-in message"); |
| 137 | + assert_equals(ex.code, test_case.code, |
| 138 | + "Should have matching legacy code from error names table"); |
| 139 | + },'new DOMexception("msg", "' + test_case.name + '")'); |
| 140 | +}); |
0 commit comments