diff options
Diffstat (limited to 'JavaScriptCore/tests/mozilla/ecma_2')
-rw-r--r-- | JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-003.js | 19 | ||||
-rw-r--r-- | JavaScriptCore/tests/mozilla/ecma_2/instanceof/regress-7635.js | 70 |
2 files changed, 48 insertions, 41 deletions
diff --git a/JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-003.js b/JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-003.js index 1b0a01b..c8f84ba 100644 --- a/JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-003.js +++ b/JavaScriptCore/tests/mozilla/ecma_2/instanceof/instanceof-003.js @@ -16,6 +16,19 @@ I think this should be 'false' Author: christine@netscape.com Date: 12 november 1997 + + +The test case described above is correct, however the second test case in this file is not, +'o instanceof o' should thow an exception. According to ECMA-262: + + 8.6.2 Internal Properties and Methods: + "... only Function objects implement [[HasInstance]]" + 11.8.6 The instanceof operator: + "6.If Result(4) does not have a [[HasInstance]] method, throw a TypeError exception." + +{} does not implement [[HasInstance]] (since it is not a function), so passing it as the +constructor to be tested to instanceof should result in a TypeError being thrown. + */ var SECTION = "instanceof-003"; var VERSION = "ECMA_2"; @@ -35,12 +48,10 @@ I think this should be 'false' theproto instanceof Foo ); - var o = {}; - AddTestCase( "o = {}; o instanceof o", - false, - o instanceof o ); + "EXCEPTION", + (function(){ try { var o = {}; o instanceof o; return "no exception"; } catch (e) { return "EXCEPTION"; } } )() ); test(); diff --git a/JavaScriptCore/tests/mozilla/ecma_2/instanceof/regress-7635.js b/JavaScriptCore/tests/mozilla/ecma_2/instanceof/regress-7635.js index 4ccb9d4..cab6ed9 100644 --- a/JavaScriptCore/tests/mozilla/ecma_2/instanceof/regress-7635.js +++ b/JavaScriptCore/tests/mozilla/ecma_2/instanceof/regress-7635.js @@ -26,49 +26,45 @@ * Author: */ - var SECTION = "instanceof"; // provide a document reference (ie, ECMA section) - var VERSION = "ECMA_2"; // Version of JavaScript or ECMA - var TITLE = "Regression test for Bugzilla #7635"; // Provide ECMA section title or a description - var BUGNUMBER = "http://bugzilla.mozilla.org/show_bug.cgi?id=7635"; // Provide URL to bugsplat or bugzilla report +var SECTION = "instanceof"; // provide a document reference (ie, ECMA section) +var VERSION = "ECMA_2"; // Version of JavaScript or ECMA +var TITLE = "Regression test for Bugzilla #7635"; // Provide ECMA section title or a description +var BUGNUMBER = "http://bugzilla.mozilla.org/show_bug.cgi?id=7635"; // Provide URL to bugsplat or bugzilla report - startTest(); // leave this alone +startTest(); // leave this alone - /* - * Calls to AddTestCase here. AddTestCase is a function that is defined - * in shell.js and takes three arguments: - * - a string representation of what is being tested - * - the expected result - * - the actual result - * - * For example, a test might look like this: - * - * var zip = /[\d]{5}$/; - * - * AddTestCase( - * "zip = /[\d]{5}$/; \"PO Box 12345 Boston, MA 02134\".match(zip)", // description of the test - * "02134", // expected result - * "PO Box 12345 Boston, MA 02134".match(zip) ); // actual result - * - */ - - function Foo() {} - theproto = {}; - Foo.prototype = theproto - theproto instanceof Foo +/* + * Calls to AddTestCase here. AddTestCase is a function that is defined + * in shell.js and takes three arguments: + * - a string representation of what is being tested + * - the expected result + * - the actual result + * + * For example, a test might look like this: + * + * var zip = /[\d]{5}$/; + * + * AddTestCase( + * "zip = /[\d]{5}$/; \"PO Box 12345 Boston, MA 02134\".match(zip)", // description of the test + * "02134", // expected result + * "PO Box 12345 Boston, MA 02134".match(zip) ); // actual result + * + */ +function Foo() {} +theproto = {}; +Foo.prototype = theproto +theproto instanceof Foo - AddTestCase( "function Foo() {}; theproto = {}; Foo.prototype = theproto; theproto instanceof Foo", - false, - theproto instanceof Foo ); - - var o = {}; - AddTestCase( "var o = {}; o instanceof o", false, o instanceof o ); +AddTestCase( "function Foo() {}; theproto = {}; Foo.prototype = theproto; theproto instanceof Foo", + false, + theproto instanceof Foo ); - var f = new Function(); +var f = new Function(); - AddTestCase( "var f = new Function(); f instanceof f", false, f instanceof f ); +AddTestCase( "var f = new Function(); f instanceof f", false, f instanceof f ); - test(); // leave this alone. this executes the test cases and - // displays results. +test(); // leave this alone. this executes the test cases and + // displays results. |