Bug 1283522 - Reps: support -0 grip in number rep. r=linclark

MozReview-Commit-ID: BWvMlbNdckG

--HG--
extra : rebase_source : fe9efa84f88e82cb5c0383ef87f071cf34abd85b
This commit is contained in:
Steve Chung 2016-07-13 11:37:27 +08:00
parent ddbe07d2c6
commit 451e3bbbcb
2 changed files with 27 additions and 2 deletions

View File

@ -20,11 +20,15 @@ define(function (require, exports, module) {
displayName: "Number",
stringify: function (object) {
return (Object.is(object, -0) ? "-0" : String(object));
let isNegativeZero = Object.is(object, -0) ||
(object.type && object.type == "-0");
return (isNegativeZero ? "-0" : String(object));
},
render: function () {
let value = this.props.object;
return (
ObjectBox({className: "number"},
this.stringify(value)
@ -34,7 +38,8 @@ define(function (require, exports, module) {
});
function supportsObject(object, type) {
return type == "boolean" || type == "number";
return type == "boolean" || type == "number" ||
(type == "object" && object.type == "-0");
}
// Exports from this module

View File

@ -21,6 +21,7 @@ window.onload = Task.async(function* () {
try {
yield testInt();
yield testBoolean();
yield testNegativeZero();
yield testUnsafeInt();
} catch(e) {
ok(false, "Got an error: " + DevToolsUtils.safeErrorString(e));
@ -48,6 +49,17 @@ window.onload = Task.async(function* () {
is(renderedComponent.textContent, "false", "Number rep has expected text content for boolean false");
}
function testNegativeZero() {
const renderedRep = shallowRenderComponent(Rep, { object: getGripStub("testNegZeroGrip") });
is(renderedRep.type, Number.rep, `Rep correctly selects ${Number.rep.displayName} for negative zero value`);
let renderedComponent = renderComponent(Number.rep, { object: getGripStub("testNegZeroGrip") });
is(renderedComponent.textContent, "-0", "Number rep has expected text content for negative zero grip");
renderedComponent = renderComponent(Number.rep, { object: getGripStub("testNegZeroValue") });
is(renderedComponent.textContent, "-0", "Number rep has expected text content for negative zero value");
}
function testUnsafeInt() {
const renderedComponent = renderComponent(Number.rep, { object: getGripStub("testUnsafeInt") });
is(renderedComponent.textContent, "900719925474099100", "Number rep has expected text content for a long number");
@ -64,6 +76,14 @@ window.onload = Task.async(function* () {
case "testFalse":
return false;
case "testNegZeroValue":
return -0;
case "testNegZeroGrip":
return {
"type": "-0"
};
case "testUnsafeInt":
return 900719925474099122;
}