2 // Direct GDI+ API unit tests
5 // Sebastien Pouliot <sebastien@ximian.com>
7 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 using System.Drawing.Drawing2D;
32 using System.Drawing.Imaging;
33 using System.Runtime.InteropServices;
34 using NUnit.Framework;
36 namespace MonoTests.System.Drawing {
39 public class GDIPlusTest {
43 public void DeleteFontFamily ()
45 // invalid image pointer (null)
46 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipDeleteFontFamily (IntPtr.Zero), "null");
49 GDIPlus.GdipCreateFontFamilyFromName ("Arial", IntPtr.Zero, out font_family);
50 Assert.IsTrue (font_family != IntPtr.Zero, "GDIGdipCreateFontFamilyFromName");
51 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteFontFamily (font_family), "first");
55 [Category ("NotWorking")]
56 public void DeleteFontFamily_DoubleDispose ()
59 GDIPlus.GdipGetGenericFontFamilySerif (out font_family);
61 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteFontFamily (font_family), "first");
63 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteFontFamily (font_family), "second");
68 public void CreateFont ()
71 GDIPlus.GdipCreateFontFamilyFromName ("Arial", IntPtr.Zero, out family);
72 Assert.IsTrue (family != IntPtr.Zero, "family");
75 Assert.AreEqual (Status.Ok, GDIPlus.GdipCreateFont (family, 10f, FontStyle.Regular, GraphicsUnit.Point, out font), "GdipCreateFont");
76 Assert.IsTrue (font != IntPtr.Zero, "font");
78 LOGFONT lf = new LOGFONT ();
80 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetLogFont (font, IntPtr.Zero, (object) lf), "GdipGetLogFont-null-graphics");
81 Assert.AreEqual (0, lf.lfCharSet, "lfCharSet-null-graphics");
82 // other lf members looks like garbage
85 GDIPlus.GdipCreateBitmapFromScan0 (10, 10, 0, PixelFormat.Format32bppArgb, IntPtr.Zero, out image);
86 Assert.IsTrue (image != IntPtr.Zero, "image");
89 GDIPlus.GdipGetImageGraphicsContext (image, out graphics);
90 Assert.IsTrue (graphics != IntPtr.Zero, "graphics");
93 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetLogFont (IntPtr.Zero, graphics, (object) lf), "GdipGetLogFont-null");
94 Assert.AreEqual (0, lf.lfCharSet, "lfCharSet-null");
97 Assert.AreEqual (Status.Ok, GDIPlus.GdipGetLogFont (font, graphics, (object) lf), "GdipGetLogFont");
98 Assert.AreEqual (0, lf.lfCharSet, "lfCharSet");
99 // strangely this is 1 in the managed side
102 Assert.AreEqual (Status.Ok, GDIPlus.GdipGetLogFont (font, graphics, (object) lf), "GdipGetLogFont-2");
103 Assert.AreEqual (0, lf.lfCharSet, "lfCharSet");
104 // strangely this is 2 in the managed side
106 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteFont (font), "GdipDeleteFont");
107 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipDeleteFont (IntPtr.Zero), "GdipDeleteFont-null");
109 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteFontFamily (family), "GdipDeleteFontFamily");
110 Assert.AreEqual (Status.Ok, GDIPlus.GdipDisposeImage (image), "GdipDisposeImage");
111 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteGraphics (graphics), "GdipDeleteGraphics");
116 public void CreateBitmapFromScan0 ()
119 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipCreateBitmapFromScan0 (-1, 10, 10, PixelFormat.Format32bppArgb, IntPtr.Zero, out bmp), "negative width");
124 public void DeleteBrush ()
126 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipDeleteBrush (IntPtr.Zero), "GdipDeleteBrush");
131 public void Graphics ()
134 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetImageGraphicsContext (IntPtr.Zero, out graphics), "GdipGetImageGraphicsContext");
137 GDIPlus.GdipCreateBitmapFromScan0 (10, 10, 0, PixelFormat.Format32bppArgb, IntPtr.Zero, out image);
138 Assert.IsTrue (image != IntPtr.Zero, "image");
140 Assert.AreEqual (Status.Ok, GDIPlus.GdipGetImageGraphicsContext (image, out graphics), "GdipGetImageGraphicsContext");
141 Assert.IsTrue (graphics != IntPtr.Zero, "graphics");
144 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteGraphics (graphics), "GdipDeleteGraphics");
145 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipDeleteGraphics (IntPtr.Zero), "GdipDeleteGraphics-null");
147 Assert.AreEqual (Status.Ok, GDIPlus.GdipDisposeImage (image), "GdipDisposeImage");
152 public void GetPointCount_Zero ()
155 Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePath (FillMode.Alternate, out path), "GdipCreatePath");
156 Assert.IsTrue (path != IntPtr.Zero, "Handle");
159 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPointCount (IntPtr.Zero, out count), "GdipGetPointCount-null");
160 Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPointCount (path, out count), "GdipGetPointCount");
161 Assert.AreEqual (0, count, "Count");
163 PointF[] points = new PointF[count];
164 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPathPoints (IntPtr.Zero, points, count), "GdipGetPathPoints-null-1");
165 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPathPoints (path, null, count), "GdipGetPathPoints-null-2");
166 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPathPoints (path, points, count), "GdipGetPathPoints");
167 // can't get the points if the count is zero!
169 byte[] types = new byte[count];
170 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPathTypes (IntPtr.Zero, types, count), "GdipGetPathTypes-null-1");
171 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPathTypes (path, null, count), "GdipGetPathTypes-null-2");
172 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPathTypes (path, types, count), "GdipGetPathTypes");
173 // can't get the types if the count is zero!
175 PointF[] pts_2f = new PointF[2] { new PointF (2f, 4f), new PointF (10f, 30f) };
176 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipAddPathLine2 (IntPtr.Zero, pts_2f, pts_2f.Length), "GdipAddPathLine2-null-path");
177 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipAddPathLine2 (path, null, pts_2f.Length), "GdipAddPathLine2-null-points");
178 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipAddPathLine2 (path, pts_2f, -1), "GdipAddPathLine2-negative-count");
179 Assert.AreEqual (Status.Ok, GDIPlus.GdipAddPathLine2 (path, pts_2f, pts_2f.Length), "GdipAddPathLine2");
181 Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPointCount (path, out count), "GdipGetPointCount");
182 Assert.AreEqual (2, count, "Count");
184 points = new PointF[count];
185 Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPathPoints (path, points, count), "GdipGetPathPoints-ok");
187 types = new byte[count];
188 Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPathTypes (path, types, count), "GdipGetPathTypes-ok");
190 Assert.AreEqual (Status.Ok, GDIPlus.GdipResetPath (path), "GdipResetPath");
191 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipResetPath (IntPtr.Zero), "GdipResetPath-null");
193 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeletePath (path), "GdipDeletePath");
194 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipDeletePath (IntPtr.Zero), "GdipDeletePath-null");
201 Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePen1 (0, 0f, Unit.UnitWorld, out pen), "GdipCreatePen1");
204 Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePath (FillMode.Alternate, out path), "GdipCreatePath");
207 Assert.AreEqual (Status.Ok, GDIPlus.GdipCreateMatrix (out matrix), "GdipCreateMatrix");
209 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipWidenPath (IntPtr.Zero, pen, matrix, 1.0f), "GdipWidenPath-null-path");
211 Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipWidenPath (path, pen, matrix, 1.0f), "GdipWidenPath");
213 // add something to the path
214 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipAddPathLine (IntPtr.Zero, 1, 1, 10, 10), "GdipAddPathLine");
215 Assert.AreEqual (Status.Ok, GDIPlus.GdipAddPathLine (path, 1, 1, 10, 10), "GdipAddPathLine");
218 Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPointCount (path, out count), "GdipGetPointCount");
219 Assert.AreEqual (2, count, "Count");
221 Assert.AreEqual (Status.Ok, GDIPlus.GdipWidenPath (path, pen, matrix, 1.0f), "GdipWidenPath-2");
223 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteMatrix (matrix), "GdipDeleteMatrix");
224 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeletePath (path), "GdipDeletePath");
225 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeletePen (pen), "GdipDeletePen");
230 public void Matrix ()
233 Assert.AreEqual (Status.Ok, GDIPlus.GdipCreateMatrix (out matrix), "GdipCreateMatrix");
234 Assert.IsTrue (matrix != IntPtr.Zero, "Handle");
236 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipDeleteMatrix (IntPtr.Zero), "GdipDeleteMatrix-null");
237 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteMatrix (matrix), "GdipDeleteMatrix");
242 public void DisposeImage ()
244 // invalid image pointer (null)
245 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipDisposeImage (IntPtr.Zero), "null");
248 GDIPlus.GdipCreateBitmapFromScan0 (10, 10, 0, PixelFormat.Format32bppArgb, IntPtr.Zero, out image);
249 Assert.AreEqual (Status.Ok, GDIPlus.GdipDisposeImage (image), "first");
253 [Category ("NotWorking")]
254 public void DisposeImage_Dual ()
257 GDIPlus.GdipCreateBitmapFromScan0 (10, 10, 0, PixelFormat.Format32bppArgb, IntPtr.Zero, out image);
259 Assert.AreEqual (Status.Ok, GDIPlus.GdipDisposeImage (image), "first");
261 Assert.AreEqual (Status.ObjectBusy, GDIPlus.GdipDisposeImage (image), "second");
265 [Category ("NotWorking")] // libgdiplus doesn't implement GdipGetImageThumbnail (it is done inside S.D)
266 public void GetImageThumbnail ()
270 // invalid image pointer (null)
271 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetImageThumbnail (IntPtr.Zero, 10, 10, out ptr, IntPtr.Zero, IntPtr.Zero));
274 GDIPlus.GdipCreateBitmapFromScan0 (10, 10, 0, PixelFormat.Format32bppArgb, IntPtr.Zero, out image);
277 Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipGetImageThumbnail (image, 0, 10, out ptr, IntPtr.Zero, IntPtr.Zero));
278 // invalid width (negative)
279 Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipGetImageThumbnail (image, 0x8000000, 10, out ptr, IntPtr.Zero, IntPtr.Zero));
280 // invalid height (0)
281 Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipGetImageThumbnail (image, 10, 0, out ptr, IntPtr.Zero, IntPtr.Zero));
282 // invalid height (negative)
283 Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipGetImageThumbnail (image, 10, 0x8000000, out ptr, IntPtr.Zero, IntPtr.Zero));
286 GDIPlus.GdipDisposeImage (image);
292 public void CreatePathGradient ()
294 PointF[] points = null;
296 Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreatePathGradient (points, 0, WrapMode.Clamp, out brush), "null");
298 points = new PointF [0];
299 Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreatePathGradient (points, 0, WrapMode.Clamp, out brush), "empty");
301 points = new PointF[1];
302 Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreatePathGradient (points, 1, WrapMode.Clamp, out brush), "one");
304 points = new PointF[2] { new PointF (1, 2), new PointF (20, 30) };
305 Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePathGradient (points, 2, WrapMode.Clamp, out brush), "two");
306 Assert.IsTrue (brush != IntPtr.Zero, "Handle");
309 Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPathGradientBlendCount (brush, out count), "GdipGetPathGradientBlendCount");
310 Assert.AreEqual (1, count, "blend count");
312 int[] colors = new int[count];
313 float[] positions = new float[count];
314 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPathGradientPresetBlend (brush, colors, positions, count), "GdipGetPathGradientBlend");
315 // can't call that for 1 count!
317 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteBrush (brush), "GdipDeleteBrush");
321 public void CreatePathGradient_FromPath_Line ()
324 Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePath (FillMode.Alternate, out path), "GdipCreatePath");
327 Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreatePathGradientFromPath (IntPtr.Zero, out brush), "null");
328 Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipCreatePathGradientFromPath (path, out brush), "empty path");
330 Assert.AreEqual (Status.Ok, GDIPlus.GdipAddPathLine (path, 1, 1, 10, 10), "GdipAddPathLine");
332 Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePathGradientFromPath (path, out brush), "path");
333 Assert.IsTrue (brush != IntPtr.Zero, "Handle");
336 Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPathGradientBlendCount (brush, out count), "GdipGetPathGradientBlendCount");
337 Assert.AreEqual (1, count, "blend count");
339 int[] colors = new int[count];
340 float[] positions = new float[count];
341 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPathGradientPresetBlend (brush, colors, positions, count), "GdipGetPathGradientBlend");
343 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteBrush (brush), "GdipDeleteBrush");
344 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeletePath (path), "GdipDeletePath");
348 public void CreatePathGradient_FromPath_Lines ()
351 Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePath (FillMode.Alternate, out path), "GdipCreatePath");
353 PointF[] pts_2f = new PointF[2] { new PointF (2f, 4f), new PointF (10f, 30f) };
354 Assert.AreEqual (Status.Ok, GDIPlus.GdipAddPathLine2 (path, pts_2f, pts_2f.Length), "GdipAddPathLine2");
357 Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePathGradientFromPath (path, out brush), "path");
358 Assert.IsTrue (brush != IntPtr.Zero, "Handle");
361 Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPathGradientBlendCount (brush, out count), "GdipGetPathGradientBlendCount");
362 Assert.AreEqual (1, count, "blend count");
364 int[] colors = new int[count];
365 float[] positions = new float[count];
366 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPathGradientPresetBlend (brush, colors, positions, count), "GdipGetPathGradientBlend");
368 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeleteBrush (brush), "GdipDeleteBrush");
369 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeletePath (path), "GdipDeletePath");
374 public void CreatePen ()
377 Assert.AreEqual (Status.Ok, GDIPlus.GdipCreatePen1 (0, 0f, Unit.UnitWorld, out pen), "GdipCreatePen1");
378 Assert.IsTrue (pen != IntPtr.Zero, "pen");
381 Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPenDashStyle (pen, out ds), "GdipGetPenDashStyle");
382 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPenDashStyle (IntPtr.Zero, out ds), "GdipGetPenDashStyle-null");
384 ds = DashStyle.Custom;
385 Assert.AreEqual (Status.Ok, GDIPlus.GdipSetPenDashStyle (pen, ds), "GdipSetPenDashStyle");
386 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipSetPenDashStyle (IntPtr.Zero, ds), "GdipSetPenDashStyle-null");
389 Assert.AreEqual (Status.Ok, GDIPlus.GdipGetPenDashCount (pen, out count), "GdipGetPenDashCount");
390 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPenDashCount (IntPtr.Zero, out count), "GdipGetPenDashCount-null");
391 Assert.AreEqual (0, count, "count");
393 float[] dash = new float[count];
394 Assert.AreEqual (Status.OutOfMemory, GDIPlus.GdipGetPenDashArray (pen, dash, count), "GdipGetPenDashArray");
395 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPenDashArray (IntPtr.Zero, dash, count), "GdipGetPenDashArray-null-pen");
396 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipGetPenDashArray (pen, null, count), "GdipGetPenDashArray-null-dash");
398 Assert.AreEqual (Status.Ok, GDIPlus.GdipDeletePen (pen), "GdipDeletePen");
399 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipDeletePen (IntPtr.Zero), "GdipDeletePen-null");
404 public void CreateRegionRgnData ()
407 Assert.AreEqual (Status.InvalidParameter, GDIPlus.GdipCreateRegionRgnData (null, 0, out region));
409 byte[] data = new byte[0];
410 Assert.AreEqual (Status.GenericError, GDIPlus.GdipCreateRegionRgnData (data, 0, out region));
414 public void DrawingOperations ()
416 IntPtr graphics, image;
419 GDIPlus.GdipCreateBitmapFromScan0 (10, 10, 0, PixelFormat.Format32bppArgb, IntPtr.Zero,
422 GDIPlus.GdipGetImageGraphicsContext (image, out graphics);
423 GDIPlus.GdipCreatePen1 (0, 0f, Unit.UnitWorld, out pen);
427 Assert.AreEqual (Status.InvalidParameter,
428 GDIPlus.GdipDrawCurveI (IntPtr.Zero, IntPtr.Zero, null, 0));
430 Assert.AreEqual (Status.InvalidParameter,
431 GDIPlus.GdipDrawCurveI (graphics, pen, new Point [] {}, 0),
432 "DrawCurve with no pts");
433 Assert.AreEqual (Status.InvalidParameter,
434 GDIPlus.GdipDrawCurveI (graphics, pen,
435 new Point [] { new Point (1, 1) }, 1),
436 "DrawCurve with 1 pt");
437 Assert.AreEqual (Status.Ok,
438 GDIPlus.GdipDrawCurveI (graphics, pen,
439 new Point [] { new Point (1, 1),
440 new Point (2, 2) }, 2),
441 "DrawCurve with 2 pts");
445 Assert.AreEqual (Status.InvalidParameter,
446 GDIPlus.GdipDrawClosedCurveI (graphics, pen, new Point [] {}, 0),
447 "DrawClosedCurve with no pts");
448 Assert.AreEqual (Status.InvalidParameter,
449 GDIPlus.GdipDrawClosedCurveI (graphics, pen,
450 new Point [] { new Point (1, 1) }, 1),
451 "DrawClosedCurve with 1 pt");
452 Assert.AreEqual (Status.InvalidParameter,
453 GDIPlus.GdipDrawClosedCurveI (graphics, pen,
454 new Point [] { new Point (1, 1),
455 new Point (2, 2) }, 2),
456 "DrawClosedCurve with 2 pt2");
460 Assert.AreEqual (Status.InvalidParameter,
461 GDIPlus.GdipDrawPolygonI (graphics, pen, new Point [] {}, 0),
462 "DrawPolygon with no pts");
463 Assert.AreEqual (Status.InvalidParameter,
464 GDIPlus.GdipDrawPolygonI (graphics, pen,
465 new Point [] { new Point (1, 1) }, 1),
466 "DrawPolygon with only one pt");
468 GDIPlus.GdipDeletePen (pen);
473 GDIPlus.GdipCreateSolidFill (0, out brush);
476 Assert.AreEqual (Status.InvalidParameter,
477 GDIPlus.GdipFillClosedCurveI (graphics, brush, new Point [] {}, 0),
478 "FillClosedCurve with no pts");
479 Assert.AreEqual (Status.Ok,
480 GDIPlus.GdipFillClosedCurveI (graphics, brush,
481 new Point [] { new Point (1, 1) }, 1),
482 "FillClosedCurve with 1 pt");
483 Assert.AreEqual (Status.Ok,
484 GDIPlus.GdipFillClosedCurveI (graphics, brush,
485 new Point [] { new Point (1, 1),
486 new Point (2, 2) }, 2),
487 "FillClosedCurve with 2 pts");
489 GDIPlus.GdipDeleteBrush (brush);
491 GDIPlus.GdipDeleteGraphics (graphics);
492 GDIPlus.GdipDisposeImage (image);