diff options
Diffstat (limited to 'js/src/tests/js1_5/Error')
-rw-r--r-- | js/src/tests/js1_5/Error/browser.js | 0 | ||||
-rw-r--r-- | js/src/tests/js1_5/Error/constructor-ordering.js | 17 | ||||
-rw-r--r-- | js/src/tests/js1_5/Error/regress-354246.js | 37 | ||||
-rw-r--r-- | js/src/tests/js1_5/Error/regress-412324.js | 17 | ||||
-rw-r--r-- | js/src/tests/js1_5/Error/regress-465377.js | 81 | ||||
-rw-r--r-- | js/src/tests/js1_5/Error/shell.js | 0 |
6 files changed, 152 insertions, 0 deletions
diff --git a/js/src/tests/js1_5/Error/browser.js b/js/src/tests/js1_5/Error/browser.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/js1_5/Error/browser.js diff --git a/js/src/tests/js1_5/Error/constructor-ordering.js b/js/src/tests/js1_5/Error/constructor-ordering.js new file mode 100644 index 000000000..dbcc2e604 --- /dev/null +++ b/js/src/tests/js1_5/Error/constructor-ordering.js @@ -0,0 +1,17 @@ +var order = 0; +function assertOrdering(ordering) { + assertEq(order, ordering); + order++; +} + +// Spec mandates that the prototype is looked up /before/ we toString the +// argument. +var handler = { get() { assertOrdering(0); return Error.prototype } }; +var errorProxy = new Proxy(Error, handler); + +var toStringable = { toString() { assertOrdering(1); return "Argument"; } }; + +new errorProxy(toStringable); + +if (typeof reportCompare === 'function') + reportCompare(0,0,"OK"); diff --git a/js/src/tests/js1_5/Error/regress-354246.js b/js/src/tests/js1_5/Error/regress-354246.js new file mode 100644 index 000000000..a2178c913 --- /dev/null +++ b/js/src/tests/js1_5/Error/regress-354246.js @@ -0,0 +1,37 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +//----------------------------------------------------------------------------- +var BUGNUMBER = 354246; +var summary = 'calling Error constructor with object with bad toString'; +var actual = ''; +var expect = ''; + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + +function test() +{ + enterFunc ('test'); + printBugNumber(BUGNUMBER); + printStatus (summary); + + expect = '13'; + + actual += '1'; + try + { + new Error({toString: function() { x.y } }); + } + catch(e) + { + } + actual += '3'; + reportCompare(expect, actual, summary); + + exitFunc ('test'); +} diff --git a/js/src/tests/js1_5/Error/regress-412324.js b/js/src/tests/js1_5/Error/regress-412324.js new file mode 100644 index 000000000..d9debaa89 --- /dev/null +++ b/js/src/tests/js1_5/Error/regress-412324.js @@ -0,0 +1,17 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +//----------------------------------------------------------------------------- +var BUGNUMBER = 412324; +var summary = 'Allow function Error(){} for the love of Pete'; +var actual = 'No Error'; +var expect = 'No Error'; + +printBugNumber(BUGNUMBER); +printStatus (summary); + +function Error() {} + +reportCompare(expect, actual, summary); diff --git a/js/src/tests/js1_5/Error/regress-465377.js b/js/src/tests/js1_5/Error/regress-465377.js new file mode 100644 index 000000000..4b8800621 --- /dev/null +++ b/js/src/tests/js1_5/Error/regress-465377.js @@ -0,0 +1,81 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +//----------------------------------------------------------------------------- +var BUGNUMBER = 465377; +var summary = 'instanceof relations between Error objects'; +var actual = ''; +var expect = ''; + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + +function test() +{ + enterFunc ('test'); + printBugNumber(BUGNUMBER); + printStatus (summary); + + expect = actual = 'No Exception'; + + try + { + var list = [ + "Error", + "InternalError", + "EvalError", + "RangeError", + "ReferenceError", + "SyntaxError", + "TypeError", + "URIError" + ]; + var instances = []; + + for (var i = 0; i != list.length; ++i) { + var name = list[i]; + var constructor = this[name]; + var tmp = constructor.name; + if (tmp !== name) + throw "Bad value for "+name+".name: "+uneval(tmp); + instances[i] = new constructor(); + } + + for (var i = 0; i != instances.length; ++i) { + var instance = instances[i]; + var name = instance.name; + var constructor = instance.constructor; + if (constructor !== this[name]) + throw "Bad value of (new "+name+").constructor: "+uneval(tmp); + var tmp = constructor.name; + if (tmp !== name) + throw "Bad value for constructor.name: "+uneval(tmp); + if (!(instance instanceof Object)) + throw "Bad instanceof Object for "+name; + if (!(instance instanceof Error)) + throw "Bad instanceof Error for "+name; + if (!(instance instanceof constructor)) + throw "Bad instanceof constructor for "+name; + if (instance instanceof Function) + throw "Bad instanceof Function for "+name; + for (var j = 1; j != instances.length; ++j) { + if (i != j && instance instanceof instances[j].constructor) { + throw "Unexpected (new "+name+") instanceof "+ instances[j].name; + } + } + } + + print("OK"); + } + catch(ex) + { + actual = ex + ''; + } + reportCompare(expect, actual, summary); + + exitFunc ('test'); +} diff --git a/js/src/tests/js1_5/Error/shell.js b/js/src/tests/js1_5/Error/shell.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/js1_5/Error/shell.js |