+ // Test writing and reading a comment again but with a long comment.
+ TestGIFComment(wxString(wxT('a'), 256)
+ + wxString(wxT('b'), 256)
+ + wxString(wxT('c'), 256));
+
+
+ // Test writing comments in an animated GIF and reading them back.
+ CPPUNIT_ASSERT( image.LoadFile("horse.gif") );
+
+ wxImageArray images;
+ int i;
+ for (i = 0; i < 4; ++i)
+ {
+ if (i)
+ {
+ images.Add( images[i-1].Rotate90() );
+ images[i].SetPalette(images[0].GetPalette());
+ }
+ else
+ {
+ images.Add(image);
+ }
+
+ images[i].SetOption(wxIMAGE_OPTION_GIF_COMMENT,
+ wxString::Format("GIF comment for frame #%d", i+1));
+
+ }
+
+
+ wxMemoryOutputStream memOut;
+ CPPUNIT_ASSERT( wxGIFHandler().SaveAnimation(images, &memOut) );
+
+ wxGIFHandler handler;
+ wxMemoryInputStream memIn(memOut);
+ CPPUNIT_ASSERT(memIn.IsOk());
+ const int imageCount = handler.GetImageCount(memIn);
+ for (i = 0; i < imageCount; ++i)
+ {
+ wxFileOffset pos = memIn.TellI();
+ CPPUNIT_ASSERT( handler.LoadFile(&image, memIn, true /*verbose?*/, i) );
+
+ CPPUNIT_ASSERT_EQUAL(
+ wxString::Format("GIF comment for frame #%d", i+1),
+ image.GetOption(wxIMAGE_OPTION_GIF_COMMENT));
+ memIn.SeekI(pos);
+ }
+}
+
+void ImageTestCase::DibPadding()
+{