123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- // Copyright (C) 2017 Ecma International. All rights reserved.
- // This code is governed by the BSD license found in the LICENSE file.
- /*---
- description: |
- Collection of assertion functions used throughout test262
- defines: [assert]
- ---*/
- function assert(mustBeTrue, message) {
- if (mustBeTrue === true) {
- return;
- }
- if (message === undefined) {
- message = 'Expected true but got ' + assert._toString(mustBeTrue);
- }
- $ERROR(message);
- }
- assert._isSameValue = function (a, b) {
- if (a === b) {
- // Handle +/-0 vs. -/+0
- return a !== 0 || 1 / a === 1 / b;
- }
- // Handle NaN vs. NaN
- return a !== a && b !== b;
- };
- assert.sameValue = function (actual, expected, message) {
- try {
- if (assert._isSameValue(actual, expected)) {
- return;
- }
- } catch (error) {
- $ERROR(message + ' (_isSameValue operation threw) ' + error);
- return;
- }
- if (message === undefined) {
- message = '';
- } else {
- message += ' ';
- }
- message += 'Expected SameValue(«' + assert._toString(actual) + '», «' + assert._toString(expected) + '») to be true';
- $ERROR(message);
- };
- assert.notSameValue = function (actual, unexpected, message) {
- if (!assert._isSameValue(actual, unexpected)) {
- return;
- }
- if (message === undefined) {
- message = '';
- } else {
- message += ' ';
- }
- message += 'Expected SameValue(«' + assert._toString(actual) + '», «' + assert._toString(unexpected) + '») to be false';
- $ERROR(message);
- };
- assert.throws = function (expectedErrorConstructor, func, message) {
- if (typeof func !== "function") {
- $ERROR('assert.throws requires two arguments: the error constructor ' +
- 'and a function to run');
- return;
- }
- if (message === undefined) {
- message = '';
- } else {
- message += ' ';
- }
- try {
- func();
- } catch (thrown) {
- if (typeof thrown !== 'object' || thrown === null) {
- message += 'Thrown value was not an object!';
- $ERROR(message);
- } else if (thrown.constructor !== expectedErrorConstructor) {
- message += 'Expected a ' + expectedErrorConstructor.name + ' but got a ' + thrown.constructor.name;
- $ERROR(message);
- }
- return;
- }
- message += 'Expected a ' + expectedErrorConstructor.name + ' to be thrown but no exception was thrown at all';
- $ERROR(message);
- };
- assert._toString = function (value) {
- try {
- if (value === 0 && 1 / value === -Infinity) {
- return '-0';
- }
- return String(value);
- } catch (err) {
- if (err.name === 'TypeError') {
- return Object.prototype.toString.call(value);
- }
- throw err;
- }
- };
|