Merge to XFA: Add format width and precision tests.

This CL adds tests for the numeric conversion done when calculating the format
percision and width fields.

TBR=tsepez@chromium.org

Review URL: https://codereview.chromium.org/1411973005 .

(cherry picked from commit c9e76c09b9e7901823ac52a3705da235bd2abe24)

Review URL: https://codereview.chromium.org/1421813008 .
diff --git a/core/src/fxcrt/fx_basic_bstring_unittest.cpp b/core/src/fxcrt/fx_basic_bstring_unittest.cpp
index 3779397..d8d880f 100644
--- a/core/src/fxcrt/fx_basic_bstring_unittest.cpp
+++ b/core/src/fxcrt/fx_basic_bstring_unittest.cpp
@@ -603,3 +603,79 @@
   EXPECT_TRUE(c_string2 != byte_string_c);
   EXPECT_TRUE(c_string3 != byte_string_c);
 }
+
+TEST(fxcrt, ByteStringFormatWidth) {
+  {
+    CFX_ByteString str;
+    str.Format("%5d", 1);
+    EXPECT_EQ("    1", str);
+  }
+
+  {
+    CFX_ByteString str;
+    str.Format("%d", 1);
+    EXPECT_EQ("1", str);
+  }
+
+  {
+    CFX_ByteString str;
+    str.Format("%*d", 5, 1);
+    EXPECT_EQ("    1", str);
+  }
+
+  {
+    CFX_ByteString str;
+    str.Format("%-1d", 1);
+    EXPECT_EQ("1", str);
+  }
+
+  {
+    CFX_ByteString str;
+    str.Format("%0d", 1);
+    EXPECT_EQ("1", str);
+  }
+
+  {
+    CFX_ByteString str;
+    str.Format("%1048576d", 1);
+    EXPECT_EQ("Bad width", str);
+  }
+}
+
+TEST(fxcrt, ByteStringFormatPrecision) {
+  {
+    CFX_ByteString str;
+    str.Format("%.2f", 1.12345);
+    EXPECT_EQ("1.12", str);
+  }
+
+  {
+    CFX_ByteString str;
+    str.Format("%.*f", 3, 1.12345);
+    EXPECT_EQ("1.123", str);
+  }
+
+  {
+    CFX_ByteString str;
+    str.Format("%f", 1.12345);
+    EXPECT_EQ("1.123450", str);
+  }
+
+  {
+    CFX_ByteString str;
+    str.Format("%-1f", 1.12345);
+    EXPECT_EQ("1.123450", str);
+  }
+
+  {
+    CFX_ByteString str;
+    str.Format("%0f", 1.12345);
+    EXPECT_EQ("1.123450", str);
+  }
+
+  {
+    CFX_ByteString str;
+    str.Format("%.1048576f", 1.2);
+    EXPECT_EQ("Bad precision", str);
+  }
+}
diff --git a/core/src/fxcrt/fx_basic_wstring_unittest.cpp b/core/src/fxcrt/fx_basic_wstring_unittest.cpp
index b75a6fb..5141cdd 100644
--- a/core/src/fxcrt/fx_basic_wstring_unittest.cpp
+++ b/core/src/fxcrt/fx_basic_wstring_unittest.cpp
@@ -440,3 +440,79 @@
   EXPECT_TRUE(c_string2 != wide_string_c);
   EXPECT_TRUE(c_string3 != wide_string_c);
 }
+
+TEST(fxcrt, WideStringFormatWidth) {
+  {
+    CFX_WideString str;
+    str.Format(L"%5d", 1);
+    EXPECT_EQ(L"    1", str);
+  }
+
+  {
+    CFX_WideString str;
+    str.Format(L"%d", 1);
+    EXPECT_EQ(L"1", str);
+  }
+
+  {
+    CFX_WideString str;
+    str.Format(L"%*d", 5, 1);
+    EXPECT_EQ(L"    1", str);
+  }
+
+  {
+    CFX_WideString str;
+    str.Format(L"%-1d", 1);
+    EXPECT_EQ(L"1", str);
+  }
+
+  {
+    CFX_WideString str;
+    str.Format(L"%0d", 1);
+    EXPECT_EQ(L"1", str);
+  }
+
+  {
+    CFX_WideString str;
+    str.Format(L"%1048576d", 1);
+    EXPECT_EQ(L"Bad width", str);
+  }
+}
+
+TEST(fxcrt, WideStringFormatPrecision) {
+  {
+    CFX_WideString str;
+    str.Format(L"%.2f", 1.12345);
+    EXPECT_EQ(L"1.12", str);
+  }
+
+  {
+    CFX_WideString str;
+    str.Format(L"%.*f", 3, 1.12345);
+    EXPECT_EQ(L"1.123", str);
+  }
+
+  {
+    CFX_WideString str;
+    str.Format(L"%f", 1.12345);
+    EXPECT_EQ(L"1.123450", str);
+  }
+
+  {
+    CFX_WideString str;
+    str.Format(L"%-1f", 1.12345);
+    EXPECT_EQ(L"1.123450", str);
+  }
+
+  {
+    CFX_WideString str;
+    str.Format(L"%0f", 1.12345);
+    EXPECT_EQ(L"1.123450", str);
+  }
+
+  {
+    CFX_WideString str;
+    str.Format(L"%.1048576f", 1.2);
+    EXPECT_EQ(L"Bad precision", str);
+  }
+}