Fix problem with images written in an incorrect format and added test to Magick++ to check this.
diff --git a/Magick++/tests/readWriteImages.cpp b/Magick++/tests/readWriteImages.cpp
index 7af711a..d59cd27 100644
--- a/Magick++/tests/readWriteImages.cpp
+++ b/Magick++/tests/readWriteImages.cpp
@@ -1,8 +1,10 @@
 // This may look like C code, but it is really -*- C++ -*-
 //
 // Copyright Bob Friesenhahn, 1999, 2000, 2003
+// Copyright Dirk Lemstra 2014
 //
-// Test STL readImages and writeImages functions
+// Test STL readImages and writeImages functions and test
+// image format when reading/writing.
 //
 
 #include <Magick++.h>
@@ -15,98 +17,150 @@
 
 using namespace Magick;
 
-int main( int /*argc*/, char ** argv)
+int main(int,char ** argv)
 {
+  int
+    failures=0;
+
+  string
+    srcdir("");
+
 
   // Initialize ImageMagick install location for Windows
   InitializeMagick(*argv);
 
-  int failures=0;
-
-  try {
-
-    string srcdir("");
-    if(getenv("SRCDIR") != 0)
-      srcdir = getenv("SRCDIR");
+  try
+  {
+    if (getenv("SRCDIR") != 0)
+      srcdir=getenv("SRCDIR");
 
     //
     // Test readImages and writeImages
     //
-      
     list<Image> first;
-    readImages( &first, srcdir + "test_image_anim.miff" );
-      
-    if ( first.size() != 6 )
+    readImages(&first,srcdir + "test_image_anim.miff");
+
+    if (first.size() != 6)
       {
-	++failures;
-	cout << "Line: " << __LINE__ 
-	     << "  Read images failed, number of frames is "
-	     << first.size()
-	     << " rather than 6 as expected." << endl;
+        ++failures;
+        cout << "Line: " << __LINE__
+          << "  Read images failed, number of frames is "
+          << first.size()
+          << " rather than 6 as expected." << endl;
       }
-      
-    writeImages( first.begin(), first.end(), "testmagick_anim_out.miff" );
-      
+
+    writeImages(first.begin(),first.end(),"testmagick_anim_out.miff");
+
     list<Image> second;
-    readImages( &second, "testmagick_anim_out.miff" );
-      
+    readImages(&second,"testmagick_anim_out.miff");
+
     list<Image>::iterator firstIter = first.begin();
     list<Image>::iterator secondIter = second.begin();
-    while( firstIter != first.end() && secondIter != second.end() )
+    while (firstIter != first.end() && secondIter != second.end())
+    {
+      if (firstIter->scene() != secondIter->scene())
+        {
+          ++failures;
+          cout << "Line: " << __LINE__
+            << "  Image scene: " << secondIter->scene()
+            << " is not equal to original "
+            << firstIter->scene()
+            << endl;
+        }
+
+      if (firstIter->rows() != secondIter->rows())
+        {
+          ++failures;
+          cout << "Line: " << __LINE__
+            << "  Image rows " << secondIter->rows()
+            << " are not equal to original "
+            << firstIter->rows()
+            << endl;
+        }
+
+      if (firstIter->columns() != secondIter->columns())
+        {
+          ++failures;
+          cout << "Line: " << __LINE__
+            << "  Image columns " << secondIter->columns()
+            << " are not equal to original "
+            << firstIter->rows()
+            << endl;
+        }
+
+      firstIter++;
+      secondIter++;
+    }
+
+    Image third(*first.begin());
+    third.write("testmagick_anim_out");
+
+    Image fourth;
+    fourth.read("testmagick_anim_out");
+
+    if (fourth.magick() != "MIFF")
       {
+        ++failures;
+        cout << "Line: " << __LINE__
+          << "  Image magick: " << fourth.magick()
+          << " is not equal to MIFF"
+          << endl;
+      }
 
-	if ( firstIter->scene() != secondIter->scene() )
-	  {
-	    ++failures;
-	    cout << "Line: " << __LINE__ 
-		 << "  Image scene: " << secondIter->scene()
-		 << " is not equal to original "
-		 << firstIter->scene()
-		 << endl;
-	  }
+    third.write("testmagick_anim_out.ico");
+    fourth.read("testmagick_anim_out.ico");
 
-	if ( firstIter->rows() != secondIter->rows() )
-	  {
-	    ++failures;
-	    cout << "Line: " << __LINE__ 
-		 << "  Image rows " << secondIter->rows()
-		 << " are not equal to original "
-		 << firstIter->rows()
-		 << endl;
-	  }
+    if (fourth.magick() != "ICO")
+      {
+        ++failures;
+        cout << "Line: " << __LINE__
+          << "  Image magick: " << fourth.magick()
+          << " is not equal to ICO"
+          << endl;
+      }
 
-	if ( firstIter->columns() != secondIter->columns() )
-	  {
-	    ++failures;
-	    cout << "Line: " << __LINE__ 
-		 << "  Image columns " << secondIter->columns()
-		 << " are not equal to original "
-		 << firstIter->rows()
-		 << endl;
-	  }
+    third.magick("BMP");
+    third.write("testmagick_anim_out.ico");
+    fourth.read("testmagick_anim_out.ico");
 
-	firstIter++;
-	secondIter++;
+    if (fourth.magick() != "BMP")
+      {
+        ++failures;
+        cout << "Line: " << __LINE__
+          << "  Image magick: " << fourth.magick()
+          << " is not equal to BMP"
+          << endl;
+      }
+
+    third.write("PDB:testmagick_anim_out.ico");
+    fourth.read("testmagick_anim_out.ico");
+
+    if (fourth.magick() != "PDB")
+      {
+        ++failures;
+        cout << "Line: " << __LINE__
+          << "  Image magick: " << fourth.magick()
+          << " is not equal to PDB"
+          << endl;
       }
   }
-
-  catch( Exception &error_ )
+  catch(Exception &error_)
     {
       cout << "Caught exception: " << error_.what() << endl;
       return 1;
     }
-  catch( exception &error_ )
+  catch(exception &error_)
     {
       cout << "Caught exception: " << error_.what() << endl;
       return 1;
     }
 
-  if ( failures )
+  if (failures)
     {
       cout << failures << " failures" << endl;
       return 1;
     }
-  
+
   return 0;
 }