make info real in SkPixelRef, and add bitmap::asImageInfo

BUG=
R=scroggo@google.com

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

git-svn-id: http://skia.googlecode.com/svn/trunk@12586 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tests/PixelRefTest.cpp b/tests/PixelRefTest.cpp
index ce2575e..470221c 100644
--- a/tests/PixelRefTest.cpp
+++ b/tests/PixelRefTest.cpp
@@ -4,6 +4,40 @@
 #include "SkPixelRef.h"
 #include "SkMallocPixelRef.h"
 
+static void test_info(skiatest::Reporter* reporter) {
+    static const struct {
+        SkBitmap::Config    fConfig;
+        SkAlphaType         fAlphaType;
+        SkColorType         fExpectedColorType;
+        bool                fExpectedSuccess;
+    } gRec[] = {
+        { SkBitmap::kNo_Config,         kPremul_SkAlphaType,    kPMColor_SkColorType,   false },
+        { SkBitmap::kARGB_8888_Config,  kPremul_SkAlphaType,    kPMColor_SkColorType,   true },
+        { SkBitmap::kARGB_8888_Config,  kOpaque_SkAlphaType,    kPMColor_SkColorType,   true },
+        { SkBitmap::kRGB_565_Config,    kOpaque_SkAlphaType,    kRGB_565_SkColorType,   true },
+        { SkBitmap::kARGB_4444_Config,  kPremul_SkAlphaType,    kARGB_4444_SkColorType, true },
+        { SkBitmap::kARGB_4444_Config,  kOpaque_SkAlphaType,    kARGB_4444_SkColorType, true },
+        { SkBitmap::kA8_Config,         kPremul_SkAlphaType,    kAlpha_8_SkColorType,   true },
+        { SkBitmap::kA8_Config,         kOpaque_SkAlphaType,    kAlpha_8_SkColorType,   true },
+        { SkBitmap::kIndex8_Config,     kPremul_SkAlphaType,    kIndex_8_SkColorType,   true },
+        { SkBitmap::kIndex8_Config,     kOpaque_SkAlphaType,    kIndex_8_SkColorType,   true },
+    };
+
+    SkBitmap bitmap;
+    SkImageInfo info;
+
+    for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) {
+        bool success = bitmap.setConfig(gRec[i].fConfig, 10, 10, 0, gRec[i].fAlphaType);
+        REPORTER_ASSERT(reporter, success);
+        success = bitmap.asImageInfo(&info);
+        REPORTER_ASSERT(reporter, success == gRec[i].fExpectedSuccess);
+        if (gRec[i].fExpectedSuccess) {
+            REPORTER_ASSERT(reporter, info.fAlphaType == gRec[i].fAlphaType);
+            REPORTER_ASSERT(reporter, info.fColorType == gRec[i].fExpectedColorType);
+        }
+    }
+}
+
 namespace {
 
 class TestListener : public SkPixelRef::GenIDChangeListener {
@@ -46,4 +80,6 @@
     REPORTER_ASSERT(r, 0 != pixelRef.getGenerationID());
     pixelRef.addGenIDChangeListener(NULL);
     pixelRef.notifyPixelsChanged();
+
+    test_info(r);
 }