merged Sys.Web.Services 2.0 support in my branch:
[mono.git] / mcs / class / System.Drawing / Test / System.Drawing.Imaging / TestImageCodecInfo.cs
index 8fb7e582bfdb3c46155c6a78382186f2a3da72a0..9bcf3d5e1c3a3616edb031bcab95716aa835f4d5 100644 (file)
@@ -2,14 +2,10 @@
 // ImageCodecInfo class testing unit
 //
 // Author:
-//
-//      Jordi Mas i Hernàndez (jordi@ximian.com)
+//      Jordi Mas i Hernàndez (jordi@ximian.com)
 //
 // (C) 2004 Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+
 using System;
 using System.Drawing;
 using System.Drawing.Imaging;
 using NUnit.Framework;
 using System.Collections;
+using System.Security.Permissions;
+using System.Text.RegularExpressions;
+
+namespace MonoTests.System.Drawing.Imaging {
 
-namespace MonoTests.System.Drawing
-{
+       [TestFixture]
+       [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
+       public class ImageCodecInfoTest {
 
-       [TestFixture]   
-       public class TestImageCodecInfo 
-       {
                Hashtable decoders;
                Hashtable encoders;
 
@@ -57,35 +56,52 @@ namespace MonoTests.System.Drawing
                [TestFixtureSetUp]
                public void FixtureGetReady()           
                {
+                       ImageCodecInfo [] arrEnc  = ImageCodecInfo.GetImageDecoders ();
+                       ImageCodecInfo [] arrDec = ImageCodecInfo.GetImageEncoders ();
                        decoders = new Hashtable ();
                        encoders = new Hashtable ();
 
-                       foreach (ImageCodecInfo decoder in ImageCodecInfo.GetImageDecoders())
+                       foreach (ImageCodecInfo decoder in arrDec)
                                decoders[decoder.Clsid] = decoder;
                
-                       foreach (ImageCodecInfo encoder in ImageCodecInfo.GetImageEncoders())
+                       foreach (ImageCodecInfo encoder in arrEnc)
                                encoders[encoder.Clsid] = encoder;
                }
 
                static void Check (ImageCodecInfo e, ImageCodecInfo d, Guid FormatID, string CodecName, string DllName,
                        string FilenameExtension, ImageCodecFlags Flags, string FormatDescription,
-                       string MimeType/*, byte [][] SignatureMasks*/)
+                       string MimeType, int Version)
                {
-                       Assert.AreEqual (FormatID, e.FormatID, "Encoder.FormatID");
-                       Assert.AreEqual (CodecName, e.CodecName, "Encoder.CodecName");
-                       Assert.AreEqual (DllName, e.DllName, "Encoder.DllName");
-                       Assert.AreEqual (FilenameExtension, e.FilenameExtension, "Encoder.FilenameExtension");
-                       Assert.AreEqual (Flags, e.Flags, "Encoder.Flags");
-                       Assert.AreEqual (FormatDescription, e.FormatDescription, "Encoder.FormatDescription");
-                       Assert.AreEqual (MimeType, e.MimeType, "Encoder.MimeType");
+                       Regex extRegex = new Regex (@"^(\*\.\w+(;(\*\.\w+))*;)?"+
+                               Regex.Escape (FilenameExtension)+@"(;\*\.\w+(;(\*\.\w+))*)?$",
+                               RegexOptions.IgnoreCase | RegexOptions.Singleline);
 
-                       Assert.AreEqual (FormatID, d.FormatID, "Decoder.FormatID");
-                       Assert.AreEqual (CodecName, d.CodecName, "Decoder.CodecName");
-                       Assert.AreEqual (DllName, d.DllName, "Decoder.DllName");
-                       Assert.AreEqual (FilenameExtension, d.FilenameExtension, "Decoder.FilenameExtension");
-                       Assert.AreEqual (Flags, d.Flags, "Decoder.Flags");
-                       Assert.AreEqual (FormatDescription, d.FormatDescription, "Decoder.FormatDescription");
-                       Assert.AreEqual (MimeType, d.MimeType, "Decoder.MimeType");
+                       if (e != null) {
+                               Assert.AreEqual (FormatID, e.FormatID, "Encoder.FormatID");
+                               Assert.IsTrue (e.CodecName.IndexOf (CodecName)>=0,
+                                       "Encoder.CodecName contains "+CodecName);
+                               Assert.AreEqual (DllName, e.DllName, "Encoder.DllName");
+                               Assert.IsTrue (extRegex.IsMatch (e.FilenameExtension),
+                                       "Encoder.FilenameExtension is a right list with "+FilenameExtension);
+                               Assert.AreEqual (Flags, e.Flags, "Encoder.Flags");
+                               Assert.IsTrue (e.FormatDescription.IndexOf (FormatDescription)>=0,
+                                       "Encoder.FormatDescription contains "+FormatDescription);
+                               Assert.IsTrue (e.MimeType.IndexOf (MimeType)>=0,
+                                       "Encoder.MimeType contains "+MimeType);
+                       }
+                       if (d != null) {
+                               Assert.AreEqual (FormatID, d.FormatID, "Decoder.FormatID");
+                               Assert.IsTrue (d.CodecName.IndexOf (CodecName)>=0,
+                                       "Decoder.CodecName contains "+CodecName);
+                               Assert.AreEqual (DllName, d.DllName, "Decoder.DllName");
+                               Assert.IsTrue (extRegex.IsMatch (d.FilenameExtension),
+                                       "Decoder.FilenameExtension is a right list with "+FilenameExtension);
+                               Assert.AreEqual (Flags, d.Flags, "Decoder.Flags");
+                               Assert.IsTrue (d.FormatDescription.IndexOf (FormatDescription)>=0,
+                                       "Decoder.FormatDescription contains "+FormatDescription);
+                               Assert.IsTrue (d.MimeType.IndexOf (MimeType)>=0,
+                                       "Decoder.MimeType contains "+MimeType);
+                       }
                        /*
                        if (SignatureMasks == null) {
                                Assert.AreEqual (null, e.SignatureMasks, "Encoder.SignatureMasks");
@@ -108,46 +124,68 @@ namespace MonoTests.System.Drawing
                                }
                        }
                        */
+                       
                }
 
                [Test]
+#if TARGET_JVM
+               [Category ("NotWorking")]
+#endif
                public void BMPCodec()
                {
                        Guid g = new Guid ("557cf400-1a04-11d3-9a73-0000f81ef32e");
                        Check (GetEncoder (g), GetDecoder (g), ImageFormat.Bmp.Guid,
-                               "Built-in BMP Codec", null, "*.BMP;*.DIB;*.RLE",
+                               "BMP", null, "*.BMP",
                                ImageCodecFlags.Builtin|ImageCodecFlags.Encoder|ImageCodecFlags.Decoder|ImageCodecFlags.SupportBitmap,
-                               "BMP", "image/bmp");
+                               "BMP", "image/bmp", 1);
                }
 
                [Test]
+#if TARGET_JVM
+               [Category ("NotWorking")]
+#endif
                public void GifCodec()
                {
                        Guid g = new Guid ("557cf402-1a04-11d3-9a73-0000f81ef32e");
                        Check (GetEncoder (g), GetDecoder (g), ImageFormat.Gif.Guid,
-                               "Built-in GIF Codec", null, "*.GIF",
+                               "GIF", null, "*.GIF",
                                ImageCodecFlags.Builtin|ImageCodecFlags.Encoder|ImageCodecFlags.Decoder|ImageCodecFlags.SupportBitmap,
-                               "GIF", "image/gif");
+                               "GIF", "image/gif", 1);
                }
                
                [Test]
+#if TARGET_JVM
+               [Category ("NotWorking")]
+#endif
                public void JpegCodec()
                {
                        Guid g = new Guid ("557cf401-1a04-11d3-9a73-0000f81ef32e");
                        Check (GetEncoder (g), GetDecoder (g), ImageFormat.Jpeg.Guid,
-                               "Built-in JPEG Codec", null, "*.JPG;*.JPEG;*.JPE;*.JFIF",
+                               "JPEG", null, "*.JPG",
                                ImageCodecFlags.Builtin|ImageCodecFlags.Encoder|ImageCodecFlags.Decoder|ImageCodecFlags.SupportBitmap,
-                               "JPEG", "image/jpeg");
+                               "JPEG", "image/jpeg", 1);
                }
 
                [Test]
+#if TARGET_JVM
+               [Category ("NotWorking")]
+#endif
                public void PngCodec()
                {
                        Guid g = new Guid ("557cf406-1a04-11d3-9a73-0000f81ef32e");
                        Check (GetEncoder (g), GetDecoder (g), ImageFormat.Png.Guid,
-                               "Built-in PNG Codec", null, "*.PNG",
+                               "PNG", null, "*.PNG",
                                ImageCodecFlags.Builtin|ImageCodecFlags.Encoder|ImageCodecFlags.Decoder|ImageCodecFlags.SupportBitmap,
-                               "PNG", "image/png");
+                               "PNG", "image/png", 1);
                }
+               [Test]
+               public void IconCodec() {
+                       Guid g = new Guid ("557cf407-1a04-11d3-9a73-0000f81ef32e");
+                       Check (null, GetDecoder (g), ImageFormat.Bmp.Guid,
+                               "ICO", null, "*.ICO",
+                               ImageCodecFlags.Builtin|ImageCodecFlags.Encoder|ImageCodecFlags.SupportBitmap,
+                               "ICO", "image/x-icon", 1);
+               }
+
        }
 }