@@ -299,7 +299,7 @@ TEST(ValueTest, StdStringConstructor)
299299 ASSERT_FALSE (v.isNegativeInfinity ());
300300 ASSERT_FALSE (v.isNaN ());
301301 ASSERT_FALSE (v.isNumber ());
302- ASSERT_FALSE (v.isValidNumber ());
302+ ASSERT_TRUE (v.isValidNumber ());
303303 ASSERT_TRUE (v.isInt ());
304304 ASSERT_FALSE (v.isBool ());
305305 ASSERT_TRUE (v.isString ());
@@ -1290,6 +1290,18 @@ TEST(ValueTest, ToDouble)
12901290 v = " -0.15" ;
12911291 ASSERT_EQ (v.toDouble (), -0.15 );
12921292
1293+ v = " +.15" ;
1294+ ASSERT_EQ (v.toDouble (), 0.15 );
1295+ v = " .15" ;
1296+ ASSERT_EQ (v.toDouble (), 0.15 );
1297+ v = " -.15" ;
1298+ ASSERT_EQ (v.toDouble (), -0.15 );
1299+
1300+ v = " 0+5" ;
1301+ ASSERT_EQ (v.toDouble (), 0 );
1302+ v = " 0-5" ;
1303+ ASSERT_EQ (v.toDouble (), 0 );
1304+
12931305 v = " 9432.4e-12" ;
12941306 ASSERT_EQ (v.toDouble (), 9.4324e-9 );
12951307 v = " -9432.4e-12" ;
@@ -1355,6 +1367,22 @@ TEST(ValueTest, ToDouble)
13551367 ASSERT_TRUE (v.isString ());
13561368 ASSERT_EQ (v.toDouble (), 0 );
13571369
1370+ v = " +0xa" ;
1371+ ASSERT_TRUE (v.isString ());
1372+ ASSERT_EQ (v.toDouble (), 0 );
1373+
1374+ v = " -0xa" ;
1375+ ASSERT_TRUE (v.isString ());
1376+ ASSERT_EQ (v.toDouble (), 0 );
1377+
1378+ v = " 0x+a" ;
1379+ ASSERT_TRUE (v.isString ());
1380+ ASSERT_EQ (v.toDouble (), 0 );
1381+
1382+ v = " 0x-a" ;
1383+ ASSERT_TRUE (v.isString ());
1384+ ASSERT_EQ (v.toDouble (), 0 );
1385+
13581386 // Octal
13591387 v = " 0o506" ;
13601388 ASSERT_TRUE (v.isString ());
@@ -1388,6 +1416,22 @@ TEST(ValueTest, ToDouble)
13881416 ASSERT_TRUE (v.isString ());
13891417 ASSERT_EQ (v.toDouble (), 0 );
13901418
1419+ v = " +0o2" ;
1420+ ASSERT_TRUE (v.isString ());
1421+ ASSERT_EQ (v.toDouble (), 0 );
1422+
1423+ v = " -0o2" ;
1424+ ASSERT_TRUE (v.isString ());
1425+ ASSERT_EQ (v.toDouble (), 0 );
1426+
1427+ v = " 0o+2" ;
1428+ ASSERT_TRUE (v.isString ());
1429+ ASSERT_EQ (v.toDouble (), 0 );
1430+
1431+ v = " 0o-2" ;
1432+ ASSERT_TRUE (v.isString ());
1433+ ASSERT_EQ (v.toDouble (), 0 );
1434+
13911435 // Binary
13921436 v = " 0b101101" ;
13931437 ASSERT_TRUE (v.isString ());
@@ -1421,6 +1465,22 @@ TEST(ValueTest, ToDouble)
14211465 ASSERT_TRUE (v.isString ());
14221466 ASSERT_EQ (v.toDouble (), 0 );
14231467
1468+ v = " +0b1" ;
1469+ ASSERT_TRUE (v.isString ());
1470+ ASSERT_EQ (v.toDouble (), 0 );
1471+
1472+ v = " -0b1" ;
1473+ ASSERT_TRUE (v.isString ());
1474+ ASSERT_EQ (v.toDouble (), 0 );
1475+
1476+ v = " 0b+1" ;
1477+ ASSERT_TRUE (v.isString ());
1478+ ASSERT_EQ (v.toDouble (), 0 );
1479+
1480+ v = " 0b-1" ;
1481+ ASSERT_TRUE (v.isString ());
1482+ ASSERT_EQ (v.toDouble (), 0 );
1483+
14241484 std::setlocale (LC_NUMERIC, oldLocale.c_str ());
14251485}
14261486
0 commit comments