diff options
Diffstat (limited to 'js/src/jit-test/lib/asserts.js')
-rw-r--r-- | js/src/jit-test/lib/asserts.js | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/js/src/jit-test/lib/asserts.js b/js/src/jit-test/lib/asserts.js new file mode 100644 index 000000000..119d5bd0f --- /dev/null +++ b/js/src/jit-test/lib/asserts.js @@ -0,0 +1,99 @@ +/* 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/. */ + + +load(libdir + "../../tests/ecma_6/shell.js"); + +if (typeof assertWarning === 'undefined') { + var assertWarning = function assertWarning(f, errorClass, msg) { + var hadWerror = options().split(",").indexOf("werror") !== -1; + + // Ensure the "werror" option is disabled. + if (hadWerror) + options("werror"); + + try { + f(); + } catch (exc) { + if (hadWerror) + options("werror"); + + // print() rather than throw a different exception value, in case + // the caller wants exc.stack. + if (msg) + print("assertWarning: " + msg); + print("assertWarning: Unexpected exception calling " + f + + " with warnings-as-errors disabled"); + throw exc; + } + + // Enable the "werror" option. + options("werror"); + + try { + assertThrowsInstanceOf(f, errorClass, msg); + } catch (exc) { + if (msg) + print("assertWarning: " + msg); + throw exc; + } finally { + if (!hadWerror) + options("werror"); + } + }; +} + +if (typeof assertNoWarning === 'undefined') { + var assertNoWarning = function assertWarning(f, msg) { + // Ensure the "werror" option is enabled. + var hadWerror = options().split(",").indexOf("werror") !== -1; + if (!hadWerror) + options("werror"); + + try { + f(); + } catch (exc) { + if (msg) + print("assertNoWarning: " + msg); + print("assertNoWarning: Unexpected exception calling " + f + + "with warnings-as-errors enabled"); + throw exc; + } finally { + if (!hadWerror) + options("werror"); + } + }; +} + +if (typeof assertErrorMessage === 'undefined') { + var assertErrorMessage = function assertErrorMessage(f, ctor, test) { + try { + f(); + } catch (e) { + if (!(e instanceof ctor)) + throw new Error("Assertion failed: expected exception " + ctor.name + ", got " + e); + if (typeof test == "string") { + if (test != e.message) + throw new Error("Assertion failed: expected " + test + ", got " + e.message); + } else { + if (!test.test(e.message)) + throw new Error("Assertion failed: expected " + test.toString() + ", got " + e.message); + } + return; + } + throw new Error("Assertion failed: expected exception " + ctor.name + ", no exception thrown"); + }; +} + +if (typeof assertTypeErrorMessage === 'undefined') { + var assertTypeErrorMessage = function assertTypeErrorMessage(f, test) { + assertErrorMessage(f, TypeError, test); + }; +} + +if (typeof assertRangeErrorMessage === 'undefined') { + var assertRangeErrorMessage = function assertRangeErrorMessage(f, test) { + assertErrorMessage(f, RangeError, test); + }; +} |