|  | 
|  | 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