svn path=/branches/mono-1-1-9/mcs/; revision=51212
[mono.git] / mcs / class / System.Drawing / Test / DrawingTest / Test / Pen.cs
1 using System;\r
2 using System.Drawing;\r
3 using System.Drawing.Drawing2D;\r
4 using NUnit.Framework;\r
5 using DrawingTestHelper;\r
6 \r
7 namespace Test.Sys.Drawing\r
8 {\r
9         /// <summary>\r
10         /// Summary description for Pen.\r
11         /// </summary>\r
12         [TestFixture]\r
13         public class PenFixture {\r
14                 //TODO: Brush, CompoundArray, CustomEndCap, CustomStartCap,\r
15                 //StartCap, EndCap, PenType, Transform \r
16                 DrawingTest t;\r
17                 Pen p;\r
18                 protected int TOLERANCE = 3;\r
19 \r
20 \r
21                 [SetUp]\r
22                 public void SetUp () {\r
23                         t = DrawingTest.Create (256, 256);\r
24                         p = new Pen (Color.Blue);\r
25                         p.Width = 10;\r
26                         DrawingTest.ShowForms = false;\r
27                 }\r
28 \r
29                 #region InitAlignment\r
30                 [Test]\r
31                 public void InitAlignment () {\r
32                         Pen p = new Pen (Color.Blue);\r
33                         Assert.AreEqual (PenAlignment.Center, p.Alignment);\r
34                 }\r
35                 #endregion\r
36                 \r
37                 #region PenWidth\r
38                 [Test]\r
39                 public void PenWidth_1()\r
40                 {\r
41                         Assert.AreEqual(10, p.Width);\r
42                         t.Graphics.DrawLine (p, 20, 200, 200, 20);\r
43                         t.Show();\r
44                         Assert.IsTrue (t.Compare (TOLERANCE * 1.5f)); //FIXME: Pen width in GH is not the same as in .NET\r
45                 }\r
46                 [Test]\r
47                 public void PenWidth_2()\r
48                 {\r
49                         p.Width = 25;\r
50                         t.Graphics.DrawLine (p, 20, 200, 200, 20);\r
51                         t.Show();\r
52                         Assert.IsTrue (t.Compare (TOLERANCE));\r
53                 }\r
54                 [Test]\r
55                 public void PenWidth_3 () \r
56                 {\r
57                         t.Graphics.DrawLine (p, 10, 100, 200, 100);\r
58                         t.Show ();\r
59                         Assert.IsTrue (t.Compare (TOLERANCE));\r
60                 }\r
61                 #endregion\r
62 \r
63                 #region DashStyle Tests\r
64                 [Test]\r
65                 public void DashStyleTest_1 () \r
66                 {\r
67                         Assert.AreEqual (DashStyle.Solid, p.DashStyle);\r
68                         p.Width = 14;\r
69                         t.Graphics.DrawLine (p, 20, 100, 230, 100);\r
70                         t.Show ();\r
71                         Assert.IsTrue (t.Compare (TOLERANCE));\r
72                 }\r
73                 [Test]\r
74                 public void DashStyleTest_2 () {\r
75                         p.DashStyle = DashStyle.Dash;\r
76                         p.Width = 14;\r
77                         t.Graphics.DrawLine (p, 20, 100, 230, 100);\r
78                         t.Show ();\r
79                         Assert.IsTrue (t.Compare (TOLERANCE));\r
80                 }\r
81                 [Test]\r
82                 public void DashStyleTest_3 () {\r
83                         p.DashStyle = DashStyle.DashDot;\r
84                         p.Width = 14;\r
85                         t.Graphics.FillRectangle (Brushes.Black, 0, 0, 256, 256);\r
86                         t.Graphics.DrawLine (p, 20, 100, 230, 100);\r
87                         t.Show ();\r
88                         Assert.IsTrue (t.Compare (TOLERANCE));\r
89                 }\r
90                 [Test]\r
91                 public void DashStyleTest_4 () {        \r
92                         p.DashStyle = DashStyle.DashDotDot;\r
93                         p.Width = 14;\r
94                         t.Graphics.FillRectangle (Brushes.Black, 0, 0, 256, 256);\r
95                         t.Graphics.DrawLine (p, 20, 100, 230, 100);\r
96                         t.Show ();\r
97                         Assert.IsTrue (t.Compare (TOLERANCE));\r
98                 }\r
99                 [Test]\r
100                 public void DashStyleTest_5 () {\r
101                         p.DashStyle = DashStyle.Dot;\r
102                         p.Width = 14;\r
103                         t.Graphics.FillRectangle (Brushes.Black, 0, 0, 256, 256);\r
104                         t.Graphics.DrawLine (p, 20, 100, 230, 100);\r
105                         t.Show ();\r
106                         Assert.IsTrue (t.Compare (TOLERANCE));\r
107                 }\r
108                 [Test]\r
109                 public void DashStyleTest_6 () {\r
110                         p.DashStyle = DashStyle.Custom;\r
111                         p.Width = 14;\r
112                         t.Graphics.FillRectangle (Brushes.Black, 0, 0, 256, 256);\r
113                         t.Graphics.DrawLine (p, 20, 100, 230, 100);\r
114                         t.Show ();\r
115                         Assert.IsTrue (t.Compare (TOLERANCE));\r
116                 }\r
117                 #endregion\r
118 \r
119                 #region DashCustomStyle\r
120                 //The following tests DashOffset and DashPattern\r
121                 [Test]\r
122 #if TARGET_JVM\r
123                 [Category ("NotWorking")] //FIXME: Bug in dashed line\r
124 #endif\r
125                 public void DashCustomStyle_1 () {\r
126                         p.DashStyle = DashStyle.Custom;\r
127                         p.Width = 10;\r
128                         Assert.AreEqual (new float [] {1F}, p.DashPattern);\r
129                         Assert.AreEqual (0F, p.DashOffset);\r
130                 }\r
131                 [Test]\r
132                 public void DashCustomStyle_2 () {\r
133                         p.DashPattern = new float [] {2, 3, 1.15F, 0.05F};\r
134                         t.Graphics.FillRectangle (Brushes.Black, 0, 0, 256, 256);\r
135                         t.Graphics.DrawLine (p, 20, 100, 200, 100);\r
136                         t.Show ();\r
137                         Assert.IsTrue (t.Compare (TOLERANCE));\r
138                 }\r
139                 [Test]\r
140                 public void DashCustomStyle_3 () {\r
141                         p.DashOffset = 10F;\r
142                         t.Graphics.DrawLine (p, 20, 100, 200, 100);\r
143                         t.Show ();\r
144                         Assert.IsTrue (t.Compare (TOLERANCE));\r
145                 }\r
146                 [Test]\r
147 #if TARGET_JVM\r
148                 [Category ("NotWorking")] //FIXME: Bug in dashed line\r
149 #endif\r
150                 public void DashCustomStyle_4 () {\r
151                         p.DashPattern = new float [] {2, 3, 1.15F, 0.05F, 1.74321F};\r
152                         p.DashOffset = 10.2F;\r
153                         t.Graphics.DrawLine (p, 20, 100, 200, 100);\r
154                         t.Show ();\r
155                         Assert.IsTrue (t.Compare (TOLERANCE));\r
156                 }\r
157                 [Test]\r
158 #if TARGET_JVM\r
159                 [Category ("NotWorking")] //FIXME: Bug in dashed line\r
160 #endif\r
161                 public void DashCustomStyle_5 () {\r
162                         p.DashPattern = new float [] {2, 3, 1.15F, 0.05F, 1.74321F};\r
163                         p.DashOffset = 10.2F;\r
164                         t.Graphics.DrawLine (p, 20, 100, 200, 100);\r
165                         t.Show ();\r
166                         Assert.IsTrue (t.Compare (TOLERANCE));\r
167                 }\r
168                 #endregion\r
169 \r
170                 #region DashCapTest\r
171                 [Test]\r
172 #if TARGET_JVM\r
173                 [Category ("NotWorking")] //FIXME: Bug in dashed line\r
174 #endif\r
175                 public void DashCapTest_Flat () {\r
176                         p.Width = 15;\r
177                         Assert.AreEqual (DashCap.Flat, p.DashCap);\r
178                         p.DashStyle = DashStyle.DashDot;\r
179                         t.Graphics.DrawLine (p, 10, 100, 230, 100);\r
180                         t.Show ();\r
181                         Assert.IsTrue (t.Compare (TOLERANCE));\r
182                 }\r
183                 [Test]\r
184 #if TARGET_JVM\r
185                 [Category ("NotWorking")] //FIXME: Bug in dashed line\r
186 #endif\r
187                 public void DashCapTest_Round () {\r
188                         p.Width = 15;\r
189                         p.DashStyle = DashStyle.DashDot;\r
190                         p.DashCap = DashCap.Round;\r
191                         t.Graphics.DrawLine (p, 10, 100, 230, 100);\r
192                         t.Show ();\r
193                         Assert.IsTrue (t.Compare (TOLERANCE));\r
194                 }\r
195                 [Test]\r
196 #if TARGET_JVM\r
197                 [Category ("NotWorking")] // FIXME: DashCap.Triangle is not sopported by GH\r
198 #endif\r
199                 public void DashCapTest_Triangle () {\r
200                         p.Width = 15;\r
201                         p.DashStyle = DashStyle.DashDot;\r
202                         p.DashCap = DashCap.Triangle;\r
203                         t.Graphics.DrawLine (p, 10, 100, 230, 100);\r
204                         t.Show ();\r
205                         Assert.IsTrue (t.Compare (TOLERANCE));\r
206                 }\r
207                 #endregion\r
208 \r
209                 #region LineJoin Round\r
210                 [Test]\r
211                 public void LineJoinTest_Round_1 () {\r
212                         Point [] points = new Point [] {\r
213                                                                                            new Point(100, 210), new Point (120, 50),\r
214                                                                                            new Point (140, 210)};\r
215                         p.Width = 25;\r
216                         p.LineJoin = LineJoin.Round;\r
217                         t.Graphics.DrawPolygon (p, points);\r
218                         t.Graphics.DrawPolygon (Pens.White, points);\r
219                         t.Show ();\r
220                         Assert.IsTrue (t.Compare (TOLERANCE));\r
221                 }\r
222 \r
223                 [Test]\r
224                 public void LineJoinTest_Round_2 () {\r
225                         Point [] points = new Point [] {\r
226                                                                          new Point(50, 210), new Point (120, 50),\r
227                                                                          new Point (190, 210)};\r
228                         p.Width = 25;\r
229                         p.LineJoin = LineJoin.Round;\r
230                         t.Graphics.DrawPolygon (p, points);\r
231                         t.Graphics.DrawPolygon (Pens.White, points);\r
232                         t.Show ();\r
233                         Assert.IsTrue (t.Compare (TOLERANCE));\r
234                 }\r
235                 #endregion\r
236 \r
237                 #region LineJoin Miter\r
238                 [Test]\r
239 #if TARGET_JVM\r
240                 [Category ("NotWorking")] // FIXME: Currently Only MiterClipper is sopported by GH\r
241 #endif\r
242                 public void LineJoinTest_Miter_1 () {\r
243                         p.LineJoin = LineJoin.Miter;\r
244                         Point [] points = new Point [] {\r
245                                                                                            new Point(100, 217), new Point (130, 100),\r
246                                                                                            new Point (160, 217)};\r
247                         p.Width = 25;\r
248                         t.Graphics.DrawLines (p, points);\r
249                         t.Graphics.DrawLines (Pens.White, points);\r
250                         t.Show ();\r
251                         Assert.IsTrue (t.Compare (TOLERANCE));\r
252                 }\r
253                 [Test]\r
254 #if TARGET_JVM\r
255                 [Category ("NotWorking")] // FIXME: Currently Only MiterClipper is sopported by GH\r
256 #endif\r
257                 public void LineJoinTest_Miter_2 () {\r
258                         p.LineJoin = LineJoin.Miter;\r
259                         Point [] points = new Point [] {\r
260                                                                                            new Point(120, 237), new Point (130, 100),\r
261                                                                                            new Point (140, 237)};\r
262                         p.Width = 10;\r
263                         t.Graphics.DrawLines (p, points);\r
264                         t.Graphics.DrawLines (Pens.White, points);\r
265                         t.Show ();\r
266                         Assert.IsTrue (t.Compare (TOLERANCE));\r
267                 }\r
268                 [Test]\r
269 #if TARGET_JVM\r
270                 [Category ("NotWorking")] // FIXME: Currently Only MiterClipper is sopported by GH\r
271 #endif\r
272                 public void LineJoinTest_Miter_3 () {\r
273                         p.LineJoin = LineJoin.Miter;\r
274                         Point [] points = new Point [] {\r
275                                                                                            new Point(50, 217), new Point (100, 100),\r
276                                                                                            new Point (150, 217)};\r
277                         p.Width = 25;\r
278                         t.Graphics.DrawLines (p, points);\r
279                         t.Graphics.DrawLines (Pens.White, points);\r
280                         t.Show ();\r
281                         Assert.IsTrue (t.Compare (TOLERANCE));\r
282                 }\r
283                 #endregion\r
284 \r
285                 #region LineJoin MiterClipped\r
286                 [Test]\r
287                 public void LineJoinTest_MiterClipped_1 () {\r
288                         p.LineJoin = LineJoin.MiterClipped;\r
289                         Point [] points = new Point [] {\r
290                                                                                            new Point(100, 217), new Point (130, 100),\r
291                                                                                            new Point (160, 217)};\r
292                         p.Width = 25;\r
293                         t.Graphics.DrawLines (p, points);\r
294                         t.Graphics.DrawLines (Pens.White, points);\r
295                         t.Show ();\r
296                         Assert.IsTrue (t.Compare (TOLERANCE));\r
297                 }\r
298                 [Test]\r
299                 public void LineJoinTest_MiterClipped_2 () {\r
300                         p.LineJoin = LineJoin.MiterClipped;\r
301                         Point [] points = new Point [] {\r
302                                                                                            new Point(120, 217), new Point (130, 80),\r
303                                                                                            new Point (140, 217)};\r
304                         p.Width = 25;\r
305                         t.Graphics.DrawLines (p, points);\r
306                         t.Graphics.DrawLines (Pens.White, points);\r
307                         t.Show ();\r
308                         Assert.IsTrue (t.Compare (TOLERANCE));\r
309                 }\r
310                 [Test]\r
311                 public void LineJoinTest_MiterClipped_3 () {\r
312                         p.LineJoin = LineJoin.MiterClipped;\r
313                         Point [] points = new Point [] {\r
314                                                                           new Point(50, 217), new Point (100, 100),\r
315                                                                           new Point (150, 217)};\r
316                         p.Width = 25;\r
317                         t.Graphics.DrawLines (p, points);\r
318                         t.Graphics.DrawLines (Pens.White, points);\r
319                         t.Show ();\r
320                         Assert.IsTrue (t.Compare (TOLERANCE));\r
321                 }\r
322                 #endregion\r
323 \r
324                 #region "LineJoin Bevel"\r
325                 [Test]\r
326                 public void LineJoinTest_Bevel_1 () {\r
327                         p.LineJoin = LineJoin.Bevel;\r
328                         Point [] points = new Point [] {\r
329                                                                                            new Point(90, 217), new Point (115, 55),\r
330                                                                                            new Point (140, 217)};\r
331                         p.Width = 25;\r
332                         t.Graphics.DrawLines (p, points);\r
333                         t.Graphics.DrawLines (Pens.White, points);\r
334                         t.Show ();\r
335                         Assert.IsTrue (t.Compare (TOLERANCE));\r
336                 }\r
337                 [Test]\r
338                 public void LineJoinTest_Bevel_2 () {\r
339                         p.LineJoin = LineJoin.Bevel;\r
340                         Point [] points = new Point [] {\r
341                                                                           new Point(110, 217), new Point (120, 75),\r
342                                                                           new Point (130, 217)};\r
343                         p.Width = 25;\r
344                         t.Graphics.DrawLines (p, points);\r
345                         t.Graphics.DrawLines (Pens.White, points);\r
346                         t.Show ();\r
347                         Assert.IsTrue (t.Compare (TOLERANCE));\r
348                 }\r
349                 [Test]\r
350                 public void LineJoinTest_Bevel_3 () {\r
351                         p.LineJoin = LineJoin.Bevel;\r
352                         Point [] points = new Point [] {\r
353                                                                           new Point(50, 217), new Point (100, 100),\r
354                                                                           new Point (150, 217)};\r
355                         p.Width = 25;\r
356                         t.Graphics.DrawLines (p, points);\r
357                         t.Graphics.DrawLines (Pens.White, points);\r
358                         t.Show ();\r
359                         Assert.IsTrue (t.Compare (TOLERANCE));\r
360                 }\r
361                 [Test]\r
362                 public void LineJoinTest_Bevel_4 () {\r
363                         p.LineJoin = LineJoin.Bevel;\r
364                         Point [] points = new Point [] {\r
365                                                                           new Point(143, 210), new Point (170, 100),\r
366                                                                           new Point (180, 20)};\r
367                         p.Width = 25;\r
368                         t.Graphics.DrawLines (p, points);\r
369                         t.Graphics.DrawLines (Pens.White, points);\r
370                         t.Show ();\r
371                         Assert.IsTrue (t.Compare (TOLERANCE));\r
372                 }\r
373                 [Test]\r
374                 public void LineJoinTest_Bevel_5 () {\r
375                         p.LineJoin = LineJoin.Bevel;\r
376                         Point [] points = new Point [] {\r
377                                                                           new Point(50, 100), new Point (150, 100),\r
378                                                                           new Point (150, 20), new Point (200, 20)};\r
379                         p.Width = 25;\r
380                         t.Graphics.DrawLines (p, points);\r
381                         t.Graphics.DrawLines (Pens.White, points);\r
382                         t.Show ();\r
383                         Assert.IsTrue (t.Compare (TOLERANCE));\r
384                 }\r
385                 #endregion\r
386 \r
387                 #region PenAlignment\r
388                 [Test]\r
389                 public void PenAlignmentTest_1 () {\r
390                         Assert.AreEqual (PenAlignment.Center, p.Alignment);\r
391                         Point [] points = new Point [] {\r
392                                                                                            new Point (30, 30), new Point (100, 100), new Point (170, 30),\r
393                                                                                            new Point (170, 200), new Point (30, 200)};\r
394                         GraphicsPath path = new GraphicsPath ();\r
395                         path.AddPolygon (points);\r
396 \r
397                         p.Width = 25;\r
398                         t.Graphics.DrawPath (p, path);\r
399                         t.Graphics.DrawPath (Pens.White, path);\r
400                         t.Show ();\r
401                         Assert.IsTrue (t.Compare (TOLERANCE));\r
402                 }\r
403                 [Test]\r
404                 public void PenAlignmentTest_2 () {\r
405                         Point [] points = new Point [] {\r
406                                                                                            new Point (30, 30), new Point (100, 100), new Point (170, 30),\r
407                                                                                            new Point (170, 200), new Point (30, 200)};\r
408                         GraphicsPath path = new GraphicsPath ();\r
409                         path.AddPolygon (points);\r
410 \r
411                         p.Width = 25;\r
412                         p.Alignment = PenAlignment.Left;\r
413                         t.Graphics.DrawPath (p, path);\r
414                         t.Graphics.DrawPath (Pens.White, path);\r
415                         t.Show ();\r
416                         Assert.IsTrue (t.Compare (TOLERANCE));\r
417                 }\r
418 \r
419                 [Test]\r
420 #if TARGET_JVM\r
421                 [Category ("NotWorking")] //FIXME: Bug in pen aligment\r
422 #endif\r
423                 public void PenAlignmentTest_3 () {\r
424                         Point [] points = new Point [] {\r
425                                                                                            new Point (30, 30), new Point (100, 100), new Point (170, 30),\r
426                                                                                            new Point (170, 200), new Point (30, 200)};\r
427                         GraphicsPath path = new GraphicsPath ();\r
428                         path.AddPolygon (points);\r
429 \r
430                         p.Width = 25;\r
431                         p.Alignment = PenAlignment.Inset;\r
432                         t.Graphics.DrawPath (p, path);\r
433                         t.Graphics.DrawPath (Pens.White, path);\r
434                         t.Show ();\r
435                         Assert.IsTrue (t.Compare (TOLERANCE));\r
436                 }\r
437 \r
438                 [Test]\r
439                 public void PenAlignmentTest_4 () {\r
440                         Point [] points = new Point [] {\r
441                                                                                            new Point (30, 30), new Point (100, 100), new Point (170, 30),\r
442                                                                                            new Point (170, 200), new Point (30, 200)};\r
443                         GraphicsPath path = new GraphicsPath ();\r
444                         path.AddPolygon (points);\r
445 \r
446                         p.Width = 25;\r
447                         p.Alignment = PenAlignment.Outset;\r
448                         t.Graphics.DrawPath (p, path);\r
449                         t.Graphics.DrawPath (Pens.White, path);\r
450                         t.Show ();\r
451                         Assert.IsTrue (t.Compare (TOLERANCE));\r
452                 }\r
453 \r
454                 [Test]\r
455                 public void PenAlignmentTest_5 () {\r
456                         Point [] points = new Point [] {\r
457                                                                                            new Point (30, 30), new Point (100, 100), new Point (170, 30),\r
458                                                                                            new Point (170, 200), new Point (30, 200)};\r
459                         GraphicsPath path = new GraphicsPath ();\r
460                         path.AddPolygon (points);\r
461 \r
462                         p.Width = 25;\r
463                         p.Alignment = PenAlignment.Right;\r
464                         t.Graphics.DrawPath (p, path);\r
465                         t.Graphics.DrawPath (Pens.White, path);\r
466                         t.Show ();\r
467                         Assert.IsTrue (t.Compare (TOLERANCE));\r
468                 }\r
469                 #endregion\r
470                 \r
471                 #region Color test\r
472                 [Test]\r
473                 public void ColorTest_1 () {\r
474                         Assert.AreEqual (Color.Blue, p.Color);\r
475                         p.Width = 25;\r
476                         t.Graphics.DrawLine (p, 10, 100, 230, 100);\r
477                         t.Show ();\r
478                         Assert.IsTrue (t.Compare (TOLERANCE));\r
479                 }\r
480                 [Test]\r
481                 public void ColorTest_2 () {\r
482                         p.Color = Color.Red;\r
483                         p.Width = 25;\r
484                         t.Graphics.DrawLine (p, 10, 100, 230, 100);\r
485                         t.Show ();\r
486                         Assert.IsTrue (t.Compare (TOLERANCE));\r
487                 }\r
488                 [Test]\r
489                 public void ColorTest_3 () {\r
490                         p.Color = Color.BurlyWood;\r
491                         p.Width = 25;\r
492                         t.Graphics.DrawLine (p, 10, 100, 230, 100);\r
493                         t.Show ();\r
494                         Assert.IsTrue (t.Compare (TOLERANCE));\r
495                 }\r
496                 [Test]\r
497                 public void ColorTest_4 () {\r
498                         p.Color = Color.FromArgb (100, 120, 255);\r
499                         p.Width = 25;\r
500                         t.Graphics.DrawLine (p, 10, 100, 230, 100);\r
501                         t.Show ();\r
502                         Assert.IsTrue (t.Compare (TOLERANCE));\r
503                 }\r
504                 [Test]\r
505                 public void ColorTest_5 () {\r
506                         p.Color = Color.FromArgb (128, Color.White);\r
507                         p.Width = 25;\r
508                         t.Graphics.DrawLine (p, 10, 100, 230, 100);\r
509                         t.Show ();\r
510                         Assert.IsTrue (t.Compare (TOLERANCE));\r
511                 }\r
512                 #endregion\r
513 \r
514                 #region MiterLimit\r
515                 [Test]\r
516                 public void MitterLimit_1 () {\r
517                         p.LineJoin = LineJoin.MiterClipped;\r
518                         Point [] points = new Point [] {new Point (0,30), new Point (180, 30),\r
519                                                                                            new Point (0, 90)};\r
520 \r
521                         p.Width = 25;\r
522                         Assert.AreEqual (10F, p.MiterLimit);\r
523                         t.Graphics.DrawLines (p, points);\r
524                         t.Graphics.DrawLines (Pens.White, points);\r
525                         t.Show ();\r
526                         Assert.IsTrue (t.Compare (TOLERANCE));\r
527                 }\r
528                 [Test]\r
529                 public void MitterLimit_2 () {\r
530                         p.MiterLimit=1F;\r
531                         p.LineJoin = LineJoin.MiterClipped;\r
532                         Point [] points = new Point [] {new Point (0,30), new Point (180, 30),\r
533                                                                                            new Point (0, 120)};\r
534 \r
535                         p.Width = 25;\r
536                         t.Graphics.DrawLines (p, points);\r
537                         t.Graphics.DrawLines (Pens.White, points);\r
538                         t.Show ();\r
539                         Assert.IsTrue (t.Compare (TOLERANCE));\r
540                 }\r
541                 #endregion\r
542 \r
543                 #region TRansform\r
544                 [Test]\r
545                 public void Transform () {\r
546                         p.ScaleTransform (0.5F, 2);\r
547                         t.Graphics.DrawArc (p, 70, 70, 100, 100, 0, 360);\r
548                         t.Graphics.DrawArc (Pens.White, 70, 70, 100, 100, 0, 360);\r
549                         t.Show ();\r
550                         Assert.IsTrue (t.Compare (TOLERANCE));\r
551                 }\r
552                 #endregion\r
553                 \r
554                 #region Line StartCap\r
555                 [Test]\r
556 #if TARGET_JVM\r
557                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
558 #endif\r
559                 public void StartCap_Flat() {\r
560                         Assert.AreEqual(LineCap.Flat, p.StartCap);\r
561                         p.StartCap = LineCap.Flat;\r
562                         p.Width = 25;\r
563                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
564                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
565                         t.Show ();\r
566                         Assert.IsTrue (t.Compare (TOLERANCE));\r
567                 }\r
568                 [Test]\r
569 #if TARGET_JVM\r
570                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
571 #endif\r
572                 public void StartCap_Round() {\r
573                         p.StartCap = LineCap.Round;\r
574                         p.Width = 25;\r
575                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
576                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
577                         t.Show ();\r
578                         Assert.IsTrue (t.Compare (TOLERANCE));\r
579                 }\r
580                 [Test]\r
581 #if TARGET_JVM\r
582                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
583 #endif\r
584                 public void StartCap_Square() {\r
585                         p.StartCap = LineCap.Square;\r
586                         p.Width = 25;\r
587                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
588                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
589                         t.Show ();\r
590                         Assert.IsTrue (t.Compare (TOLERANCE));\r
591                 }\r
592                 [Test]\r
593 #if TARGET_JVM\r
594                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
595 #endif\r
596                 public void StartCap_AnchorMask() {\r
597                         p.StartCap = LineCap.AnchorMask;\r
598                         p.Width = 25;\r
599                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
600                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
601                         t.Show ();\r
602                         Assert.IsTrue (t.Compare (TOLERANCE));\r
603                 }\r
604                 [Test]\r
605 #if TARGET_JVM\r
606                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
607 #endif\r
608                 public void StartCap_ArrowAnchor() {\r
609                         p.StartCap = LineCap.ArrowAnchor;\r
610                         p.Width = 25;\r
611                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
612                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
613                         t.Show ();\r
614                         Assert.IsTrue (t.Compare (TOLERANCE));\r
615                 }\r
616                 [Test]\r
617 #if TARGET_JVM\r
618                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
619 #endif\r
620                 public void StartCap_DiamondAnchor() {\r
621                         p.StartCap = LineCap.DiamondAnchor;\r
622                         p.Width = 25;\r
623                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
624                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
625                         t.Show ();\r
626                         Assert.IsTrue (t.Compare (TOLERANCE));\r
627                 }\r
628                 [Test]\r
629 #if TARGET_JVM\r
630                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
631 #endif\r
632                 public void StartCap_NoAnchor() {\r
633                         p.StartCap = LineCap.NoAnchor;\r
634                         p.Width = 25;\r
635                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
636                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
637                         t.Show ();\r
638                         Assert.IsTrue (t.Compare (TOLERANCE));\r
639                 }\r
640                 [Test]\r
641 #if TARGET_JVM\r
642                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
643 #endif\r
644                 public void StartCap_RoundAnchor() {\r
645                         p.StartCap = LineCap.RoundAnchor;\r
646                         p.Width = 25;\r
647                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
648                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
649                         t.Show ();\r
650                         Assert.IsTrue (t.Compare (TOLERANCE));\r
651                 }\r
652                 [Test]\r
653 #if TARGET_JVM\r
654                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
655 #endif\r
656                 public void StartCap_SquareAnchor() {\r
657                         p.StartCap = LineCap.SquareAnchor;\r
658                         p.Width = 25;\r
659                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
660                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
661                         t.Show ();\r
662                         Assert.IsTrue (t.Compare (TOLERANCE));\r
663                 }\r
664                 [Test]\r
665 #if TARGET_JVM\r
666                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
667 #endif\r
668                 public void StartCap_Triangle() {\r
669                         p.StartCap = LineCap.Triangle;\r
670                         p.Width = 25;\r
671                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
672                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
673                         t.Show ();\r
674                         Assert.IsTrue (t.Compare (TOLERANCE));\r
675                 }\r
676                 [Test]\r
677 #if TARGET_JVM\r
678                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
679 #endif\r
680                 public void StartCap_Custom() {\r
681                         p.StartCap = LineCap.Custom;\r
682                         p.Width = 25;\r
683                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
684                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
685                         t.Show ();\r
686                         Assert.IsTrue (t.Compare (TOLERANCE));\r
687                 }\r
688                 #endregion\r
689 \r
690                 #region Line EndCap\r
691                 [Test]\r
692 #if TARGET_JVM\r
693                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
694 #endif\r
695                 public void EndCap_Flat() \r
696                 {\r
697                         Assert.AreEqual(LineCap.Flat, p.EndCap);\r
698                         p.EndCap = LineCap.Flat;\r
699                         p.Width = 25;\r
700                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
701                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
702                         t.Show ();\r
703                         Assert.IsTrue (t.Compare (TOLERANCE));\r
704                 }\r
705                 [Test]\r
706 #if TARGET_JVM\r
707                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
708 #endif\r
709                 public void EndCap_Round() \r
710                 {\r
711                         p.EndCap = LineCap.Round;\r
712                         p.Width = 25;\r
713                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
714                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
715                         t.Show ();\r
716                         Assert.IsTrue (t.Compare (TOLERANCE));\r
717                 }\r
718                 [Test]\r
719 #if TARGET_JVM\r
720                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
721 #endif\r
722                 public void EndCap_Square() {\r
723                         p.EndCap = LineCap.Square;\r
724                         p.Width = 25;\r
725                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
726                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
727                         t.Show ();\r
728                         Assert.IsTrue (t.Compare (TOLERANCE));\r
729                 }\r
730                 [Test]\r
731 #if TARGET_JVM\r
732                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
733 #endif\r
734                 public void EndCap_AnchorMask() {\r
735                         p.EndCap = LineCap.AnchorMask;\r
736                         p.Width = 25;\r
737                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
738                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
739                         t.Show ();\r
740                         Assert.IsTrue (t.Compare (TOLERANCE));\r
741                 }\r
742                 [Test]\r
743 #if TARGET_JVM\r
744                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
745 #endif\r
746                 public void EndCap_ArrowAnchor() {\r
747                         p.EndCap = LineCap.ArrowAnchor;\r
748                         p.Width = 25;\r
749                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
750                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
751                         t.Show ();\r
752                         Assert.IsTrue (t.Compare (TOLERANCE));\r
753                 }\r
754                 [Test]\r
755 #if TARGET_JVM\r
756                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
757 #endif\r
758                 public void EndCap_DiamondAnchor() {\r
759                         p.EndCap = LineCap.DiamondAnchor;\r
760                         p.Width = 25;\r
761                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
762                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
763                         t.Show ();\r
764                         Assert.IsTrue (t.Compare (TOLERANCE));\r
765                 }\r
766                 [Test]\r
767 #if TARGET_JVM\r
768                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
769 #endif\r
770                 public void EndCap_NoAnchor() {\r
771                         p.EndCap = LineCap.NoAnchor;\r
772                         p.Width = 25;\r
773                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
774                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
775                         t.Show ();\r
776                         Assert.IsTrue (t.Compare (TOLERANCE));\r
777                 }\r
778                 [Test]\r
779 #if TARGET_JVM\r
780                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
781 #endif\r
782                 public void EndCap_RoundAnchor() {\r
783                         p.EndCap = LineCap.RoundAnchor;\r
784                         p.Width = 25;\r
785                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
786                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
787                         t.Show ();\r
788                         Assert.IsTrue (t.Compare (TOLERANCE));\r
789                 }\r
790                 [Test]\r
791 #if TARGET_JVM\r
792                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
793 #endif\r
794                 public void EndCap_SquareAnchor() {\r
795                         p.EndCap = LineCap.SquareAnchor;\r
796                         p.Width = 25;\r
797                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
798                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
799                         t.Show ();\r
800                         Assert.IsTrue (t.Compare (TOLERANCE));\r
801                 }\r
802                 [Test]\r
803 #if TARGET_JVM\r
804                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
805 #endif\r
806                 public void EndCap_Triangle() {\r
807                         p.EndCap = LineCap.Triangle;\r
808                         p.Width = 25;\r
809                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
810                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
811                         t.Show ();\r
812                         Assert.IsTrue (t.Compare (TOLERANCE));\r
813                 }\r
814                 [Test]\r
815 #if TARGET_JVM\r
816                 [Category ("NotWorking")] //FIXME: cannot apply start or end line caps separately\r
817 #endif\r
818                 public void EndCap_Custom() {\r
819                         p.EndCap = LineCap.Custom;\r
820                         p.Width = 25;\r
821                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
822                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
823                         t.Show ();\r
824                         Assert.IsTrue (t.Compare (TOLERANCE));\r
825                 }\r
826                 #endregion\r
827 \r
828                 #region Basic LineCaps StartEnd\r
829                 [Test]\r
830                 public void StartEndCapBasic_Flat() {\r
831                         Assert.AreEqual(LineCap.Flat, p.StartCap);\r
832 \r
833                         p.Width = 21;\r
834                         p.EndCap = LineCap.Flat;\r
835                         p.StartCap = LineCap.Flat;\r
836                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
837                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
838                         t.Show ();\r
839                         Assert.IsTrue (t.Compare (TOLERANCE));\r
840                 }\r
841                 [Test]\r
842                 public void StartEndCapBasic_Round() {\r
843                         p.Width = 21;\r
844                         p.EndCap = LineCap.Round;\r
845                         p.StartCap = LineCap.Round;\r
846                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
847                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
848                         t.Show ();\r
849                         Assert.IsTrue (t.Compare (TOLERANCE));\r
850                 }\r
851                 [Test]\r
852                 public void StartEndCapBasic_Square() {\r
853                         p.Width = 21;\r
854                         p.EndCap = LineCap.Square;\r
855                         p.StartCap = LineCap.Square;\r
856                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
857                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
858                         t.Show ();\r
859                         Assert.IsTrue (t.Compare (TOLERANCE));\r
860                 }\r
861                 [Test]\r
862                 public void SetLineCap_Flat() {\r
863                         Assert.AreEqual(LineCap.Flat, p.StartCap);\r
864 \r
865                         p.Width = 21;\r
866                         p.SetLineCap(LineCap.Flat, LineCap.Flat, DashCap.Flat);\r
867                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
868                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
869                         t.Show ();\r
870                         Assert.IsTrue (t.Compare (TOLERANCE));\r
871                 }\r
872                 [Test]\r
873                 public void SetLineCap_Round() {\r
874                         p.Width = 21;\r
875                         p.SetLineCap(LineCap.Round, LineCap.Round, DashCap.Round);\r
876                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
877                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
878                         t.Show ();\r
879                         Assert.IsTrue (t.Compare (TOLERANCE));\r
880                 }\r
881                 [Test]\r
882                 public void SetLineCap_Square() {\r
883                         p.Width = 21;\r
884                         p.SetLineCap(LineCap.Square, LineCap.Square, DashCap.Flat);\r
885                         t.Graphics.DrawLine (p, 50, 100, 150, 100);\r
886                         t.Graphics.DrawLine (Pens.White, 50, 100, 150, 100);\r
887                         t.Show ();\r
888                         Assert.IsTrue (t.Compare (TOLERANCE));\r
889                 }\r
890                 #endregion\r
891         }\r
892 }\r