Test alphaPresent when decoder ignores alpha

Modify GainMapTest.IgnoreColorAndAlpha and GainMapTest.IgnoreAll to
check whether alphaPresent and other main image metadata are set when
the decoder ignores color and alpha.

Since this requires examining the decoder's fields after
avifDecoderParse() is called, the avifDecoderReadMemory() call in
GainMapTest.IgnoreColorAndAlpha is replaced with calls to the
equivalent avifDecoder functions (except avifImageCopy()).
diff --git a/tests/gtest/avifgainmaptest.cc b/tests/gtest/avifgainmaptest.cc
index 9f6cdd5..399f167 100644
--- a/tests/gtest/avifgainmaptest.cc
+++ b/tests/gtest/avifgainmaptest.cc
@@ -581,31 +581,50 @@
   ASSERT_EQ(result, AVIF_RESULT_OK)
       << avifResultToString(result) << ": " << encoder->diag.error;
 
-  ImagePtr decoded(avifImageCreateEmpty());
-  ASSERT_NE(decoded, nullptr);
   DecoderPtr decoder(avifDecoderCreate());
   ASSERT_NE(decoder, nullptr);
   // Decode just the gain map.
   decoder->imageContentToDecode = AVIF_IMAGE_CONTENT_GAIN_MAP;
-  result = avifDecoderReadMemory(decoder.get(), decoded.get(), encoded.data,
-                                 encoded.size);
+  result = avifDecoderSetIOMemory(decoder.get(), encoded.data, encoded.size);
+  ASSERT_EQ(result, AVIF_RESULT_OK)
+      << avifResultToString(result) << ": " << decoder->diag.error;
+  result = avifDecoderParse(decoder.get());
   ASSERT_EQ(result, AVIF_RESULT_OK)
       << avifResultToString(result) << ": " << decoder->diag.error;
 
   // Main image metadata is available.
   EXPECT_EQ(decoder->image->width, 12u);
   EXPECT_EQ(decoder->image->height, 34u);
+  EXPECT_EQ(decoder->image->depth, 10);
+  EXPECT_EQ(decoder->image->yuvFormat, AVIF_PIXEL_FORMAT_YUV420);
+  EXPECT_EQ(decoder->alphaPresent, AVIF_TRUE);
+
+  result = avifDecoderNextImage(decoder.get());
+  ASSERT_EQ(result, AVIF_RESULT_OK)
+      << avifResultToString(result) << ": " << decoder->diag.error;
+
+  // Main image metadata is available.
+  EXPECT_EQ(decoder->image->width, 12u);
+  EXPECT_EQ(decoder->image->height, 34u);
+  EXPECT_EQ(decoder->image->depth, 10);
+  EXPECT_EQ(decoder->image->yuvFormat, AVIF_PIXEL_FORMAT_YUV420);
+  EXPECT_EQ(decoder->alphaPresent, AVIF_TRUE);
   // But pixels are not.
+  EXPECT_EQ(decoder->image->yuvPlanes[0], nullptr);
+  EXPECT_EQ(decoder->image->yuvPlanes[1], nullptr);
+  EXPECT_EQ(decoder->image->yuvPlanes[2], nullptr);
   EXPECT_EQ(decoder->image->yuvRowBytes[0], 0u);
   EXPECT_EQ(decoder->image->yuvRowBytes[1], 0u);
   EXPECT_EQ(decoder->image->yuvRowBytes[2], 0u);
+  EXPECT_EQ(decoder->image->alphaPlane, nullptr);
   EXPECT_EQ(decoder->image->alphaRowBytes, 0u);
   // The gain map was decoded.
-  ASSERT_NE(decoded->gainMap, nullptr);
-  ASSERT_NE(decoded->gainMap->image, nullptr);
-  EXPECT_GT(testutil::GetPsnr(*image->gainMap->image, *decoded->gainMap->image),
+  ASSERT_NE(decoder->image->gainMap, nullptr);
+  ASSERT_NE(decoder->image->gainMap->image, nullptr);
+  EXPECT_GT(testutil::GetPsnr(*image->gainMap->image,
+                              *decoder->image->gainMap->image),
             40.0);
-  CheckGainMapMetadataMatches(*decoded->gainMap, *image->gainMap);
+  CheckGainMapMetadataMatches(*decoder->image->gainMap, *image->gainMap);
 }
 
 TEST(GainMapTest, IgnoreAll) {
@@ -630,6 +649,13 @@
             AVIF_RESULT_OK);
   ASSERT_EQ(avifDecoderParse(decoder.get()), AVIF_RESULT_OK);
 
+  // Main image metadata is available.
+  EXPECT_EQ(decoder->image->width, 12u);
+  EXPECT_EQ(decoder->image->height, 34u);
+  EXPECT_EQ(decoder->image->depth, 10);
+  EXPECT_EQ(decoder->image->yuvFormat, AVIF_PIXEL_FORMAT_YUV420);
+  EXPECT_EQ(decoder->alphaPresent, AVIF_TRUE);
+
   EXPECT_TRUE(decoder->image->gainMap != nullptr);
   CheckGainMapMetadataMatches(*decoder->image->gainMap, *image->gainMap);
   ASSERT_EQ(decoder->image->gainMap->image, nullptr);