X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.Drawing%2FTest%2FSystem.Drawing.Imaging%2FTestImageCodecInfo.cs;h=45397a4b7020b2c91a748b6d4db9a32b2ceda738;hb=4320e844e92386319c01095435e6ae0c67bfc09a;hp=39ef67ef733e641f1625be1e06cb427b7581f3b1;hpb=b585d00928892398dfbfc315ed78b8032fa14708;p=mono.git diff --git a/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestImageCodecInfo.cs b/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestImageCodecInfo.cs index 39ef67ef733..45397a4b702 100644 --- a/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestImageCodecInfo.cs +++ b/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestImageCodecInfo.cs @@ -1,15 +1,12 @@ // // ImageCodecInfo class testing unit // -// Author: -// -// Jordi Mas i Hernàndez (jordi@ximian.com) +// Authors: +// Jordi Mas i Hernàndez (jordi@ximian.com) +// Sebastien Pouliot // // (C) 2004 Ximian, Inc. http://www.ximian.com -// - -// -// Copyright (C) 2004 Novell, Inc (http://www.novell.com) +// Copyright (C) 2004-2007 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 @@ -30,6 +27,7 @@ // 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; @@ -38,13 +36,12 @@ using System.Collections; using System.Security.Permissions; using System.Text.RegularExpressions; -namespace MonoTests.System.Drawing -{ +namespace MonoTests.System.Drawing.Imaging { [TestFixture] [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)] - public class TestImageCodecInfo - { + public class ImageCodecInfoTest { + Hashtable decoders; Hashtable encoders; @@ -60,21 +57,19 @@ 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 arrDec) + foreach (ImageCodecInfo decoder in ImageCodecInfo.GetImageDecoders ()) decoders[decoder.Clsid] = decoder; - foreach (ImageCodecInfo encoder in arrEnc) + foreach (ImageCodecInfo encoder in ImageCodecInfo.GetImageEncoders ()) 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, int Version) + string MimeType, int Version, int signatureLength, string mask, string pattern, string pattern2) { Regex extRegex = new Regex (@"^(\*\.\w+(;(\*\.\w+))*;)?"+ Regex.Escape (FilenameExtension)+@"(;\*\.\w+(;(\*\.\w+))*)?$", @@ -92,6 +87,15 @@ namespace MonoTests.System.Drawing "Encoder.FormatDescription contains "+FormatDescription); Assert.IsTrue (e.MimeType.IndexOf (MimeType)>=0, "Encoder.MimeType contains "+MimeType); + + Assert.AreEqual (signatureLength, e.SignatureMasks.Length, "Encoder.SignatureMasks.Length"); + for (int i = 0; i < signatureLength; i++) { + Assert.AreEqual (mask, BitConverter.ToString (e.SignatureMasks[i]), String.Format ("Encoder.SignatureMasks[{0}]", i)); + } + Assert.AreEqual (signatureLength, e.SignaturePatterns.Length, "Encoder.SignaturePatterns.Length"); + Assert.AreEqual (pattern, BitConverter.ToString (e.SignaturePatterns[0]), "Encoder.SignaturePatterns[0]"); + if (pattern2 != null) + Assert.AreEqual (pattern2, BitConverter.ToString (e.SignaturePatterns[1]), "Encoder.SignaturePatterns[1]"); } if (d != null) { Assert.AreEqual (FormatID, d.FormatID, "Decoder.FormatID"); @@ -105,30 +109,59 @@ namespace MonoTests.System.Drawing "Decoder.FormatDescription contains "+FormatDescription); Assert.IsTrue (d.MimeType.IndexOf (MimeType)>=0, "Decoder.MimeType contains "+MimeType); + + Assert.AreEqual (signatureLength, d.SignatureMasks.Length, "Decoder.SignatureMasks.Length"); + for (int i = 0; i < signatureLength; i++) { + Assert.AreEqual (mask, BitConverter.ToString (d.SignatureMasks[i]), String.Format ("Decoder.SignatureMasks[{0}]", i)); + } + Assert.AreEqual (signatureLength, d.SignaturePatterns.Length, "Decoder.SignaturePatterns.Length"); + Assert.AreEqual (pattern, BitConverter.ToString (d.SignaturePatterns[0]), "Decoder.SignaturePatterns[0]"); + if (pattern2 != null) + Assert.AreEqual (pattern2, BitConverter.ToString (d.SignaturePatterns[1]), "Decoder.SignaturePatterns[1]"); } - /* - if (SignatureMasks == null) { - Assert.AreEqual (null, e.SignatureMasks, "Encoder.SignatureMasks"); - Assert.AreEqual (null, d.SignatureMasks, "Decoder.SignatureMasks"); + } + + [Test] + public void Decoders () + { + Assert.AreEqual (8, decoders.Count, "Count"); + foreach (DictionaryEntry de in decoders) { + string guid = de.Key.ToString (); + switch (guid) { + case "557cf402-1a04-11d3-9a73-0000f81ef32e": // GIF + case "557cf403-1a04-11d3-9a73-0000f81ef32e": // EMF + case "557cf400-1a04-11d3-9a73-0000f81ef32e": // BMP/DIB/RLE + case "557cf401-1a04-11d3-9a73-0000f81ef32e": // JPG,JPEG,JPE,JFIF + case "557cf406-1a04-11d3-9a73-0000f81ef32e": // PNG + case "557cf407-1a04-11d3-9a73-0000f81ef32e": // ICO + case "557cf404-1a04-11d3-9a73-0000f81ef32e": // WMF + case "557cf405-1a04-11d3-9a73-0000f81ef32e": // TIF,TIFF + break; + default: + Assert.Ignore ("Unknown decoder " + guid); + break; + } } - else { - Assert.AreEqual (SignatureMasks.Length, e.SignatureMasks.Length, "Encoder.SignatureMasks.Length"); - Assert.AreEqual (SignatureMasks.Length, d.SignatureMasks.Length, "Decoder.SignatureMasks.Length"); - for (int i = 0; i < SignatureMasks.Length; i++) { - Assert.AreEqual (SignatureMasks[i].Length, e.SignatureMasks[i].Length, - "Encoder.SignatureMasks["+i.ToString ()+"].Length"); - Assert.AreEqual (SignatureMasks[i].Length, d.SignatureMasks[i].Length, - "Decoder.SignatureMasks["+i.ToString ()+"].Length"); - for (int j = 0; j < SignatureMasks[i].Length; j++) { - Assert.AreEqual (SignatureMasks[i][j], e.SignatureMasks[i][j], - "Encoder.SignatureMasks["+i.ToString ()+"]["+j.ToString ()+"]"); - Assert.AreEqual (SignatureMasks[i][j], d.SignatureMasks[i][j], - "Decoder.SignatureMasks["+i.ToString ()+"]["+j.ToString ()+"]"); - } + } + + [Test] + public void Encoders () + { + Assert.AreEqual (5, encoders.Count, "Count"); + foreach (DictionaryEntry de in encoders) { + string guid = de.Key.ToString (); + switch (guid) { + case "557cf402-1a04-11d3-9a73-0000f81ef32e": // GIF + case "557cf400-1a04-11d3-9a73-0000f81ef32e": // BMP/DIB/RLE + case "557cf401-1a04-11d3-9a73-0000f81ef32e": // JPG,JPEG,JPE,JFIF + case "557cf406-1a04-11d3-9a73-0000f81ef32e": // PNG + case "557cf405-1a04-11d3-9a73-0000f81ef32e": // TIF,TIFF + break; + default: + Assert.Ignore ("Unknown encoder " + guid); + break; } } - */ - } [Test] @@ -137,8 +170,8 @@ namespace MonoTests.System.Drawing Guid g = new Guid ("557cf400-1a04-11d3-9a73-0000f81ef32e"); Check (GetEncoder (g), GetDecoder (g), ImageFormat.Bmp.Guid, "BMP", null, "*.BMP", - ImageCodecFlags.Builtin|ImageCodecFlags.Encoder|ImageCodecFlags.Decoder|ImageCodecFlags.SupportBitmap, - "BMP", "image/bmp", 1); + ImageCodecFlags.Builtin | ImageCodecFlags.Encoder | ImageCodecFlags.Decoder | ImageCodecFlags.SupportBitmap, + "BMP", "image/bmp", 1, 1, "FF-FF", "42-4D", null); } [Test] @@ -148,7 +181,7 @@ namespace MonoTests.System.Drawing Check (GetEncoder (g), GetDecoder (g), ImageFormat.Gif.Guid, "GIF", null, "*.GIF", ImageCodecFlags.Builtin|ImageCodecFlags.Encoder|ImageCodecFlags.Decoder|ImageCodecFlags.SupportBitmap, - "GIF", "image/gif", 1); + "GIF", "image/gif", 1, 2, "FF-FF-FF-FF-FF-FF", "47-49-46-38-39-61", "47-49-46-38-37-61"); } [Test] @@ -158,7 +191,7 @@ namespace MonoTests.System.Drawing Check (GetEncoder (g), GetDecoder (g), ImageFormat.Jpeg.Guid, "JPEG", null, "*.JPG", ImageCodecFlags.Builtin|ImageCodecFlags.Encoder|ImageCodecFlags.Decoder|ImageCodecFlags.SupportBitmap, - "JPEG", "image/jpeg", 1); + "JPEG", "image/jpeg", 1, 1, "FF-FF", "FF-D8", null); } [Test] @@ -168,16 +201,69 @@ namespace MonoTests.System.Drawing Check (GetEncoder (g), GetDecoder (g), ImageFormat.Png.Guid, "PNG", null, "*.PNG", ImageCodecFlags.Builtin|ImageCodecFlags.Encoder|ImageCodecFlags.Decoder|ImageCodecFlags.SupportBitmap, - "PNG", "image/png", 1); + "PNG", "image/png", 1, 1, "FF-FF-FF-FF-FF-FF-FF-FF", "89-50-4E-47-0D-0A-1A-0A", null); + } + + [Test] + public void TiffCodec () + { + Guid g = new Guid ("557cf405-1a04-11d3-9a73-0000f81ef32e"); + Check (GetEncoder (g), GetDecoder (g), ImageFormat.Tiff.Guid, + "TIFF", null, "*.TIF;*.TIFF", + ImageCodecFlags.Builtin | ImageCodecFlags.Encoder | ImageCodecFlags.Decoder | ImageCodecFlags.SupportBitmap, + "TIFF", "image/tiff", 1, 2, "FF-FF", "49-49", "4D-4D"); + } + + [Test] + public void IconCodec_Encoder () + { + Guid g = new Guid ("557cf407-1a04-11d3-9a73-0000f81ef32e"); + Assert.IsNull (GetEncoder (g), "Encoder"); } + [Test] - public void IconCodec() { + public void IconCodec_Decoder () + { Guid g = new Guid ("557cf407-1a04-11d3-9a73-0000f81ef32e"); - Check (null, GetDecoder (g), ImageFormat.Bmp.Guid, + Check (null, GetDecoder (g), ImageFormat.Icon.Guid, "ICO", null, "*.ICO", - ImageCodecFlags.Builtin|ImageCodecFlags.Encoder|ImageCodecFlags.SupportBitmap, - "ICO", "image/x-icon", 1); + ImageCodecFlags.Builtin | ImageCodecFlags.Decoder | ImageCodecFlags.SupportBitmap, + "ICO", "image/x-icon", 1, 1, "FF-FF-FF-FF", "00-00-01-00", null); + } + + [Test] + public void EmfCodec_Encoder () + { + Guid g = new Guid ("557cf403-1a04-11d3-9a73-0000f81ef32e"); + Assert.IsNull (GetEncoder (g), "Encoder"); } + [Test] + public void EmfCodec_Decoder () + { + Guid g = new Guid ("557cf403-1a04-11d3-9a73-0000f81ef32e"); + Check (null, GetDecoder (g), ImageFormat.Emf.Guid, + "EMF", null, "*.EMF", + ImageCodecFlags.Builtin | ImageCodecFlags.Decoder | ImageCodecFlags.SupportBitmap, + "EMF", "image/x-emf", 1, 1, "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-FF-FF-FF-FF", + "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-20-45-4D-46", null); + } + + [Test] + public void WmfCodec_Encoder () + { + Guid g = new Guid ("557cf404-1a04-11d3-9a73-0000f81ef32e"); + Assert.IsNull (GetEncoder (g), "Encoder"); + } + + [Test] + public void WmfCodec_Decoder () + { + Guid g = new Guid ("557cf404-1a04-11d3-9a73-0000f81ef32e"); + Check (null, GetDecoder (g), ImageFormat.Wmf.Guid, + "WMF", null, "*.WMF", + ImageCodecFlags.Builtin | ImageCodecFlags.Decoder | ImageCodecFlags.SupportBitmap, + "WMF", "image/x-wmf", 1, 1, "FF-FF-FF-FF", "D7-CD-C6-9A", null); + } } }