* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / System.Drawing / Test / DrawingTest / DrawingTestHelper / DrawingTest.cs
index 793d4f5911a6a682aa0002d48352ed30622a98da..8f0ba78e1956cdf6784f81ad8d3875b3b5dae207 100644 (file)
@@ -159,10 +159,10 @@ namespace DrawingTestHelper
        /// <summary>\r
        /// Summary description for DrawingTest.\r
        /// </summary>\r
-       public abstract class DrawingTest {\r
+       public abstract class DrawingTest : IDisposable {\r
 \r
                public const float DEFAULT_FLOAT_TOLERANCE = 1e-5f; \r
-               public const int DEFAULT_IMAGE_TOLERANCE = 3\r
+               public const int DEFAULT_IMAGE_TOLERANCE = 2\r
 \r
                Graphics _graphics;\r
                protected Bitmap _bitmap;\r
@@ -343,15 +343,54 @@ namespace DrawingTestHelper
                        AssertAlmostEqual (expected.Y, actual.Y, DEFAULT_FLOAT_TOLERANCE, msg);\r
                }\r
 \r
+               /// <summary>\r
+               /// Checks that the given bitmap norm is similar to expected\r
+               /// </summary>\r
+               /// <param name="tolerance">tolerance in percents (0..100)</param>\r
+               /// <returns></returns>\r
+               /// \r
+               public bool Compare (double tolerance) {\r
+                       CheckCounter ();\r
+\r
+                       double error = CompareToExpectedInternal()*100;\r
+\r
+                       if (SpecialTolerance != null)\r
+                               return error <= GetSpecialTolerance(TestName);\r
+\r
+                       return error <= tolerance;\r
+               }\r
+\r
+               public bool PDCompare (double tolerance) {\r
+                       Bitmap ri = GetReferenceImage(TestName);\r
+                       if (ri == null)\r
+                               return true;\r
+\r
+                       double error = PDComparer.Compare(ri, _bitmap);\r
+                       return error <= tolerance;\r
+               }\r
+               \r
                public bool Compare () {\r
                        CheckCounter ();\r
+\r
                        double error = CompareToExpectedInternal()*100;\r
+                       \r
                        if (SpecialTolerance != null)\r
                                return error <= GetSpecialTolerance(TestName);\r
 \r
                        return error <= DEFAULT_IMAGE_TOLERANCE;\r
                }\r
 \r
+               public bool PDCompare () {\r
+                       Bitmap ri = GetReferenceImage(TestName);\r
+                       if (ri == null)\r
+                               return true;\r
+\r
+                       double error = PDComparer.Compare(ri, _bitmap);\r
+                       return error <= DEFAULT_IMAGE_TOLERANCE;\r
+               }\r
+\r
+               protected abstract Bitmap GetReferenceImage(string testName);\r
+\r
                protected double GetSpecialTolerance(string testName) {\r
                        try     {\r
                                string shortTestName = testName.Substring( testName.LastIndexOf(".") + 1 );\r
@@ -366,18 +405,6 @@ namespace DrawingTestHelper
                        }\r
                }\r
 \r
-               /// <summary>\r
-               /// Checks that the given bitmap norm is similar to expected\r
-               /// </summary>\r
-               /// <param name="tolerance">tolerance in percents (0..100)</param>\r
-               /// <returns></returns>\r
-               /// \r
-               public bool Compare (double tolerance) {\r
-                       CheckCounter ();\r
-                       double error = CompareToExpectedInternal()*100;\r
-                       return error <= tolerance;\r
-               }\r
-\r
                public void AssertCompare () {\r
                        CheckCounter ();\r
                        Assert.IsTrue ((CompareToExpectedInternal () * 100) < DEFAULT_IMAGE_TOLERANCE);\r
@@ -416,6 +443,18 @@ namespace DrawingTestHelper
                        test.OwnerClass = ownerClass;\r
                        return test;\r
                }\r
+               #region IDisposable Members\r
+\r
+               public void Dispose()\r
+               {\r
+                       // TODO:  Add DrawingTest.Dispose implementation\r
+                       if (_graphics != null) {\r
+                               _graphics.Dispose();\r
+                               _graphics = null;\r
+                       }\r
+               }\r
+\r
+               #endregion\r
        }\r
 \r
 #if TARGET_JVM\r
@@ -425,9 +464,17 @@ namespace DrawingTestHelper
                        get {\r
                                if (_image != null)\r
                                        return _image;\r
-                               Type imageType = typeof (Image);\r
-                               PropertyInfo prop = imageType.GetProperty ("NativeObject",\r
-                                       BindingFlags.NonPublic | BindingFlags.Instance);\r
+                               Type imageType = typeof (Bitmap);\r
+                               PropertyInfo [] props = imageType.GetProperties (\r
+                                       BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly);\r
+\r
+                               PropertyInfo prop = null;\r
+                               foreach (PropertyInfo p in props) {\r
+                                       if (p.Name == "NativeObject")\r
+                                               if (p.PropertyType == typeof(java.awt.image.BufferedImage))\r
+                                                       prop = p;\r
+                               }\r
+\r
                                MethodInfo method = prop.GetGetMethod (true);\r
                                _image = (java.awt.image.BufferedImage) method.Invoke (_bitmap, new object [0]);\r
                                return _image;\r
@@ -440,6 +487,17 @@ namespace DrawingTestHelper
                        return ExpectedResults.GetNorm(TestName);\r
                }\r
 \r
+               protected override Bitmap GetReferenceImage(string testName) {\r
+                       try{\r
+                               string dotNetResultsFolder = @"";\r
+                               string fileName = dotNetResultsFolder + testName.Replace(":", "_") + ".png";\r
+                               return new Bitmap(fileName);\r
+                       }\r
+                       catch(System.Exception e) {\r
+                               throw new System.Exception("Error creating .Net reference image");\r
+                       }\r
+               }\r
+\r
                private class JavaForm:java.awt.Dialog,IMyForm {\r
                        class EventListener : java.awt.@event.WindowListener {\r
                                #region WindowListener Members\r
@@ -547,6 +605,18 @@ namespace DrawingTestHelper
                        return myNorm;\r
                }\r
 \r
+               protected override Bitmap GetReferenceImage(string testName) {\r
+                       try{\r
+                               string fileName = testName.Replace(":", "_") + ".png";\r
+                               _bitmap.Save( fileName );\r
+                               GC.Collect();\r
+                               return null;\r
+                       }\r
+                       catch(System.Exception e) {\r
+                               throw new System.Exception("Error creating .Net reference image");\r
+                       }\r
+               }\r
+\r
                private class NetForm:Form,IMyForm {\r
                        Image image;\r
                        public NetForm(string title, Image anImage):base() {\r
@@ -591,4 +661,5 @@ namespace DrawingTestHelper
 \r
        }\r
 #endif\r
+\r
 }\r