mirror of
				https://github.com/tc39/test262.git
				synced 2025-11-03 21:24:30 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Copyright 2009 the Sputnik authors.  All rights reserved.
 | 
						|
// This code is governed by the BSD license found in the LICENSE file.
 | 
						|
 | 
						|
function Test262Error(message) {
 | 
						|
  this.message = message;
 | 
						|
}
 | 
						|
 | 
						|
Test262Error.prototype.toString = function () {
 | 
						|
  return "Test262 Error: " + this.message;
 | 
						|
};
 | 
						|
 | 
						|
function testFailed(message) {
 | 
						|
  throw new Test262Error(message);
 | 
						|
}
 | 
						|
 | 
						|
function testPrint(message) {
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * It is not yet clear that runTestCase should pass the global object
 | 
						|
 * as the 'this' binding in the call to testcase.
 | 
						|
 */
 | 
						|
var runTestCase = (function(global) {
 | 
						|
  return function(testcase) {
 | 
						|
    if (!testcase.call(global)) {
 | 
						|
      testFailed('test function returned falsy');
 | 
						|
    }
 | 
						|
  };
 | 
						|
})(this);
 | 
						|
 | 
						|
function assertTruthy(value) {
 | 
						|
  if (!value) {
 | 
						|
    testFailed('test return falsy');
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * falsy means we expect no error.
 | 
						|
 * truthy means we expect some error.
 | 
						|
 * A non-empty string means we expect an error whose .name is that string.
 | 
						|
 */
 | 
						|
var expectedErrorName = false;
 | 
						|
 | 
						|
/**
 | 
						|
 * What was thrown, or the string 'Falsy' if something falsy was thrown.
 | 
						|
 * null if test completed normally.
 | 
						|
 */
 | 
						|
var actualError = null;
 | 
						|
 | 
						|
function testStarted(expectedErrName) {
 | 
						|
  expectedErrorName = expectedErrName;
 | 
						|
}
 | 
						|
 | 
						|
function testFinished() {
 | 
						|
  var actualErrorName = actualError && (actualError.name ||
 | 
						|
                                        'SomethingThrown');
 | 
						|
  if (actualErrorName) {
 | 
						|
    if (expectedErrorName) {
 | 
						|
      if (typeof expectedErrorName === 'string') {
 | 
						|
        if (expectedErrorName === actualErrorName) {
 | 
						|
          return;
 | 
						|
        }
 | 
						|
        testFailed('Threw ' + actualErrorName +
 | 
						|
                   ' instead of ' + expectedErrorName);
 | 
						|
      }
 | 
						|
      return;
 | 
						|
    }
 | 
						|
    throw actualError;
 | 
						|
  }
 | 
						|
  if (expectedErrorName) {
 | 
						|
    if (typeof expectedErrorName === 'string') {
 | 
						|
      testFailed('Completed instead of throwing ' +
 | 
						|
                 expectedErrorName);
 | 
						|
    }
 | 
						|
    testFailed('Completed instead of throwing');
 | 
						|
  }
 | 
						|
}
 |