mirror of https://github.com/tc39/test262.git
70 lines
1.9 KiB
JavaScript
70 lines
1.9 KiB
JavaScript
/* -*- 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/. */
|
|
|
|
/*---
|
|
defines: [testLenientAndStrict, parsesSuccessfully, parseRaisesException, returns]
|
|
allow_unused: True
|
|
---*/
|
|
(function(global) {
|
|
|
|
/*
|
|
* Return true if both of these return true:
|
|
* - LENIENT_PRED applied to CODE
|
|
* - STRICT_PRED applied to CODE with a use strict directive added to the front
|
|
*
|
|
* Run STRICT_PRED first, for testing code that affects the global environment
|
|
* in loose mode, but fails in strict mode.
|
|
*/
|
|
global.testLenientAndStrict = function testLenientAndStrict(code, lenient_pred, strict_pred) {
|
|
return (strict_pred("'use strict'; " + code) &&
|
|
lenient_pred(code));
|
|
}
|
|
|
|
/*
|
|
* parsesSuccessfully(CODE) returns true if CODE parses as function
|
|
* code without an error.
|
|
*/
|
|
global.parsesSuccessfully = function parsesSuccessfully(code) {
|
|
try {
|
|
Function(code);
|
|
return true;
|
|
} catch (exception) {
|
|
return false;
|
|
}
|
|
};
|
|
|
|
/*
|
|
* parseRaisesException(EXCEPTION)(CODE) returns true if parsing CODE
|
|
* as function code raises EXCEPTION.
|
|
*/
|
|
global.parseRaisesException = function parseRaisesException(exception) {
|
|
return function (code) {
|
|
try {
|
|
Function(code);
|
|
return false;
|
|
} catch (actual) {
|
|
return exception.prototype.isPrototypeOf(actual);
|
|
}
|
|
};
|
|
};
|
|
|
|
/*
|
|
* returns(VALUE)(CODE) returns true if evaluating CODE (as eval code)
|
|
* completes normally (rather than throwing an exception), yielding a value
|
|
* strictly equal to VALUE.
|
|
*/
|
|
global.returns = function returns(value) {
|
|
return function(code) {
|
|
try {
|
|
return eval(code) === value;
|
|
} catch (exception) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
})(this);
|