mirror of https://github.com/lukechilds/node.git
Ryan Dahl
15 years ago
2 changed files with 2 additions and 169 deletions
@ -1,166 +0,0 @@ |
|||||
// Copyright 2008 the V8 project authors. All rights reserved.
|
|
||||
// Redistribution and use in source and binary forms, with or without
|
|
||||
// modification, are permitted provided that the following conditions are
|
|
||||
// met:
|
|
||||
//
|
|
||||
// * Redistributions of source code must retain the above copyright
|
|
||||
// notice, this list of conditions and the following disclaimer.
|
|
||||
// * 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.
|
|
||||
// * Neither the name of Google Inc. nor the names of its
|
|
||||
// contributors may be used to endorse or promote products derived
|
|
||||
// from this software without specific prior written permission.
|
|
||||
//
|
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
|
|
||||
// OWNER OR 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.
|
|
||||
//
|
|
||||
//
|
|
||||
|
|
||||
/*jslint |
|
||||
evil: true |
|
||||
*/ |
|
||||
|
|
||||
function MjsUnitAssertionError(message) { |
|
||||
this.message = message; |
|
||||
Error.captureStackTrace(this, fail); |
|
||||
} |
|
||||
|
|
||||
MjsUnitAssertionError.prototype.toString = function () { |
|
||||
return this.message; |
|
||||
}; |
|
||||
|
|
||||
/* |
|
||||
* This file is included in all mini jsunit test cases. The test |
|
||||
* framework expects lines that signal failed tests to start with |
|
||||
* the f-word and ignore all other lines. |
|
||||
*/ |
|
||||
|
|
||||
function fail (expected, found, name_opt) { |
|
||||
var start; |
|
||||
if (name_opt) { |
|
||||
// Fix this when we ditch the old test runner.
|
|
||||
start = "Fail" + "ure (" + name_opt + "): "; |
|
||||
} else { |
|
||||
start = "Fail" + "ure:"; |
|
||||
} |
|
||||
throw new MjsUnitAssertionError(start + " expected <" + expected + "> found <" + found + ">"); |
|
||||
}; |
|
||||
|
|
||||
|
|
||||
function deepEquals (a, b) { |
|
||||
if (a == b) { |
|
||||
return true; |
|
||||
} |
|
||||
if ((typeof a) !== 'object' || (typeof b) !== 'object' || |
|
||||
(a === null) || (b === null)) { |
|
||||
return false; |
|
||||
} |
|
||||
if (a.constructor === Array) { |
|
||||
if (b.constructor !== Array) { |
|
||||
return false; |
|
||||
} |
|
||||
if (a.length != b.length) { |
|
||||
return false; |
|
||||
} |
|
||||
for (var i = 0; i < a.length; i++) { |
|
||||
if (i in a) { |
|
||||
if (!(i in b) || !(deepEquals(a[i], b[i]))) { |
|
||||
return false; |
|
||||
} |
|
||||
} else if (i in b) { |
|
||||
return false; |
|
||||
} |
|
||||
} |
|
||||
return true; |
|
||||
} |
|
||||
return false; |
|
||||
}; |
|
||||
|
|
||||
|
|
||||
exports.assertEquals = function (expected, found, name_opt) { |
|
||||
if (!deepEquals(found, expected)) { |
|
||||
fail(expected, found, name_opt); |
|
||||
} |
|
||||
}; |
|
||||
|
|
||||
|
|
||||
exports.assertArrayEquals = function (expected, found, name_opt) { |
|
||||
var start = ""; |
|
||||
if (name_opt) { |
|
||||
start = name_opt + " - "; |
|
||||
} |
|
||||
exports.assertEquals(expected.length, found.length, start + "array length"); |
|
||||
if (expected.length == found.length) { |
|
||||
for (var i = 0; i < expected.length; ++i) { |
|
||||
exports.assertEquals(expected[i], found[i], start + "array element at index " + i); |
|
||||
} |
|
||||
} |
|
||||
}; |
|
||||
|
|
||||
|
|
||||
exports.assertTrue = function (value, name_opt) { |
|
||||
exports.assertEquals(true, value, name_opt); |
|
||||
}; |
|
||||
|
|
||||
|
|
||||
exports.assertFalse = function (value, name_opt) { |
|
||||
exports.assertEquals(false, value, name_opt); |
|
||||
}; |
|
||||
|
|
||||
|
|
||||
exports.assertNaN = function (value, name_opt) { |
|
||||
if (!isNaN(value)) { |
|
||||
fail("NaN", value, name_opt); |
|
||||
} |
|
||||
}; |
|
||||
|
|
||||
|
|
||||
exports.assertThrows = function (code) { |
|
||||
var threwException = true; |
|
||||
try { |
|
||||
eval(code); |
|
||||
threwException = false; |
|
||||
} catch (e) { |
|
||||
// Do nothing.
|
|
||||
} |
|
||||
if (!threwException) { |
|
||||
exports.assertTrue(false, "did not throw exception"); |
|
||||
} |
|
||||
}; |
|
||||
|
|
||||
|
|
||||
exports.assertInstanceof = function (obj, type) { |
|
||||
if (!(obj instanceof type)) { |
|
||||
exports.assertTrue(false, "Object <" + obj + "> is not an instance of <" + type + ">"); |
|
||||
} |
|
||||
}; |
|
||||
|
|
||||
|
|
||||
exports.assertDoesNotThrow = function (code) { |
|
||||
try { |
|
||||
eval(code); |
|
||||
} catch (e) { |
|
||||
exports.assertTrue(false, "threw an exception"); |
|
||||
} |
|
||||
}; |
|
||||
|
|
||||
|
|
||||
exports.assertUnreachable = function (name_opt) { |
|
||||
// Fix this when we ditch the old test runner.
|
|
||||
var message = "Fail" + "ure: unreachable"; |
|
||||
if (name_opt) { |
|
||||
message += " - " + name_opt; |
|
||||
} |
|
||||
throw new MjsUnitAssertionError(message); |
|
||||
}; |
|
Loading…
Reference in new issue