2005-10-04 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System.Drawing / Test / DrawingTest / Test / Pens.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 using System.Reflection;\r
7 \r
8 namespace Test.Sys.Drawing\r
9 {\r
10         /// <summary>\r
11         /// Summary description for Pens.\r
12         /// </summary>\r
13         \r
14         [TestFixture]\r
15         public class PensFixture\r
16         {\r
17 \r
18                 [SetUp]\r
19                 public void SetUp () \r
20                 {\r
21                 }\r
22 \r
23                 #region names array\r
24                 private string [] ar_pens = {\r
25                                                                            "Transparent",\r
26                                                                            "AliceBlue",\r
27                                                                            "AntiqueWhite",\r
28                                                                            "Aqua",\r
29                                                                            "Aquamarine",\r
30                                                                            "Azure",\r
31                                                                            "Beige",\r
32                                                                            "Bisque",\r
33                                                                            "Black",\r
34                                                                            "BlanchedAlmond",\r
35                                                                            "Blue",\r
36                                                                            "BlueViolet",\r
37                                                                            "Brown",\r
38                                                                            "BurlyWood",\r
39                                                                            "CadetBlue",\r
40                                                                            "Chartreuse",\r
41                                                                            "Chocolate",\r
42                                                                            "Coral",\r
43                                                                            "CornflowerBlue",\r
44                                                                            "Cornsilk",\r
45                                                                            "Crimson",\r
46                                                                            "Cyan",\r
47                                                                            "DarkBlue",\r
48                                                                            "DarkCyan",\r
49                                                                            "DarkGoldenrod",\r
50                                                                            "DarkGray",\r
51                                                                            "DarkGreen",\r
52                                                                            "DarkKhaki",\r
53                                                                            "DarkMagenta",\r
54                                                                            "DarkOliveGreen",\r
55                                                                            "DarkOrange",\r
56                                                                            "DarkOrchid",\r
57                                                                            "DarkRed",\r
58                                                                            "DarkSalmon",\r
59                                                                            "DarkSeaGreen",\r
60                                                                            "DarkSlateBlue",\r
61                                                                            "DarkSlateGray",\r
62                                                                            "DarkTurquoise",\r
63                                                                            "DarkViolet",\r
64                                                                            "DeepPink",\r
65                                                                            "DeepSkyBlue",\r
66                                                                            "DimGray",\r
67                                                                            "DodgerBlue",\r
68                                                                            "Firebrick",\r
69                                                                            "FloralWhite",\r
70                                                                            "ForestGreen",\r
71                                                                            "Fuchsia",\r
72                                                                            "Gainsboro",\r
73                                                                            "GhostWhite",\r
74                                                                            "Gold",\r
75                                                                            "Goldenrod",\r
76                                                                            "Gray",\r
77                                                                            "Green",\r
78                                                                            "GreenYellow",\r
79                                                                            "Honeydew",\r
80                                                                            "HotPink",\r
81                                                                            "IndianRed",\r
82                                                                            "Indigo",\r
83                                                                            "Ivory",\r
84                                                                            "Khaki",\r
85                                                                            "Lavender",\r
86                                                                            "LavenderBlush",\r
87                                                                            "LawnGreen",\r
88                                                                            "LemonChiffon",\r
89                                                                            "LightBlue",\r
90                                                                            "LightCoral",\r
91                                                                            "LightCyan",\r
92                                                                            "LightGoldenrodYellow",\r
93                                                                            "LightGreen",\r
94                                                                            "LightGray",\r
95                                                                            "LightPink",\r
96                                                                            "LightSalmon",\r
97                                                                            "LightSeaGreen",\r
98                                                                            "LightSkyBlue",\r
99                                                                            "LightSlateGray",\r
100                                                                            "LightSteelBlue",\r
101                                                                            "LightYellow",\r
102                                                                            "Lime",\r
103                                                                            "LimeGreen",\r
104                                                                            "Linen",\r
105                                                                            "Magenta",\r
106                                                                            "Maroon",\r
107                                                                            "MediumAquamarine",\r
108                                                                            "MediumBlue",\r
109                                                                            "MediumOrchid",\r
110                                                                            "MediumPurple",\r
111                                                                            "MediumSeaGreen",\r
112                                                                            "MediumSlateBlue",\r
113                                                                            "MediumSpringGreen",\r
114                                                                            "MediumTurquoise",\r
115                                                                            "MediumVioletRed",\r
116                                                                            "MidnightBlue",\r
117                                                                            "MintCream",\r
118                                                                            "MistyRose",\r
119                                                                            "Moccasin",\r
120                                                                            "NavajoWhite",\r
121                                                                            "Navy",\r
122                                                                            "OldLace",\r
123                                                                            "Olive",\r
124                                                                            "OliveDrab",\r
125                                                                            "Orange",\r
126                                                                            "OrangeRed",\r
127                                                                            "Orchid",\r
128                                                                            "PaleGoldenrod",\r
129                                                                            "PaleGreen",\r
130                                                                            "PaleTurquoise",\r
131                                                                            "PaleVioletRed",\r
132                                                                            "PapayaWhip",\r
133                                                                            "PeachPuff",\r
134                                                                            "Peru",\r
135                                                                            "Pink",\r
136                                                                            "Plum",\r
137                                                                            "PowderBlue",\r
138                                                                            "Purple",\r
139                                                                            "Red",\r
140                                                                            "RosyBrown",\r
141                                                                            "RoyalBlue",\r
142                                                                            "SaddleBrown",\r
143                                                                            "Salmon",\r
144                                                                            "SandyBrown",\r
145                                                                            "SeaGreen",\r
146                                                                            "SeaShell",\r
147                                                                            "Sienna",\r
148                                                                            "Silver",\r
149                                                                            "SkyBlue",\r
150                                                                            "SlateBlue",\r
151                                                                            "SlateGray",\r
152                                                                            "Snow",\r
153                                                                            "SpringGreen",\r
154                                                                            "SteelBlue",\r
155                                                                            "Tan",\r
156                                                                            "Teal",\r
157                                                                            "Thistle",\r
158                                                                            "Tomato",\r
159                                                                            "Turquoise",\r
160                                                                            "Violet",\r
161                                                                            "Wheat",\r
162                                                                            "White",\r
163                                                                            "WhiteSmoke",\r
164                                                                            "Yellow",\r
165                                                                            "YellowGreen"};\r
166 \r
167                 string [] ar_system_pens = {\r
168                                                                            "ActiveCaptionText",\r
169                                                                            "Control",\r
170                                                                            "ControlText",\r
171                                                                            "ControlDark",\r
172                                                                            "ControlDarkDark",\r
173                                                                            "ControlLight",\r
174                                                                            "ControlLightLight",\r
175                                                                            "GrayText",\r
176                                                                            "Highlight",\r
177                                                                            "HighlightText",\r
178                                                                            "InactiveCaptionText",\r
179                                                                            "InfoText",\r
180                                                                            "MenuText",\r
181                                                                            "WindowFrame",\r
182                                                                            "WindowText"};\r
183                 #endregion\r
184 \r
185 \r
186                 [Test]\r
187                 public void PensPropertyCount()\r
188                 {\r
189                         Type t = typeof(Pens);\r
190                         PropertyInfo [] pi = t.GetProperties(BindingFlags.Static | BindingFlags.Public);\r
191 \r
192                         int i = 0;\r
193                         foreach (PropertyInfo p in pi)\r
194                         {\r
195                                 if (p.PropertyType == typeof(Pen))\r
196                                 {\r
197                                         i++;\r
198                                 }\r
199                         }\r
200                         Assert.AreEqual(ar_pens.Length, i, "Number of Pens");\r
201                 }\r
202 \r
203                 [Test]\r
204                 public void SystemPensPropertyCount()\r
205                 {\r
206                         Type t = typeof(SystemPens);\r
207                         PropertyInfo [] pi = t.GetProperties(BindingFlags.Static | BindingFlags.Public);\r
208 \r
209                         int i = 0;\r
210                         foreach (PropertyInfo p in pi)\r
211                         {\r
212                                 if (p.PropertyType == typeof(Pen))\r
213                                 {\r
214                                         i++;\r
215                                 }\r
216                         }\r
217                         Assert.AreEqual(ar_system_pens.Length, i, "Number of System Pens");\r
218                 }\r
219 \r
220                 [Test]\r
221                 public void PensProperties () \r
222                 {\r
223                         Type t = typeof(Pens);\r
224                         foreach (string s in ar_pens)\r
225                         {\r
226                                 MemberInfo [] mi = t.GetMember(s);\r
227 \r
228                                 if (mi.Length == 1)\r
229                                 {\r
230                                         if (mi[0].MemberType == MemberTypes.Property)\r
231                                         {\r
232                                                 PropertyInfo p = (PropertyInfo)mi[0];\r
233                                                 Pen pen = (Pen)p.GetValue(null, null);\r
234                                                 Assert.AreEqual("Color [" + s + "]", pen.Color.ToString());\r
235                                         }\r
236                                         else\r
237                                         {\r
238                                                 Assert.Fail(s + " is not property of Pens class");\r
239                                         }\r
240                                 }\r
241                                 else \r
242                                 {\r
243                                         Assert.Fail("Property " + s + " not found in Pens class");\r
244                                 }\r
245                         }\r
246                 }\r
247 \r
248                 [Test]\r
249                 public void SystemPensProperties () \r
250                 {\r
251                         Type t = typeof(SystemPens);\r
252                         foreach (string s in ar_system_pens)\r
253                         {\r
254                                 MemberInfo [] mi = t.GetMember(s);\r
255 \r
256                                 if (mi.Length == 1)\r
257                                 {\r
258                                         if (mi[0].MemberType == MemberTypes.Property)\r
259                                         {\r
260                                                 PropertyInfo p = (PropertyInfo)mi[0];\r
261                                                 Pen pen = (Pen)p.GetValue(null, null);\r
262                                                 Assert.AreEqual("Color [" + s + "]", pen.Color.ToString());\r
263                                         }\r
264                                         else\r
265                                         {\r
266                                                 Assert.Fail(s + " is not property of SystemPens class");\r
267                                         }\r
268                                 }\r
269                                 else \r
270                                 {\r
271                                         Assert.Fail("Property " + s + " not found in SystemPens class");\r
272                                 }\r
273                         }\r
274                 }\r
275 \r
276                 [Test]\r
277                 public void PenAssignValue () \r
278                 {\r
279                         Type t = typeof(Pens);\r
280                         foreach (string s in ar_pens)\r
281                         {\r
282                                 MemberInfo [] mi = t.GetMember(s);\r
283 \r
284                                 if (mi.Length == 1)\r
285                                 {\r
286                                         if (mi[0].MemberType == MemberTypes.Property)\r
287                                         {\r
288                                                 PropertyInfo p = (PropertyInfo)mi[0];\r
289                                                 Pen pen = (Pen)p.GetValue(null, null);\r
290 \r
291                                                 try\r
292                                                 {\r
293                                                         pen.Color = Color.AliceBlue;\r
294                                                         Assert.Fail("Pen.Color must throw exception");\r
295                                                 }\r
296                                                 catch(ArgumentException)\r
297                                                 {\r
298                                                         Assert.IsTrue(true);\r
299                                                 }\r
300                                         }\r
301                                         else\r
302                                         {\r
303                                                 Assert.Fail(s + " is not property of Pens class");\r
304                                         }\r
305                                 }\r
306                                 else \r
307                                 {\r
308                                         Assert.Fail("Property " + s + " not found in Pens class");\r
309                                 }\r
310                         }\r
311                 }\r
312 \r
313                 [Test]\r
314                 public void SystemPenAssignValue () \r
315                 {\r
316                         Type t = typeof(SystemPens);\r
317                         foreach (string s in ar_system_pens)\r
318                         {\r
319                                 MemberInfo [] mi = t.GetMember(s);\r
320 \r
321                                 if (mi.Length == 1)\r
322                                 {\r
323                                         if (mi[0].MemberType == MemberTypes.Property)\r
324                                         {\r
325                                                 PropertyInfo p = (PropertyInfo)mi[0];\r
326                                                 Pen pen = (Pen)p.GetValue(null, null);\r
327 \r
328                                                 try\r
329                                                 {\r
330                                                         pen.Color = Color.AliceBlue;\r
331                                                         Assert.Fail("SystemPen.Color must throw exception");\r
332                                                 }\r
333                                                 catch(ArgumentException)\r
334                                                 {\r
335                                                         Assert.IsTrue(true);\r
336                                                 }\r
337                                         }\r
338                                         else\r
339                                         {\r
340                                                 Assert.Fail(s + " is not property of SystemPen class");\r
341                                         }\r
342                                 }\r
343                                 else \r
344                                 {\r
345                                         Assert.Fail("Property " + s + " not found in SystemPen class");\r
346                                 }\r
347                         }\r
348                 }\r
349         }\r
350 }\r