SkStringPrintf and SkString::printf now are no longer limted by a static buffer

GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1403803002

Committed: https://skia.googlesource.com/skia/+/606cadd5aac62299ef2e277709b3684cae2bf96c

Review URL: https://codereview.chromium.org/1403803002
diff --git a/tests/StringTest.cpp b/tests/StringTest.cpp
index 9e41c48..8ae7412 100644
--- a/tests/StringTest.cpp
+++ b/tests/StringTest.cpp
@@ -148,6 +148,13 @@
     a.appendU64(0x0000000001000000ULL, 15);
     REPORTER_ASSERT(reporter, a.equals("000000016777216"));
 
+    a.printf("%i", 0);
+    REPORTER_ASSERT(reporter, a.equals("0"));
+    a.printf("%g", 3.14);
+    REPORTER_ASSERT(reporter, a.equals("3.14"));
+    a.printf("hello %s", "skia");
+    REPORTER_ASSERT(reporter, a.equals("hello skia"));
+
     static const struct {
         SkScalar    fValue;
         const char* fString;
@@ -185,6 +192,26 @@
     REPORTER_ASSERT(reporter, buffer[19] == 0);
     REPORTER_ASSERT(reporter, buffer[20] == 'a');
 
+    REPORTER_ASSERT(reporter, SkStringPrintf("%i", 0).equals("0"));
+
+    // 2000 is larger than the static buffer size inside SkString.cpp
+    a = SkStringPrintf("%2000s", " ");
+    REPORTER_ASSERT(reporter, a.size() == 2000);
+    for (size_t i = 0; i < a.size(); ++i) {
+        if (a[i] != ' ') {
+            ERRORF(reporter, "SkStringPrintf fail: a[%d] = '%c'", i, a[i]);
+            break;
+        }
+    }
+    a.reset();
+    a.printf("%2000s", " ");
+    REPORTER_ASSERT(reporter, a.size() == 2000);
+    for (size_t i = 0; i < a.size(); ++i) {
+        if (a[i] != ' ') {
+            ERRORF(reporter, "SkStringPrintf fail: a[%d] = '%c'", i, a[i]);
+            break;
+        }
+    }
 }
 
 DEF_TEST(String_SkStrSplit, r) {