// 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'); } }