| <p>This page tests whether primitive conversions during equality tests properly |
| throw exceptions. If the test passes, you'll see a series of PASS messages below. |
| </p> |
| <hr> |
| <pre id="console"></pre> |
| |
| <script> |
| function log(s) |
| { |
| document.getElementById("console").appendChild(document.createTextNode(s + "\n")); |
| } |
| |
| function shouldThrow(expression, exception, didCorrectlyThrow) |
| { |
| if (didCorrectlyThrow) |
| log("PASS: " + expression + " should throw a " + exception + ", and did."); |
| else |
| log("FAIL: " + expression + " should throw a " + exception + ", but didn't."); |
| } |
| |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| var o = { |
| valueOf: function() { |
| return { }; // should throw, because this is not a primitive value |
| }, |
| |
| toString: function() { |
| return { }; // should throw, because this is not a primitive value |
| } |
| }; |
| |
| shouldThrow("o == 'a'", "type error", (function() { try { o == 'a'; return false; } catch(e) { return e instanceof TypeError; } })()); |
| shouldThrow("o != 'a'", "type error", (function() { try { o != 'a'; return false; } catch(e) { return e instanceof TypeError; } })()); |
| shouldThrow("o == 0", "type error", (function() { try { o == 'a'; return false; } catch(e) { return e instanceof TypeError; } })()); |
| shouldThrow("o != 0", "type error", (function() { try { o != 'a'; return false; } catch(e) { return e instanceof TypeError; } })()); |
| </script> |