| Index: test/webkit/resources/standalone-pre.js
|
| diff --git a/test/webkit/resources/standalone-pre.js b/test/webkit/resources/standalone-pre.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f1cbe9f10f85bfe4636268188fff157aa3b8ba3f
|
| --- /dev/null
|
| +++ b/test/webkit/resources/standalone-pre.js
|
| @@ -0,0 +1,191 @@
|
| +// Copyright 2013 the V8 project authors. All rights reserved.
|
| +// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
|
| +//
|
| +// Redistribution and use in source and binary forms, with or without
|
| +// modification, are permitted provided that the following conditions
|
| +// are met:
|
| +// 1. Redistributions of source code must retain the above copyright
|
| +// notice, this list of conditions and the following disclaimer.
|
| +// 2. Redistributions in binary form must reproduce the above copyright
|
| +// notice, this list of conditions and the following disclaimer in the
|
| +// documentation and/or other materials provided with the distribution.
|
| +//
|
| +// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
|
| +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
| +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
| +// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
|
| +// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
| +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
| +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
| +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
| +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| +
|
| +var wasPostTestScriptParsed = false;
|
| +var errorMessage;
|
| +
|
| +function description(msg)
|
| +{
|
| + print(msg);
|
| + print("\nOn success, you will see a series of \"PASS\" messages, followed by \"TEST COMPLETE\".\n");
|
| + print();
|
| +}
|
| +
|
| +function debug(msg)
|
| +{
|
| + print(msg);
|
| +}
|
| +
|
| +function escapeString(text)
|
| +{
|
| + return text.replace(/\0/g, "");
|
| +}
|
| +
|
| +function testPassed(msg)
|
| +{
|
| + print("PASS", escapeString(msg));
|
| +}
|
| +
|
| +function testFailed(msg)
|
| +{
|
| + errorMessage = msg;
|
| + print("FAIL", escapeString(msg));
|
| +}
|
| +
|
| +function areArraysEqual(_a, _b)
|
| +{
|
| + if (Object.prototype.toString.call(_a) != Object.prototype.toString.call([]))
|
| + return false;
|
| + if (_a.length !== _b.length)
|
| + return false;
|
| + for (var i = 0; i < _a.length; i++)
|
| + if (_a[i] !== _b[i])
|
| + return false;
|
| + return true;
|
| +}
|
| +
|
| +function isMinusZero(n)
|
| +{
|
| + // the only way to tell 0 from -0 in JS is the fact that 1/-0 is
|
| + // -Infinity instead of Infinity
|
| + return n === 0 && 1/n < 0;
|
| +}
|
| +
|
| +function isResultCorrect(_actual, _expected)
|
| +{
|
| + if (_expected === 0)
|
| + return _actual === _expected && (1/_actual) === (1/_expected);
|
| + if (_actual === _expected)
|
| + return true;
|
| + if (typeof(_expected) == "number" && isNaN(_expected))
|
| + return typeof(_actual) == "number" && isNaN(_actual);
|
| + if (Object.prototype.toString.call(_expected) == Object.prototype.toString.call([]))
|
| + return areArraysEqual(_actual, _expected);
|
| + return false;
|
| +}
|
| +
|
| +function stringify(v)
|
| +{
|
| + if (v === 0 && 1/v < 0)
|
| + return "-0";
|
| + else return "" + v;
|
| +}
|
| +
|
| +function shouldBe(_a, _b)
|
| +{
|
| + if (typeof _a != "string" || typeof _b != "string")
|
| + debug("WARN: shouldBe() expects string arguments");
|
| + var exception;
|
| + var _av;
|
| + try {
|
| + _av = eval(_a);
|
| + } catch (e) {
|
| + exception = e;
|
| + }
|
| + var _bv = eval(_b);
|
| +
|
| + if (exception)
|
| + testFailed(_a + " should be " + _bv + ". Threw exception " + exception);
|
| + else if (isResultCorrect(_av, _bv))
|
| + testPassed(_a + " is " + _b);
|
| + else if (typeof(_av) == typeof(_bv))
|
| + testFailed(_a + " should be " + _bv + ". Was " + stringify(_av) + ".");
|
| + else
|
| + testFailed(_a + " should be " + _bv + " (of type " + typeof _bv + "). Was " + _av + " (of type " + typeof _av + ").");
|
| +}
|
| +
|
| +function shouldBeTrue(_a) { shouldBe(_a, "true"); }
|
| +function shouldBeFalse(_a) { shouldBe(_a, "false"); }
|
| +function shouldBeNaN(_a) { shouldBe(_a, "NaN"); }
|
| +function shouldBeNull(_a) { shouldBe(_a, "null"); }
|
| +
|
| +function shouldBeEqualToString(a, b)
|
| +{
|
| + if (typeof a !== "string" || typeof b !== "string")
|
| + debug("WARN: shouldBeEqualToString() expects string arguments");
|
| + var unevaledString = JSON.stringify(b);
|
| + shouldBe(a, unevaledString);
|
| +}
|
| +
|
| +function shouldBeUndefined(_a)
|
| +{
|
| + var exception;
|
| + var _av;
|
| + try {
|
| + _av = eval(_a);
|
| + } catch (e) {
|
| + exception = e;
|
| + }
|
| +
|
| + if (exception)
|
| + testFailed(_a + " should be undefined. Threw exception " + exception);
|
| + else if (typeof _av == "undefined")
|
| + testPassed(_a + " is undefined.");
|
| + else
|
| + testFailed(_a + " should be undefined. Was " + _av);
|
| +}
|
| +
|
| +
|
| +function shouldThrow(_a, _e)
|
| +{
|
| + var exception;
|
| + var _av;
|
| + try {
|
| + _av = eval(_a);
|
| + } catch (e) {
|
| + exception = e;
|
| + }
|
| +
|
| + var _ev;
|
| + if (_e)
|
| + _ev = eval(_e);
|
| +
|
| + if (exception) {
|
| + if (typeof _e == "undefined" || exception == _ev)
|
| + testPassed(_a + " threw exception " + exception + ".");
|
| + else
|
| + testFailed(_a + " should throw " + (typeof _e == "undefined" ? "an exception" : _ev) + ". Threw exception " + exception + ".");
|
| + } else if (typeof _av == "undefined")
|
| + testFailed(_a + " should throw " + (typeof _e == "undefined" ? "an exception" : _ev) + ". Was undefined.");
|
| + else
|
| + testFailed(_a + " should throw " + (typeof _e == "undefined" ? "an exception" : _ev) + ". Was " + _av + ".");
|
| +}
|
| +
|
| +function isSuccessfullyParsed()
|
| +{
|
| + // FIXME: Remove this and only report unexpected syntax errors.
|
| + if (!errorMessage)
|
| + successfullyParsed = true;
|
| + shouldBeTrue("successfullyParsed");
|
| + debug("\nTEST COMPLETE\n");
|
| +}
|
| +
|
| +// It's possible for an async test to call finishJSTest() before js-test-post.js
|
| +// has been parsed.
|
| +function finishJSTest()
|
| +{
|
| + wasFinishJSTestCalled = true;
|
| + if (!wasPostTestScriptParsed)
|
| + return;
|
| + isSuccessfullyParsed();
|
| +}
|
|
|