Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1200)

Unified Diff: base/strings/string_number_conversions_unittest.cc

Issue 2296503003: Fix parsing of exponents in StringToDouble. (Closed)
Patch Set: better comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | base/third_party/dmg_fp/README.chromium » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/strings/string_number_conversions_unittest.cc
diff --git a/base/strings/string_number_conversions_unittest.cc b/base/strings/string_number_conversions_unittest.cc
index 640468c33d5c6274c26b57affb26c95c5a46487a..0576302a0798c98329531d27370a9bd15488ebdf 100644
--- a/base/strings/string_number_conversions_unittest.cc
+++ b/base/strings/string_number_conversions_unittest.cc
@@ -719,17 +719,49 @@ TEST(StringNumberConversionsTest, StringToDouble) {
double output;
bool success;
} cases[] = {
+ // Test different forms of zero.
{"0", 0.0, true},
+ {"+0", 0.0, true},
+ {"-0", 0.0, true},
+ {"0.0", 0.0, true},
+ {"000000000000000000000000000000.0", 0.0, true},
+ {"0.000000000000000000000000000", 0.0, true},
+
+ // Test the answer.
{"42", 42.0, true},
{"-42", -42.0, true},
+
+ // Test variances of an ordinary number.
{"123.45", 123.45, true},
{"-123.45", -123.45, true},
{"+123.45", 123.45, true},
+
+ // Test different forms of representation.
{"2.99792458e8", 299792458.0, true},
{"149597870.691E+3", 149597870691.0, true},
{"6.", 6.0, true},
+
+ // Test around the largest/smallest value that a double can represent.
+ {"9e307", 9e307, true},
+ {"1.7976e308", 1.7976e308, true},
+ {"1.7977e308", HUGE_VAL, false},
+ {"9e308", HUGE_VAL, false},
+ {"9e309", HUGE_VAL, false},
+ {"9e999", HUGE_VAL, false},
+ {"9e1999", HUGE_VAL, false},
+ {"9e19999", HUGE_VAL, false},
{"9e99999999999999999999", HUGE_VAL, false},
+ {"-9e307", -9e307, true},
+ {"-1.7976e308", -1.7976e308, true},
+ {"-1.7977e308", -HUGE_VAL, false},
+ {"-9e308", -HUGE_VAL, false},
+ {"-9e309", -HUGE_VAL, false},
+ {"-9e999", -HUGE_VAL, false},
+ {"-9e1999", -HUGE_VAL, false},
+ {"-9e19999", -HUGE_VAL, false},
{"-9e99999999999999999999", -HUGE_VAL, false},
+
+ // Test more exponents.
{"1e-2", 0.01, true},
{"42 ", 42.0, false},
{" 1e-2", 0.01, false},
@@ -737,6 +769,8 @@ TEST(StringNumberConversionsTest, StringToDouble) {
{"-1E-7", -0.0000001, true},
{"01e02", 100, true},
{"2.3e15", 2.3e15, true},
+
+ // Test some invalid cases.
{"\t\n\v\f\r -123.45e2", -12345.0, false},
{"+123 e4", 123.0, false},
{"123e ", 123.0, false},
« no previous file with comments | « no previous file | base/third_party/dmg_fp/README.chromium » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698