Browse Source

bmpcodec and ImageCodec tests

svn path=/trunk/mcs/; revision=27272
Jordi Mas i Hernandez 21 years ago
parent
commit
ba9523ce98

+ 147 - 0
mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestBmpCodec.cs

@@ -0,0 +1,147 @@
+//
+// BMPCodec class testing unit
+//
+// Author:
+//
+// 	 Jordi Mas i Hernàndez ([email protected])
+//
+// (C) 2004 Ximian, Inc.  http://www.ximian.com
+//
+using System;
+using System.Drawing;
+using System.Drawing.Imaging;
+using NUnit.Framework;
+using System.IO;
+using System.Security.Cryptography;
+using System.Text;
+
+namespace MonoTests.System.Drawing
+{
+
+	[TestFixture]	
+	public class TestBmpCodec : Assertion 
+	{
+		
+		[TearDown]
+		public void Clean() {}
+		
+		[SetUp]
+		public void GetReady()		
+		{
+		
+		}
+		
+		/* Get the output directory depending on the runtime and location*/
+		internal string getOutSubDir()
+		{				
+			string sSub, sRslt;			
+			
+			if (Environment.GetEnvironmentVariable("MSNet")==null)
+				sSub = "mono/";
+			else
+				sSub = "MSNet/";			
+			
+			sRslt = Path.GetFullPath ("../System.Drawing/" +  sSub);
+				
+			if (Directory.Exists(sRslt) == 	false) 
+				sRslt = "Test/System.Drawing/" + sSub;							
+			
+			if (sRslt.Length > 0)
+				if (sRslt[sRslt.Length-1] != '\\' && sRslt[sRslt.Length-1] != '/')
+					sRslt += "/";					
+			return sRslt;
+		}
+
+		/* Get the input directory depending on the runtime*/
+		internal string getInFile(string file)
+		{				
+			string sRslt, local;						
+
+			local = "../System.Drawing/" + file;
+			
+			sRslt = Path.GetFullPath (local);
+				
+			if (File.Exists(sRslt)==false) 
+				sRslt = "Test/System.Drawing/" + file;							
+			
+			return sRslt;
+		}
+		
+		/* Checks bitmap features on a know 24-bits bitmap */
+		[Test]
+		public void Bitmap24bitFeatures()
+		{
+			string sInFile = getInFile ("bitmaps/almogaver24bits.bmp");
+			Bitmap	bmp = new Bitmap(sInFile);						
+			RectangleF rect;
+			GraphicsUnit unit = GraphicsUnit.World;
+			
+			rect = bmp.GetBounds(ref unit);
+			
+			AssertEquals (PixelFormat.Format24bppRgb, bmp.PixelFormat);
+			AssertEquals (173, bmp.Width);
+			AssertEquals (183, bmp.Height);		
+			
+			AssertEquals (0, rect.X);
+			AssertEquals (0, rect.Y);		
+			AssertEquals (173, rect.Width);
+			AssertEquals (183, rect.Height);					
+			
+			AssertEquals (173, bmp.Size.Width);
+			AssertEquals (183, bmp.Size.Height);					
+		}
+
+		
+
+		/* Checks bitmap features on a know 32-bits bitmap (codec)*/
+		[Test]
+		public void Bitmap32bitFeatures()
+		{
+			string sInFile = getInFile ("bitmaps/almogaver32bits.bmp");
+			Bitmap	bmp = new Bitmap(sInFile);						
+			RectangleF rect;
+			GraphicsUnit unit = GraphicsUnit.World;
+			
+			rect = bmp.GetBounds(ref unit);
+			
+			//AssertEquals (PixelFormat.Format32bppArgb, bmp.PixelFormat);
+			AssertEquals (173, bmp.Width);
+			AssertEquals (183, bmp.Height);		
+			
+			AssertEquals (0, rect.X);
+			AssertEquals (0, rect.Y);		
+			AssertEquals (173, rect.Width);
+			AssertEquals (183, rect.Height);					
+			
+			AssertEquals (173, bmp.Size.Width);
+			AssertEquals (183, bmp.Size.Height);					
+		}
+
+		[Test]
+		public void Save() 
+		{				
+			string sOutFile =  getOutSubDir() + "linerect.bmp";
+						
+			// Save		
+			Bitmap	bmp = new Bitmap(100,100, PixelFormat.Format32bppRgb);						
+			Graphics gr = Graphics.FromImage(bmp);		
+			
+			Pen p = new Pen(Color.Red, 2);
+			gr.DrawLine(p, 10.0F, 10.0F, 90.0F, 90.0F);
+			gr.DrawRectangle(p, 10.0F, 10.0F, 80.0F, 80.0F);
+			p.Dispose();					
+			bmp.Save(sOutFile, ImageFormat.Bmp);
+			gr.Dispose();
+			bmp.Dispose();							
+			
+			// Load			
+			Bitmap	bmpLoad = new Bitmap(sOutFile);					
+			
+			Color color = bmpLoad.GetPixel(10,10);					
+			
+			AssertEquals (Color.FromArgb(255,255,0,0), color);											
+		}
+
+		
+	}
+}

