| Index: test/cctest/test-strtod.cc
|
| diff --git a/test/cctest/test-strtod.cc b/test/cctest/test-strtod.cc
|
| index 34c474ff16e51e2a4076fe15a1334df095e3a8b9..d71d126b48d064f76865526a2557147f0302958e 100644
|
| --- a/test/cctest/test-strtod.cc
|
| +++ b/test/cctest/test-strtod.cc
|
| @@ -259,10 +259,11 @@ TEST(Strtod) {
|
| CHECK_EQ(1234567890123456789052345e115,
|
| StrtodChar("1234567890123456789052345", 115));
|
|
|
| - // Boundary cases.
|
| + // Boundary cases. Boundaries themselves should round to even.
|
| + //
|
| // 0x1FFFFFFFFFFFF * 2^3 = 72057594037927928
|
| // next: 72057594037927936
|
| - // boundary: 72057594037927932
|
| + // boundary: 72057594037927932 should round up.
|
| CHECK_EQ(72057594037927928.0, StrtodChar("72057594037927928", 0));
|
| CHECK_EQ(72057594037927936.0, StrtodChar("72057594037927936", 0));
|
| CHECK_EQ(72057594037927936.0, StrtodChar("72057594037927932", 0));
|
| @@ -271,21 +272,21 @@ TEST(Strtod) {
|
|
|
| // 0x1FFFFFFFFFFFF * 2^10 = 9223372036854774784
|
| // next: 9223372036854775808
|
| - // boundary: 9223372036854775296
|
| + // boundary: 9223372036854775296 should round up.
|
| CHECK_EQ(9223372036854774784.0, StrtodChar("9223372036854774784", 0));
|
| CHECK_EQ(9223372036854775808.0, StrtodChar("9223372036854775808", 0));
|
| - CHECK_EQ(9223372036854775296.0, StrtodChar("9223372036854775296", 0));
|
| + CHECK_EQ(9223372036854775808.0, StrtodChar("9223372036854775296", 0));
|
| CHECK_EQ(9223372036854774784.0, StrtodChar("922337203685477529599999", -5));
|
| CHECK_EQ(9223372036854775808.0, StrtodChar("922337203685477529600001", -5));
|
|
|
| // 0x1FFFFFFFFFFFF * 2^50 = 10141204801825834086073718800384
|
| // next: 10141204801825835211973625643008
|
| - // boundary: 10141204801825834649023672221696
|
| + // boundary: 10141204801825834649023672221696 should round up.
|
| CHECK_EQ(10141204801825834086073718800384.0,
|
| StrtodChar("10141204801825834086073718800384", 0));
|
| CHECK_EQ(10141204801825835211973625643008.0,
|
| StrtodChar("10141204801825835211973625643008", 0));
|
| - CHECK_EQ(10141204801825834649023672221696.0,
|
| + CHECK_EQ(10141204801825835211973625643008.0,
|
| StrtodChar("10141204801825834649023672221696", 0));
|
| CHECK_EQ(10141204801825834086073718800384.0,
|
| StrtodChar("1014120480182583464902367222169599999", -5));
|
| @@ -295,11 +296,12 @@ TEST(Strtod) {
|
| // 0x1FFFFFFFFFFFF * 2^99 = 5708990770823838890407843763683279797179383808
|
| // next: 5708990770823839524233143877797980545530986496
|
| // boundary: 5708990770823839207320493820740630171355185152
|
| + // The boundary should round up.
|
| CHECK_EQ(5708990770823838890407843763683279797179383808.0,
|
| StrtodChar("5708990770823838890407843763683279797179383808", 0));
|
| CHECK_EQ(5708990770823839524233143877797980545530986496.0,
|
| StrtodChar("5708990770823839524233143877797980545530986496", 0));
|
| - CHECK_EQ(5708990770823839207320493820740630171355185152.0,
|
| + CHECK_EQ(5708990770823839524233143877797980545530986496.0,
|
| StrtodChar("5708990770823839207320493820740630171355185152", 0));
|
| CHECK_EQ(5708990770823838890407843763683279797179383808.0,
|
| StrtodChar("5708990770823839207320493820740630171355185151999", -3));
|
|
|