Fix: Jasmine reports toEqual(0, Number.MIN_VALUE) to be true

This commit is contained in:
Nicolas DUBIEN
2019-10-31 00:27:20 +01:00
parent ef3f127d27
commit 97fe2e7c95
3 changed files with 10 additions and 2 deletions

View File

@@ -4321,7 +4321,7 @@ getJasmineRequireObj().matchersUtil = function(j$) {
case '[object Number]':
// `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
// other numeric values.
result = a != +a ? b != +b : (a === 0 ? 1 / a == 1 / b : a == +b);
result = a != +a ? b != +b : (a === 0 && b === 0 ? 1 / a == 1 / b : a == +b);
if (!result) {
diffBuilder.record(a, b);
}

View File

@@ -334,6 +334,14 @@ describe("toEqual", function() {
expect(compareEquals(actual, expected).message).toEqual(message);
});
it("reports mismatches between 0 and Number.MIN_VALUE", function() {
var actual = {x: 0},
expected = {x: Number.MIN_VALUE},
message = "Expected $.x = 0 to equal 5e-324.";
expect(compareEquals(actual, expected).message).toEqual(message);
});
it("reports mismatches between Errors", function() {
var actual = {x: new Error("the error you got")},
expected = {x: new Error("the error you want")},

View File

@@ -162,7 +162,7 @@ getJasmineRequireObj().matchersUtil = function(j$) {
case '[object Number]':
// `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
// other numeric values.
result = a != +a ? b != +b : (a === 0 ? 1 / a == 1 / b : a == +b);
result = a != +a ? b != +b : (a === 0 && b === 0 ? 1 / a == 1 / b : a == +b);
if (!result) {
diffBuilder.record(a, b);
}