+ 103 - 0
mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestImageCodecInfo.cs

@@ -0,0 +1,103 @@
+//
+// ImageCodecInfo class testing unit
+//
+// Author:
+//
+// 	 Jordi Mas i Hernàndez ([email protected])
+//
+// (C) 2004 Ximian, Inc.  http://www.ximian.com
+//
+using System;
+using System.Drawing;
+using System.Drawing.Imaging;
+using NUnit.Framework;
+using System.IO;
+
+namespace MonoTests.System.Drawing
+{
+
+	[TestFixture]	
+	public class TestImageCodecInfo : Assertion 
+	{
+		
+		[TearDown]
+		public void Clean() {}
+		
+		[SetUp]
+		public void GetReady()		
+		{
+		
+		}
+		
+		internal void isPresent (ImageCodecInfo[] codecs, string clsid, string formatID)
+		{			
+			for (int i = 0; i < codecs.Length; i++) {
+				if (codecs[i].FormatID.ToString() == formatID) {
+					AssertEquals (codecs[i].Clsid.ToString(), clsid);
+					return;
+				}
+			}
+
+			Assert (false);
+		}
+		
+		/*
+			This test makes sure that we deliver at least the BMP, GIF, JPEG
+			and PNG encoders
+		*/
+		[Test]
+		public void Encoders()
+		{
+		
+			ImageCodecInfo[] decoders =  ImageCodecInfo.GetImageDecoders();			
+			ImageCodecInfo[] encoders =  ImageCodecInfo.GetImageEncoders();	
+
+
+			/* BMP */
+			isPresent (encoders, "557cf400-1a04-11d3-9a73-0000f81ef32e", 
+				"b96b3cab-0728-11d3-9d7b-0000f81ef32e");
+
+			/* GIF */
+			isPresent (encoders, "557cf402-1a04-11d3-9a73-0000f81ef32e", 
+				"b96b3cb0-0728-11d3-9d7b-0000f81ef32e");
+
+			/* JPEG */
+			isPresent (encoders, "557cf401-1a04-11d3-9a73-0000f81ef32e", 
+				"b96b3cae-0728-11d3-9d7b-0000f81ef32e");
+
+			/* PNG */
+			isPresent (encoders, "557cf406-1a04-11d3-9a73-0000f81ef32e", 
+				"b96b3caf-0728-11d3-9d7b-0000f81ef32e");
+
+		}
+
+		/*
+			This test makes sure that we deliver at least the BMP, GIF, JPEG
+			and PNG decoders
+		*/
+		[Test]
+		public void Decoders()
+		{		
+			ImageCodecInfo[] decoders =  ImageCodecInfo.GetImageDecoders();			
+
+			/* BMP */
+			isPresent (decoders, "557cf400-1a04-11d3-9a73-0000f81ef32e", 
+				"b96b3cab-0728-11d3-9d7b-0000f81ef32e");
+
+			/* GIF */
+			isPresent (decoders, "557cf402-1a04-11d3-9a73-0000f81ef32e", 
+				"b96b3cb0-0728-11d3-9d7b-0000f81ef32e");
+
+			/* JPEG */
+			isPresent (decoders, "557cf401-1a04-11d3-9a73-0000f81ef32e", 
+				"b96b3cae-0728-11d3-9d7b-0000f81ef32e");
+
+			/* PNG */
+			isPresent (decoders, "557cf406-1a04-11d3-9a73-0000f81ef32e", 
+				"b96b3caf-0728-11d3-9d7b-0000f81ef32e");
+		}
+
+	
+		
+	}
+}