| function assert(a, message) { |
| if (!a) |
| throw new Error(message); |
| } |
| |
| function assertThrowTypeError(a, b, message) { |
| try { |
| let n = a - b; |
| assert(false, message + ": Should throw TypeError, but executed without exception"); |
| } catch (e) { |
| assert(e instanceof TypeError, message + ": expected TypeError, got: " + e); |
| } |
| } |
| |
| let o = { |
| valueOf: function () { throw new Error("Oops"); } |
| }; |
| |
| assertThrowTypeError(Symbol("3"), o, "Symbol + Object should throw TypeError"); |
| |
| try { |
| let n = o - Symbol("3"); |
| assert(false, message + ": Should throw Error, but executed without exception"); |
| } catch (e) { |
| assert(e.message === "Oops","Expected Error('Oops'), got: " + e); |
| } |
| |