Adjust the assertEq replacement function in JS tests not run in the shell to use same-value semantics. No bug, driveby fix, r=samantha the wonder dog

This commit is contained in:
Jeff Walden 2009-09-22 14:35:14 -07:00
parent 553915decf
commit 2d21b7a6d5

View File

@ -274,18 +274,31 @@ function escapeString (str)
} }
/* /*
* assertEq(actual, expected) * assertEq(actual, expected [, message])
* Throw if the two arguments are not === * Throw if the two arguments are not the same. The sameness of two values
* see https://bugzilla.mozilla.org/show_bug.cgi?id=480199 * is determined as follows. If both values are zero, they are the same iff
* their signs are the same. Otherwise, if both values are NaN, they are the
* same. Otherwise, they are the same if they compare equal using ===.
* see https://bugzilla.mozilla.org/show_bug.cgi?id=480199 and
* https://bugzilla.mozilla.org/show_bug.cgi?id=515285
*/ */
if (typeof assertEq == 'undefined') if (typeof assertEq == 'undefined')
{ {
var assertEq = var assertEq =
function (actual, expected) function (actual, expected, message)
{ {
if (actual !== expected) function SameValue(v1, v2)
{ {
throw new TypeError('Assertion failed: got "' + actual + '", expected "' + expected); if (v1 === 0 && v2 === 0)
return 1 / v1 === 1 / v2;
if (v1 !== v1 && v2 !== v2)
return true;
return v1 === v2;
}
if (!SameValue(actual, expected))
{
throw new TypeError('Assertion failed: got "' + actual + '", expected "' + expected +
(message ? ": " + message : ""));
} }
}; };
} }