* PEAPI.cs: Clean up indentation. Split into ...
[mono.git] / mcs / class / System.Drawing / Test / System.Drawing / TestColor.cs
1 //
2 // Tests for System.Drawing.Color.cs
3 //
4 // Author:
5 //      Ravindra (rkumar@novell.com)
6 //
7
8 //
9 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
10 //
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
18 // 
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
21 // 
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30
31
32 using System;
33 using System.Drawing;
34 using System.Security.Permissions;
35 using NUnit.Framework;
36
37 namespace MonoTests.System.Drawing
38 {
39         [TestFixture]
40         [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
41         public class ColorTest : Assertion
42         {
43                 [SetUp]
44                 public void GetReady () { }
45
46                 [TearDown]
47                 public void Clean () { }
48
49                 [Test]
50                 public void TestArgbValues ()
51                 {
52                         Color color;
53
54                         color = Color.Transparent;
55                         AssertEquals ("#Transparent.A", 0, color.A);
56                         AssertEquals ("#Transparent.R", 255, color.R);
57                         AssertEquals ("#Transparent.G", 255, color.G);
58                         AssertEquals ("#Transparent.B", 255, color.B);
59
60                         color = Color.AliceBlue;
61                         AssertEquals ("#AliceBlue.A", 255, color.A);
62                         AssertEquals ("#AliceBlue.R", 240, color.R);
63                         AssertEquals ("#AliceBlue.G", 248, color.G);
64                         AssertEquals ("#AliceBlue.B", 255, color.B);
65
66                         color = Color.AntiqueWhite;
67                         AssertEquals ("#AntiqueWhite.A", 255, color.A);
68                         AssertEquals ("#AntiqueWhite.R", 250, color.R);
69                         AssertEquals ("#AntiqueWhite.G", 235, color.G);
70                         AssertEquals ("#AntiqueWhite.B", 215, color.B);
71
72                         color = Color.Aqua;
73                         AssertEquals ("#Aqua.A", 255, color.A);
74                         AssertEquals ("#Aqua.R", 0, color.R);
75                         AssertEquals ("#Aqua.G", 255, color.G);
76                         AssertEquals ("#Aqua.B", 255, color.B);
77
78                         color = Color.Aquamarine;
79                         AssertEquals ("#Aquamarine.A", 255, color.A);
80                         AssertEquals ("#Aquamarine.R", 127, color.R);
81                         AssertEquals ("#Aquamarine.G", 255, color.G);
82                         AssertEquals ("#Aquamarine.B", 212, color.B);
83
84                         color = Color.Azure;
85                         AssertEquals ("#Azure.A", 255, color.A);
86                         AssertEquals ("#Azure.R", 240, color.R);
87                         AssertEquals ("#Azure.G", 255, color.G);
88                         AssertEquals ("#Azure.B", 255, color.B);
89
90                         color = Color.Beige;
91                         AssertEquals ("#Beige.A", 255, color.A);
92                         AssertEquals ("#Beige.R", 245, color.R);
93                         AssertEquals ("#Beige.G", 245, color.G);
94                         AssertEquals ("#Beige.B", 220, color.B);
95
96                         color = Color.Bisque;
97                         AssertEquals ("#Bisque.A", 255, color.A);
98                         AssertEquals ("#Bisque.R", 255, color.R);
99                         AssertEquals ("#Bisque.G", 228, color.G);
100                         AssertEquals ("#Bisque.B", 196, color.B);
101
102                         color = Color.Black;
103                         AssertEquals ("#Black.A", 255, color.A);
104                         AssertEquals ("#Black.R", 0, color.R);
105                         AssertEquals ("#Black.G", 0, color.G);
106                         AssertEquals ("#Black.B", 0, color.B);
107
108                         color = Color.BlanchedAlmond;
109                         AssertEquals ("#BlanchedAlmond.A", 255, color.A);
110                         AssertEquals ("#BlanchedAlmond.R", 255, color.R);
111                         AssertEquals ("#BlanchedAlmond.G", 235, color.G);
112                         AssertEquals ("#BlanchedAlmond.B", 205, color.B);
113
114                         color = Color.Blue;
115                         AssertEquals ("#Blue.A", 255, color.A);
116                         AssertEquals ("#Blue.R", 0, color.R);
117                         AssertEquals ("#Blue.G", 0, color.G);
118                         AssertEquals ("#Blue.B", 255, color.B);
119
120                         color = Color.BlueViolet;
121                         AssertEquals ("#BlueViolet.A", 255, color.A);
122                         AssertEquals ("#BlueViolet.R", 138, color.R);
123                         AssertEquals ("#BlueViolet.G", 43, color.G);
124                         AssertEquals ("#BlueViolet.B", 226, color.B);
125
126                         color = Color.Brown;
127                         AssertEquals ("#Brown.A", 255, color.A);
128                         AssertEquals ("#Brown.R", 165, color.R);
129                         AssertEquals ("#Brown.G", 42, color.G);
130                         AssertEquals ("#Brown.B", 42, color.B);
131
132                         color = Color.BurlyWood;
133                         AssertEquals ("#BurlyWood.A", 255, color.A);
134                         AssertEquals ("#BurlyWood.R", 222, color.R);
135                         AssertEquals ("#BurlyWood.G", 184, color.G);
136                         AssertEquals ("#BurlyWood.B", 135, color.B);
137
138                         color = Color.CadetBlue;
139                         AssertEquals ("#CadetBlue.A", 255, color.A);
140                         AssertEquals ("#CadetBlue.R", 95, color.R);
141                         AssertEquals ("#CadetBlue.G", 158, color.G);
142                         AssertEquals ("#CadetBlue.B", 160, color.B);
143
144                         color = Color.Chartreuse;
145                         AssertEquals ("#Chartreuse.A", 255, color.A);
146                         AssertEquals ("#Chartreuse.R", 127, color.R);
147                         AssertEquals ("#Chartreuse.G", 255, color.G);
148                         AssertEquals ("#Chartreuse.B", 0, color.B);
149
150                         color = Color.Chocolate;
151                         AssertEquals ("#Chocolate.A", 255, color.A);
152                         AssertEquals ("#Chocolate.R", 210, color.R);
153                         AssertEquals ("#Chocolate.G", 105, color.G);
154                         AssertEquals ("#Chocolate.B", 30, color.B);
155
156                         color = Color.Coral;
157                         AssertEquals ("#Coral.A", 255, color.A);
158                         AssertEquals ("#Coral.R", 255, color.R);
159                         AssertEquals ("#Coral.G", 127, color.G);
160                         AssertEquals ("#Coral.B", 80, color.B);
161
162                         color = Color.CornflowerBlue;
163                         AssertEquals ("#CornflowerBlue.A", 255, color.A);
164                         AssertEquals ("#CornflowerBlue.R", 100, color.R);
165                         AssertEquals ("#CornflowerBlue.G", 149, color.G);
166                         AssertEquals ("#CornflowerBlue.B", 237, color.B);
167
168                         color = Color.Cornsilk;
169                         AssertEquals ("#Cornsilk.A", 255, color.A);
170                         AssertEquals ("#Cornsilk.R", 255, color.R);
171                         AssertEquals ("#Cornsilk.G", 248, color.G);
172                         AssertEquals ("#Cornsilk.B", 220, color.B);
173
174                         color = Color.Crimson;
175                         AssertEquals ("#Crimson.A", 255, color.A);
176                         AssertEquals ("#Crimson.R", 220, color.R);
177                         AssertEquals ("#Crimson.G", 20, color.G);
178                         AssertEquals ("#Crimson.B", 60, color.B);
179
180                         color = Color.Cyan;
181                         AssertEquals ("#Cyan.A", 255, color.A);
182                         AssertEquals ("#Cyan.R", 0, color.R);
183                         AssertEquals ("#Cyan.G", 255, color.G);
184                         AssertEquals ("#Cyan.B", 255, color.B);
185
186                         color = Color.DarkBlue;
187                         AssertEquals ("#DarkBlue.A", 255, color.A);
188                         AssertEquals ("#DarkBlue.R", 0, color.R);
189                         AssertEquals ("#DarkBlue.G", 0, color.G);
190                         AssertEquals ("#DarkBlue.B", 139, color.B);
191
192                         color = Color.DarkCyan;
193                         AssertEquals ("#DarkCyan.A", 255, color.A);
194                         AssertEquals ("#DarkCyan.R", 0, color.R);
195                         AssertEquals ("#DarkCyan.G", 139, color.G);
196                         AssertEquals ("#DarkCyan.B", 139, color.B);
197
198                         color = Color.DarkGoldenrod;
199                         AssertEquals ("#DarkGoldenrod.A", 255, color.A);
200                         AssertEquals ("#DarkGoldenrod.R", 184, color.R);
201                         AssertEquals ("#DarkGoldenrod.G", 134, color.G);
202                         AssertEquals ("#DarkGoldenrod.B", 11, color.B);
203
204                         color = Color.DarkGray;
205                         AssertEquals ("#DarkGray.A", 255, color.A);
206                         AssertEquals ("#DarkGray.R", 169, color.R);
207                         AssertEquals ("#DarkGray.G", 169, color.G);
208                         AssertEquals ("#DarkGray.B", 169, color.B);
209
210                         color = Color.DarkGreen;
211                         AssertEquals ("#DarkGreen.A", 255, color.A);
212                         AssertEquals ("#DarkGreen.R", 0, color.R);
213                         AssertEquals ("#DarkGreen.G", 100, color.G);
214                         AssertEquals ("#DarkGreen.B", 0, color.B);
215
216                         color = Color.DarkKhaki;
217                         AssertEquals ("#DarkKhaki.A", 255, color.A);
218                         AssertEquals ("#DarkKhaki.R", 189, color.R);
219                         AssertEquals ("#DarkKhaki.G", 183, color.G);
220                         AssertEquals ("#DarkKhaki.B", 107, color.B);
221
222                         color = Color.DarkMagenta;
223                         AssertEquals ("#DarkMagenta.A", 255, color.A);
224                         AssertEquals ("#DarkMagenta.R", 139, color.R);
225                         AssertEquals ("#DarkMagenta.G", 0, color.G);
226                         AssertEquals ("#DarkMagenta.B", 139, color.B);
227
228                         color = Color.DarkOliveGreen;
229                         AssertEquals ("#DarkOliveGreen.A", 255, color.A);
230                         AssertEquals ("#DarkOliveGreen.R", 85, color.R);
231                         AssertEquals ("#DarkOliveGreen.G", 107, color.G);
232                         AssertEquals ("#DarkOliveGreen.B", 47, color.B);
233
234                         color = Color.DarkOrange;
235                         AssertEquals ("#DarkOrange.A", 255, color.A);
236                         AssertEquals ("#DarkOrange.R", 255, color.R);
237                         AssertEquals ("#DarkOrange.G", 140, color.G);
238                         AssertEquals ("#DarkOrange.B", 0, color.B);
239
240                         color = Color.DarkOrchid;
241                         AssertEquals ("#DarkOrchid.A", 255, color.A);
242                         AssertEquals ("#DarkOrchid.R", 153, color.R);
243                         AssertEquals ("#DarkOrchid.G", 50, color.G);
244                         AssertEquals ("#DarkOrchid.B", 204, color.B);
245
246                         color = Color.DarkRed;
247                         AssertEquals ("#DarkRed.A", 255, color.A);
248                         AssertEquals ("#DarkRed.R", 139, color.R);
249                         AssertEquals ("#DarkRed.G", 0, color.G);
250                         AssertEquals ("#DarkRed.B", 0, color.B);
251
252                         color = Color.DarkSalmon;
253                         AssertEquals ("#DarkSalmon.A", 255, color.A);
254                         AssertEquals ("#DarkSalmon.R", 233, color.R);
255                         AssertEquals ("#DarkSalmon.G", 150, color.G);
256                         AssertEquals ("#DarkSalmon.B", 122, color.B);
257
258                         color = Color.DarkSeaGreen;
259                         AssertEquals ("#DarkSeaGreen.A", 255, color.A);
260                         AssertEquals ("#DarkSeaGreen.R", 143, color.R);
261                         AssertEquals ("#DarkSeaGreen.G", 188, color.G);
262                         AssertEquals ("#DarkSeaGreen.B", 139, color.B);
263
264                         color = Color.DarkSlateBlue;
265                         AssertEquals ("#DarkSlateBlue.A", 255, color.A);
266                         AssertEquals ("#DarkSlateBlue.R", 72, color.R);
267                         AssertEquals ("#DarkSlateBlue.G", 61, color.G);
268                         AssertEquals ("#DarkSlateBlue.B", 139, color.B);
269
270                         color = Color.DarkSlateGray;
271                         AssertEquals ("#DarkSlateGray.A", 255, color.A);
272                         AssertEquals ("#DarkSlateGray.R", 47, color.R);
273                         AssertEquals ("#DarkSlateGray.G", 79, color.G);
274                         AssertEquals ("#DarkSlateGray.B", 79, color.B);
275
276                         color = Color.DarkTurquoise;
277                         AssertEquals ("#DarkTurquoise.A", 255, color.A);
278                         AssertEquals ("#DarkTurquoise.R", 0, color.R);
279                         AssertEquals ("#DarkTurquoise.G", 206, color.G);
280                         AssertEquals ("#DarkTurquoise.B", 209, color.B);
281
282                         color = Color.DarkViolet;
283                         AssertEquals ("#DarkViolet.A", 255, color.A);
284                         AssertEquals ("#DarkViolet.R", 148, color.R);
285                         AssertEquals ("#DarkViolet.G", 0, color.G);
286                         AssertEquals ("#DarkViolet.B", 211, color.B);
287
288                         color = Color.DeepPink;
289                         AssertEquals ("#DeepPink.A", 255, color.A);
290                         AssertEquals ("#DeepPink.R", 255, color.R);
291                         AssertEquals ("#DeepPink.G", 20, color.G);
292                         AssertEquals ("#DeepPink.B", 147, color.B);
293
294                         color = Color.DeepSkyBlue;
295                         AssertEquals ("#DeepSkyBlue.A", 255, color.A);
296                         AssertEquals ("#DeepSkyBlue.R", 0, color.R);
297                         AssertEquals ("#DeepSkyBlue.G", 191, color.G);
298                         AssertEquals ("#DeepSkyBlue.B", 255, color.B);
299
300                         color = Color.DimGray;
301                         AssertEquals ("#DimGray.A", 255, color.A);
302                         AssertEquals ("#DimGray.R", 105, color.R);
303                         AssertEquals ("#DimGray.G", 105, color.G);
304                         AssertEquals ("#DimGray.B", 105, color.B);
305
306                         color = Color.DodgerBlue;
307                         AssertEquals ("#DodgerBlue.A", 255, color.A);
308                         AssertEquals ("#DodgerBlue.R", 30, color.R);
309                         AssertEquals ("#DodgerBlue.G", 144, color.G);
310                         AssertEquals ("#DodgerBlue.B", 255, color.B);
311
312                         color = Color.Firebrick;
313                         AssertEquals ("#Firebrick.A", 255, color.A);
314                         AssertEquals ("#Firebrick.R", 178, color.R);
315                         AssertEquals ("#Firebrick.G", 34, color.G);
316                         AssertEquals ("#Firebrick.B", 34, color.B);
317
318                         color = Color.FloralWhite;
319                         AssertEquals ("#FloralWhite.A", 255, color.A);
320                         AssertEquals ("#FloralWhite.R", 255, color.R);
321                         AssertEquals ("#FloralWhite.G", 250, color.G);
322                         AssertEquals ("#FloralWhite.B", 240, color.B);
323
324                         color = Color.ForestGreen;
325                         AssertEquals ("#ForestGreen.A", 255, color.A);
326                         AssertEquals ("#ForestGreen.R", 34, color.R);
327                         AssertEquals ("#ForestGreen.G", 139, color.G);
328                         AssertEquals ("#ForestGreen.B", 34, color.B);
329
330                         color = Color.Fuchsia;
331                         AssertEquals ("#Fuchsia.A", 255, color.A);
332                         AssertEquals ("#Fuchsia.R", 255, color.R);
333                         AssertEquals ("#Fuchsia.G", 0, color.G);
334                         AssertEquals ("#Fuchsia.B", 255, color.B);
335
336                         color = Color.Gainsboro;
337                         AssertEquals ("#Gainsboro.A", 255, color.A);
338                         AssertEquals ("#Gainsboro.R", 220, color.R);
339                         AssertEquals ("#Gainsboro.G", 220, color.G);
340                         AssertEquals ("#Gainsboro.B", 220, color.B);
341
342                         color = Color.GhostWhite;
343                         AssertEquals ("#GhostWhite.A", 255, color.A);
344                         AssertEquals ("#GhostWhite.R", 248, color.R);
345                         AssertEquals ("#GhostWhite.G", 248, color.G);
346                         AssertEquals ("#GhostWhite.B", 255, color.B);
347
348                         color = Color.Gold;
349                         AssertEquals ("#Gold.A", 255, color.A);
350                         AssertEquals ("#Gold.R", 255, color.R);
351                         AssertEquals ("#Gold.G", 215, color.G);
352                         AssertEquals ("#Gold.B", 0, color.B);
353
354                         color = Color.Goldenrod;
355                         AssertEquals ("#Goldenrod.A", 255, color.A);
356                         AssertEquals ("#Goldenrod.R", 218, color.R);
357                         AssertEquals ("#Goldenrod.G", 165, color.G);
358                         AssertEquals ("#Goldenrod.B", 32, color.B);
359
360                         color = Color.Gray;
361                         AssertEquals ("#Gray.A", 255, color.A);
362                         AssertEquals ("#Gray.R", 128, color.R);
363                         AssertEquals ("#Gray.G", 128, color.G);
364                         AssertEquals ("#Gray.B", 128, color.B);
365
366                         color = Color.Green;
367                         AssertEquals ("#Green.A", 255, color.A);
368                         AssertEquals ("#Green.R", 0, color.R);
369                         // This test should compare Green.G with 255, but
370                         // MS is using a value of 128 for Green.G
371                         AssertEquals ("#Green.G", 128, color.G);
372                         AssertEquals ("#Green.B", 0, color.B);
373
374                         color = Color.GreenYellow;
375                         AssertEquals ("#GreenYellow.A", 255, color.A);
376                         AssertEquals ("#GreenYellow.R", 173, color.R);
377                         AssertEquals ("#GreenYellow.G", 255, color.G);
378                         AssertEquals ("#GreenYellow.B", 47, color.B);
379
380                         color = Color.Honeydew;
381                         AssertEquals ("#Honeydew.A", 255, color.A);
382                         AssertEquals ("#Honeydew.R", 240, color.R);
383                         AssertEquals ("#Honeydew.G", 255, color.G);
384                         AssertEquals ("#Honeydew.B", 240, color.B);
385
386                         color = Color.HotPink;
387                         AssertEquals ("#HotPink.A", 255, color.A);
388                         AssertEquals ("#HotPink.R", 255, color.R);
389                         AssertEquals ("#HotPink.G", 105, color.G);
390                         AssertEquals ("#HotPink.B", 180, color.B);
391
392                         color = Color.IndianRed;
393                         AssertEquals ("#IndianRed.A", 255, color.A);
394                         AssertEquals ("#IndianRed.R", 205, color.R);
395                         AssertEquals ("#IndianRed.G", 92, color.G);
396                         AssertEquals ("#IndianRed.B", 92, color.B);
397
398                         color = Color.Indigo;
399                         AssertEquals ("#Indigo.A", 255, color.A);
400                         AssertEquals ("#Indigo.R", 75, color.R);
401                         AssertEquals ("#Indigo.G", 0, color.G);
402                         AssertEquals ("#Indigo.B", 130, color.B);
403
404                         color = Color.Ivory;
405                         AssertEquals ("#Ivory.A", 255, color.A);
406                         AssertEquals ("#Ivory.R", 255, color.R);
407                         AssertEquals ("#Ivory.G", 255, color.G);
408                         AssertEquals ("#Ivory.B", 240, color.B);
409
410                         color = Color.Khaki;
411                         AssertEquals ("#Khaki.A", 255, color.A);
412                         AssertEquals ("#Khaki.R", 240, color.R);
413                         AssertEquals ("#Khaki.G", 230, color.G);
414                         AssertEquals ("#Khaki.B", 140, color.B);
415
416                         color = Color.Lavender;
417                         AssertEquals ("#Lavender.A", 255, color.A);
418                         AssertEquals ("#Lavender.R", 230, color.R);
419                         AssertEquals ("#Lavender.G", 230, color.G);
420                         AssertEquals ("#Lavender.B", 250, color.B);
421
422                         color = Color.LavenderBlush;
423                         AssertEquals ("#LavenderBlush.A", 255, color.A);
424                         AssertEquals ("#LavenderBlush.R", 255, color.R);
425                         AssertEquals ("#LavenderBlush.G", 240, color.G);
426                         AssertEquals ("#LavenderBlush.B", 245, color.B);
427
428                         color = Color.LawnGreen;
429                         AssertEquals ("#LawnGreen.A", 255, color.A);
430                         AssertEquals ("#LawnGreen.R", 124, color.R);
431                         AssertEquals ("#LawnGreen.G", 252, color.G);
432                         AssertEquals ("#LawnGreen.B", 0, color.B);
433
434                         color = Color.LemonChiffon;
435                         AssertEquals ("#LemonChiffon.A", 255, color.A);
436                         AssertEquals ("#LemonChiffon.R", 255, color.R);
437                         AssertEquals ("#LemonChiffon.G", 250, color.G);
438                         AssertEquals ("#LemonChiffon.B", 205, color.B);
439
440                         color = Color.LightBlue;
441                         AssertEquals ("#LightBlue.A", 255, color.A);
442                         AssertEquals ("#LightBlue.R", 173, color.R);
443                         AssertEquals ("#LightBlue.G", 216, color.G);
444                         AssertEquals ("#LightBlue.B", 230, color.B);
445
446                         color = Color.LightCoral;
447                         AssertEquals ("#LightCoral.A", 255, color.A);
448                         AssertEquals ("#LightCoral.R", 240, color.R);
449                         AssertEquals ("#LightCoral.G", 128, color.G);
450                         AssertEquals ("#LightCoral.B", 128, color.B);
451
452                         color = Color.LightCyan;
453                         AssertEquals ("#LightCyan.A", 255, color.A);
454                         AssertEquals ("#LightCyan.R", 224, color.R);
455                         AssertEquals ("#LightCyan.G", 255, color.G);
456                         AssertEquals ("#LightCyan.B", 255, color.B);
457
458                         color = Color.LightGoldenrodYellow;
459                         AssertEquals ("#LightGoldenrodYellow.A", 255, color.A);
460                         AssertEquals ("#LightGoldenrodYellow.R", 250, color.R);
461                         AssertEquals ("#LightGoldenrodYellow.G", 250, color.G);
462                         AssertEquals ("#LightGoldenrodYellow.B", 210, color.B);
463
464                         color = Color.LightGreen;
465                         AssertEquals ("#LightGreen.A", 255, color.A);
466                         AssertEquals ("#LightGreen.R", 144, color.R);
467                         AssertEquals ("#LightGreen.G", 238, color.G);
468                         AssertEquals ("#LightGreen.B", 144, color.B);
469
470                         color = Color.LightGray;
471                         AssertEquals ("#LightGray.A", 255, color.A);
472                         AssertEquals ("#LightGray.R", 211, color.R);
473                         AssertEquals ("#LightGray.G", 211, color.G);
474                         AssertEquals ("#LightGray.B", 211, color.B);
475
476                         color = Color.LightPink;
477                         AssertEquals ("#LightPink.A", 255, color.A);
478                         AssertEquals ("#LightPink.R", 255, color.R);
479                         AssertEquals ("#LightPink.G", 182, color.G);
480                         AssertEquals ("#LightPink.B", 193, color.B);
481
482                         color = Color.LightSalmon;
483                         AssertEquals ("#LightSalmon.A", 255, color.A);
484                         AssertEquals ("#LightSalmon.R", 255, color.R);
485                         AssertEquals ("#LightSalmon.G", 160, color.G);
486                         AssertEquals ("#LightSalmon.B", 122, color.B);
487
488                         color = Color.LightSeaGreen;
489                         AssertEquals ("#LightSeaGreen.A", 255, color.A);
490                         AssertEquals ("#LightSeaGreen.R", 32, color.R);
491                         AssertEquals ("#LightSeaGreen.G", 178, color.G);
492                         AssertEquals ("#LightSeaGreen.B", 170, color.B);
493
494                         color = Color.LightSkyBlue;
495                         AssertEquals ("#LightSkyBlue.A", 255, color.A);
496                         AssertEquals ("#LightSkyBlue.R", 135, color.R);
497                         AssertEquals ("#LightSkyBlue.G", 206, color.G);
498                         AssertEquals ("#LightSkyBlue.B", 250, color.B);
499
500                         color = Color.LightSlateGray;
501                         AssertEquals ("#LightSlateGray.A", 255, color.A);
502                         AssertEquals ("#LightSlateGray.R", 119, color.R);
503                         AssertEquals ("#LightSlateGray.G", 136, color.G);
504                         AssertEquals ("#LightSlateGray.B", 153, color.B);
505
506                         color = Color.LightSteelBlue;
507                         AssertEquals ("#LightSteelBlue.A", 255, color.A);
508                         AssertEquals ("#LightSteelBlue.R", 176, color.R);
509                         AssertEquals ("#LightSteelBlue.G", 196, color.G);
510                         AssertEquals ("#LightSteelBlue.B", 222, color.B);
511
512                         color = Color.LightYellow;
513                         AssertEquals ("#LightYellow.A", 255, color.A);
514                         AssertEquals ("#LightYellow.R", 255, color.R);
515                         AssertEquals ("#LightYellow.G", 255, color.G);
516                         AssertEquals ("#LightYellow.B", 224, color.B);
517
518                         color = Color.Lime;
519                         AssertEquals ("#Lime.A", 255, color.A);
520                         AssertEquals ("#Lime.R", 0, color.R);
521                         AssertEquals ("#Lime.G", 255, color.G);
522                         AssertEquals ("#Lime.B", 0, color.B);
523
524                         color = Color.LimeGreen;
525                         AssertEquals ("#LimeGreen.A", 255, color.A);
526                         AssertEquals ("#LimeGreen.R", 50, color.R);
527                         AssertEquals ("#LimeGreen.G", 205, color.G);
528                         AssertEquals ("#LimeGreen.B", 50, color.B);
529
530                         color = Color.Linen;
531                         AssertEquals ("#Linen.A", 255, color.A);
532                         AssertEquals ("#Linen.R", 250, color.R);
533                         AssertEquals ("#Linen.G", 240, color.G);
534                         AssertEquals ("#Linen.B", 230, color.B);
535
536                         color = Color.Magenta;
537                         AssertEquals ("#Magenta.A", 255, color.A);
538                         AssertEquals ("#Magenta.R", 255, color.R);
539                         AssertEquals ("#Magenta.G", 0, color.G);
540                         AssertEquals ("#Magenta.B", 255, color.B);
541
542                         color = Color.Maroon;
543                         AssertEquals ("#Maroon.A", 255, color.A);
544                         AssertEquals ("#Maroon.R", 128, color.R);
545                         AssertEquals ("#Maroon.G", 0, color.G);
546                         AssertEquals ("#Maroon.B", 0, color.B);
547
548                         color = Color.MediumAquamarine;
549                         AssertEquals ("#MediumAquamarine.A", 255, color.A);
550                         AssertEquals ("#MediumAquamarine.R", 102, color.R);
551                         AssertEquals ("#MediumAquamarine.G", 205, color.G);
552                         AssertEquals ("#MediumAquamarine.B", 170, color.B);
553
554                         color = Color.MediumBlue;
555                         AssertEquals ("#MediumBlue.A", 255, color.A);
556                         AssertEquals ("#MediumBlue.R", 0, color.R);
557                         AssertEquals ("#MediumBlue.G", 0, color.G);
558                         AssertEquals ("#MediumBlue.B", 205, color.B);
559
560                         color = Color.MediumOrchid;
561                         AssertEquals ("#MediumOrchid.A", 255, color.A);
562                         AssertEquals ("#MediumOrchid.R", 186, color.R);
563                         AssertEquals ("#MediumOrchid.G", 85, color.G);
564                         AssertEquals ("#MediumOrchid.B", 211, color.B);
565
566                         color = Color.MediumPurple;
567                         AssertEquals ("#MediumPurple.A", 255, color.A);
568                         AssertEquals ("#MediumPurple.R", 147, color.R);
569                         AssertEquals ("#MediumPurple.G", 112, color.G);
570                         AssertEquals ("#MediumPurple.B", 219, color.B);
571
572                         color = Color.MediumSeaGreen;
573                         AssertEquals ("#MediumSeaGreen.A", 255, color.A);
574                         AssertEquals ("#MediumSeaGreen.R", 60, color.R);
575                         AssertEquals ("#MediumSeaGreen.G", 179, color.G);
576                         AssertEquals ("#MediumSeaGreen.B", 113, color.B);
577
578                         color = Color.MediumSlateBlue;
579                         AssertEquals ("#MediumSlateBlue.A", 255, color.A);
580                         AssertEquals ("#MediumSlateBlue.R", 123, color.R);
581                         AssertEquals ("#MediumSlateBlue.G", 104, color.G);
582                         AssertEquals ("#MediumSlateBlue.B", 238, color.B);
583
584                         color = Color.MediumSpringGreen;
585                         AssertEquals ("#MediumSpringGreen.A", 255, color.A);
586                         AssertEquals ("#MediumSpringGreen.R", 0, color.R);
587                         AssertEquals ("#MediumSpringGreen.G", 250, color.G);
588                         AssertEquals ("#MediumSpringGreen.B", 154, color.B);
589
590                         color = Color.MediumTurquoise;
591                         AssertEquals ("#MediumTurquoise.A", 255, color.A);
592                         AssertEquals ("#MediumTurquoise.R", 72, color.R);
593                         AssertEquals ("#MediumTurquoise.G", 209, color.G);
594                         AssertEquals ("#MediumTurquoise.B", 204, color.B);
595
596                         color = Color.MediumVioletRed;
597                         AssertEquals ("#MediumVioletRed.A", 255, color.A);
598                         AssertEquals ("#MediumVioletRed.R", 199, color.R);
599                         AssertEquals ("#MediumVioletRed.G", 21, color.G);
600                         AssertEquals ("#MediumVioletRed.B", 133, color.B);
601
602                         color = Color.MidnightBlue;
603                         AssertEquals ("#MidnightBlue.A", 255, color.A);
604                         AssertEquals ("#MidnightBlue.R", 25, color.R);
605                         AssertEquals ("#MidnightBlue.G", 25, color.G);
606                         AssertEquals ("#MidnightBlue.B", 112, color.B);
607
608                         color = Color.MintCream;
609                         AssertEquals ("#MintCream.A", 255, color.A);
610                         AssertEquals ("#MintCream.R", 245, color.R);
611                         AssertEquals ("#MintCream.G", 255, color.G);
612                         AssertEquals ("#MintCream.B", 250, color.B);
613
614                         color = Color.MistyRose;
615                         AssertEquals ("#MistyRose.A", 255, color.A);
616                         AssertEquals ("#MistyRose.R", 255, color.R);
617                         AssertEquals ("#MistyRose.G", 228, color.G);
618                         AssertEquals ("#MistyRose.B", 225, color.B);
619
620                         color = Color.Moccasin;
621                         AssertEquals ("#Moccasin.A", 255, color.A);
622                         AssertEquals ("#Moccasin.R", 255, color.R);
623                         AssertEquals ("#Moccasin.G", 228, color.G);
624                         AssertEquals ("#Moccasin.B", 181, color.B);
625
626                         color = Color.NavajoWhite;
627                         AssertEquals ("#NavajoWhite.A", 255, color.A);
628                         AssertEquals ("#NavajoWhite.R", 255, color.R);
629                         AssertEquals ("#NavajoWhite.G", 222, color.G);
630                         AssertEquals ("#NavajoWhite.B", 173, color.B);
631
632                         color = Color.Navy;
633                         AssertEquals ("#Navy.A", 255, color.A);
634                         AssertEquals ("#Navy.R", 0, color.R);
635                         AssertEquals ("#Navy.G", 0, color.G);
636                         AssertEquals ("#Navy.B", 128, color.B);
637
638                         color = Color.OldLace;
639                         AssertEquals ("#OldLace.A", 255, color.A);
640                         AssertEquals ("#OldLace.R", 253, color.R);
641                         AssertEquals ("#OldLace.G", 245, color.G);
642                         AssertEquals ("#OldLace.B", 230, color.B);
643
644                         color = Color.Olive;
645                         AssertEquals ("#Olive.A", 255, color.A);
646                         AssertEquals ("#Olive.R", 128, color.R);
647                         AssertEquals ("#Olive.G", 128, color.G);
648                         AssertEquals ("#Olive.B", 0, color.B);
649
650                         color = Color.OliveDrab;
651                         AssertEquals ("#OliveDrab.A", 255, color.A);
652                         AssertEquals ("#OliveDrab.R", 107, color.R);
653                         AssertEquals ("#OliveDrab.G", 142, color.G);
654                         AssertEquals ("#OliveDrab.B", 35, color.B);
655
656                         color = Color.Orange;
657                         AssertEquals ("#Orange.A", 255, color.A);
658                         AssertEquals ("#Orange.R", 255, color.R);
659                         AssertEquals ("#Orange.G", 165, color.G);
660                         AssertEquals ("#Orange.B", 0, color.B);
661
662                         color = Color.OrangeRed;
663                         AssertEquals ("#OrangeRed.A", 255, color.A);
664                         AssertEquals ("#OrangeRed.R", 255, color.R);
665                         AssertEquals ("#OrangeRed.G", 69, color.G);
666                         AssertEquals ("#OrangeRed.B", 0, color.B);
667
668                         color = Color.Orchid;
669                         AssertEquals ("#Orchid.A", 255, color.A);
670                         AssertEquals ("#Orchid.R", 218, color.R);
671                         AssertEquals ("#Orchid.G", 112, color.G);
672                         AssertEquals ("#Orchid.B", 214, color.B);
673
674                         color = Color.PaleGoldenrod;
675                         AssertEquals ("#PaleGoldenrod.A", 255, color.A);
676                         AssertEquals ("#PaleGoldenrod.R", 238, color.R);
677                         AssertEquals ("#PaleGoldenrod.G", 232, color.G);
678                         AssertEquals ("#PaleGoldenrod.B", 170, color.B);
679
680                         color = Color.PaleGreen;
681                         AssertEquals ("#PaleGreen.A", 255, color.A);
682                         AssertEquals ("#PaleGreen.R", 152, color.R);
683                         AssertEquals ("#PaleGreen.G", 251, color.G);
684                         AssertEquals ("#PaleGreen.B", 152, color.B);
685
686                         color = Color.PaleTurquoise;
687                         AssertEquals ("#PaleTurquoise.A", 255, color.A);
688                         AssertEquals ("#PaleTurquoise.R", 175, color.R);
689                         AssertEquals ("#PaleTurquoise.G", 238, color.G);
690                         AssertEquals ("#PaleTurquoise.B", 238, color.B);
691
692                         color = Color.PaleVioletRed;
693                         AssertEquals ("#PaleVioletRed.A", 255, color.A);
694                         AssertEquals ("#PaleVioletRed.R", 219, color.R);
695                         AssertEquals ("#PaleVioletRed.G", 112, color.G);
696                         AssertEquals ("#PaleVioletRed.B", 147, color.B);
697
698                         color = Color.PapayaWhip;
699                         AssertEquals ("#PapayaWhip.A", 255, color.A);
700                         AssertEquals ("#PapayaWhip.R", 255, color.R);
701                         AssertEquals ("#PapayaWhip.G", 239, color.G);
702                         AssertEquals ("#PapayaWhip.B", 213, color.B);
703
704                         color = Color.PeachPuff;
705                         AssertEquals ("#PeachPuff.A", 255, color.A);
706                         AssertEquals ("#PeachPuff.R", 255, color.R);
707                         AssertEquals ("#PeachPuff.G", 218, color.G);
708                         AssertEquals ("#PeachPuff.B", 185, color.B);
709
710                         color = Color.Peru;
711                         AssertEquals ("#Peru.A", 255, color.A);
712                         AssertEquals ("#Peru.R", 205, color.R);
713                         AssertEquals ("#Peru.G", 133, color.G);
714                         AssertEquals ("#Peru.B", 63, color.B);
715
716                         color = Color.Pink;
717                         AssertEquals ("#Pink.A", 255, color.A);
718                         AssertEquals ("#Pink.R", 255, color.R);
719                         AssertEquals ("#Pink.G", 192, color.G);
720                         AssertEquals ("#Pink.B", 203, color.B);
721
722                         color = Color.Plum;
723                         AssertEquals ("#Plum.A", 255, color.A);
724                         AssertEquals ("#Plum.R", 221, color.R);
725                         AssertEquals ("#Plum.G", 160, color.G);
726                         AssertEquals ("#Plum.B", 221, color.B);
727
728                         color = Color.PowderBlue;
729                         AssertEquals ("#PowderBlue.A", 255, color.A);
730                         AssertEquals ("#PowderBlue.R", 176, color.R);
731                         AssertEquals ("#PowderBlue.G", 224, color.G);
732                         AssertEquals ("#PowderBlue.B", 230, color.B);
733
734                         color = Color.Purple;
735                         AssertEquals ("#Purple.A", 255, color.A);
736                         AssertEquals ("#Purple.R", 128, color.R);
737                         AssertEquals ("#Purple.G", 0, color.G);
738                         AssertEquals ("#Purple.B", 128, color.B);
739
740                         color = Color.Red;
741                         AssertEquals ("#Red.A", 255, color.A);
742                         AssertEquals ("#Red.R", 255, color.R);
743                         AssertEquals ("#Red.G", 0, color.G);
744                         AssertEquals ("#Red.B", 0, color.B);
745
746                         color = Color.RosyBrown;
747                         AssertEquals ("#RosyBrown.A", 255, color.A);
748                         AssertEquals ("#RosyBrown.R", 188, color.R);
749                         AssertEquals ("#RosyBrown.G", 143, color.G);
750                         AssertEquals ("#RosyBrown.B", 143, color.B);
751
752                         color = Color.RoyalBlue;
753                         AssertEquals ("#RoyalBlue.A", 255, color.A);
754                         AssertEquals ("#RoyalBlue.R", 65, color.R);
755                         AssertEquals ("#RoyalBlue.G", 105, color.G);
756                         AssertEquals ("#RoyalBlue.B", 225, color.B);
757
758                         color = Color.SaddleBrown;
759                         AssertEquals ("#SaddleBrown.A", 255, color.A);
760                         AssertEquals ("#SaddleBrown.R", 139, color.R);
761                         AssertEquals ("#SaddleBrown.G", 69, color.G);
762                         AssertEquals ("#SaddleBrown.B", 19, color.B);
763
764                         color = Color.Salmon;
765                         AssertEquals ("#Salmon.A", 255, color.A);
766                         AssertEquals ("#Salmon.R", 250, color.R);
767                         AssertEquals ("#Salmon.G", 128, color.G);
768                         AssertEquals ("#Salmon.B", 114, color.B);
769
770                         color = Color.SandyBrown;
771                         AssertEquals ("#SandyBrown.A", 255, color.A);
772                         AssertEquals ("#SandyBrown.R", 244, color.R);
773                         AssertEquals ("#SandyBrown.G", 164, color.G);
774                         AssertEquals ("#SandyBrown.B", 96, color.B);
775
776                         color = Color.SeaGreen;
777                         AssertEquals ("#SeaGreen.A", 255, color.A);
778                         AssertEquals ("#SeaGreen.R", 46, color.R);
779                         AssertEquals ("#SeaGreen.G", 139, color.G);
780                         AssertEquals ("#SeaGreen.B", 87, color.B);
781
782                         color = Color.SeaShell;
783                         AssertEquals ("#SeaShell.A", 255, color.A);
784                         AssertEquals ("#SeaShell.R", 255, color.R);
785                         AssertEquals ("#SeaShell.G", 245, color.G);
786                         AssertEquals ("#SeaShell.B", 238, color.B);
787
788                         color = Color.Sienna;
789                         AssertEquals ("#Sienna.A", 255, color.A);
790                         AssertEquals ("#Sienna.R", 160, color.R);
791                         AssertEquals ("#Sienna.G", 82, color.G);
792                         AssertEquals ("#Sienna.B", 45, color.B);
793
794                         color = Color.Silver;
795                         AssertEquals ("#Silver.A", 255, color.A);
796                         AssertEquals ("#Silver.R", 192, color.R);
797                         AssertEquals ("#Silver.G", 192, color.G);
798                         AssertEquals ("#Silver.B", 192, color.B);
799
800                         color = Color.SkyBlue;
801                         AssertEquals ("#SkyBlue.A", 255, color.A);
802                         AssertEquals ("#SkyBlue.R", 135, color.R);
803                         AssertEquals ("#SkyBlue.G", 206, color.G);
804                         AssertEquals ("#SkyBlue.B", 235, color.B);
805
806                         color = Color.SlateBlue;
807                         AssertEquals ("#SlateBlue.A", 255, color.A);
808                         AssertEquals ("#SlateBlue.R", 106, color.R);
809                         AssertEquals ("#SlateBlue.G", 90, color.G);
810                         AssertEquals ("#SlateBlue.B", 205, color.B);
811
812                         color = Color.SlateGray;
813                         AssertEquals ("#SlateGray.A", 255, color.A);
814                         AssertEquals ("#SlateGray.R", 112, color.R);
815                         AssertEquals ("#SlateGray.G", 128, color.G);
816                         AssertEquals ("#SlateGray.B", 144, color.B);
817
818                         color = Color.Snow;
819                         AssertEquals ("#Snow.A", 255, color.A);
820                         AssertEquals ("#Snow.R", 255, color.R);
821                         AssertEquals ("#Snow.G", 250, color.G);
822                         AssertEquals ("#Snow.B", 250, color.B);
823
824                         color = Color.SpringGreen;
825                         AssertEquals ("#SpringGreen.A", 255, color.A);
826                         AssertEquals ("#SpringGreen.R", 0, color.R);
827                         AssertEquals ("#SpringGreen.G", 255, color.G);
828                         AssertEquals ("#SpringGreen.B", 127, color.B);
829
830                         color = Color.SteelBlue;
831                         AssertEquals ("#SteelBlue.A", 255, color.A);
832                         AssertEquals ("#SteelBlue.R", 70, color.R);
833                         AssertEquals ("#SteelBlue.G", 130, color.G);
834                         AssertEquals ("#SteelBlue.B", 180, color.B);
835
836                         color = Color.Tan;
837                         AssertEquals ("#Tan.A", 255, color.A);
838                         AssertEquals ("#Tan.R", 210, color.R);
839                         AssertEquals ("#Tan.G", 180, color.G);
840                         AssertEquals ("#Tan.B", 140, color.B);
841
842                         color = Color.Teal;
843                         AssertEquals ("#Teal.A", 255, color.A);
844                         AssertEquals ("#Teal.R", 0, color.R);
845                         AssertEquals ("#Teal.G", 128, color.G);
846                         AssertEquals ("#Teal.B", 128, color.B);
847
848                         color = Color.Thistle;
849                         AssertEquals ("#Thistle.A", 255, color.A);
850                         AssertEquals ("#Thistle.R", 216, color.R);
851                         AssertEquals ("#Thistle.G", 191, color.G);
852                         AssertEquals ("#Thistle.B", 216, color.B);
853
854                         color = Color.Tomato;
855                         AssertEquals ("#Tomato.A", 255, color.A);
856                         AssertEquals ("#Tomato.R", 255, color.R);
857                         AssertEquals ("#Tomato.G", 99, color.G);
858                         AssertEquals ("#Tomato.B", 71, color.B);
859
860                         color = Color.Turquoise;
861                         AssertEquals ("#Turquoise.A", 255, color.A);
862                         AssertEquals ("#Turquoise.R", 64, color.R);
863                         AssertEquals ("#Turquoise.G", 224, color.G);
864                         AssertEquals ("#Turquoise.B", 208, color.B);
865
866                         color = Color.Violet;
867                         AssertEquals ("#Violet.A", 255, color.A);
868                         AssertEquals ("#Violet.R", 238, color.R);
869                         AssertEquals ("#Violet.G", 130, color.G);
870                         AssertEquals ("#Violet.B", 238, color.B);
871
872                         color = Color.Wheat;
873                         AssertEquals ("#Wheat.A", 255, color.A);
874                         AssertEquals ("#Wheat.R", 245, color.R);
875                         AssertEquals ("#Wheat.G", 222, color.G);
876                         AssertEquals ("#Wheat.B", 179, color.B);
877
878                         color = Color.White;
879                         AssertEquals ("#White.A", 255, color.A);
880                         AssertEquals ("#White.R", 255, color.R);
881                         AssertEquals ("#White.G", 255, color.G);
882                         AssertEquals ("#White.B", 255, color.B);
883
884                         color = Color.WhiteSmoke;
885                         AssertEquals ("#WhiteSmoke.A", 255, color.A);
886                         AssertEquals ("#WhiteSmoke.R", 245, color.R);
887                         AssertEquals ("#WhiteSmoke.G", 245, color.G);
888                         AssertEquals ("#WhiteSmoke.B", 245, color.B);
889
890                         color = Color.Yellow;
891                         AssertEquals ("#Yellow.A", 255, color.A);
892                         AssertEquals ("#Yellow.R", 255, color.R);
893                         AssertEquals ("#Yellow.G", 255, color.G);
894                         AssertEquals ("#Yellow.B", 0, color.B);
895
896                         color = Color.YellowGreen;
897                         AssertEquals ("#YellowGreen.A", 255, color.A);
898                         AssertEquals ("#YellowGreen.R", 154, color.R);
899                         AssertEquals ("#YellowGreen.G", 205, color.G);
900                         AssertEquals ("#YellowGreen.B", 50, color.B);
901                 }
902                 
903                 static bool FloatsAlmostEqual (float v1, float v2)
904                 {
905                         float error = Math.Abs(v1-v2)/(v1+v2+float.Epsilon);
906                         return error < 0.0001;
907                 }
908
909                 [Test]
910                 public void TestHBSValues ()
911                 {
912                         AssertEquals ("BrightnessBlack", 0.0f, Color.Black.GetBrightness ());
913                         AssertEquals ("BrightnessWhite", 1.0f, Color.White.GetBrightness ());
914                 
915                         Color c1 = Color.FromArgb (0, 13, 45, 7); //just some random color
916                         Assert ("Hue1",        FloatsAlmostEqual (110.5263f, c1.GetHue ()));
917                         Assert ("Brightness1", FloatsAlmostEqual (0.1019608f, c1.GetBrightness ()));
918                         Assert ("Saturation1", FloatsAlmostEqual (0.7307692f, c1.GetSaturation ()));
919         
920                         Color c2 = Color.FromArgb (0, 112, 75, 29); //another random color
921                         Assert ("Hue2",        FloatsAlmostEqual (33.25302f, c2.GetHue ()));
922                         Assert ("Brightness2", FloatsAlmostEqual (0.2764706f, c2.GetBrightness ()));
923                         Assert ("Saturation2", FloatsAlmostEqual (0.5886525f, c2.GetSaturation ()));
924                 }
925                 [Test]
926                 public void TestEquals ()
927                 {
928                         Color color = Color.Red;
929                         Color color1 = Color.FromArgb (color.R, color.G, color.B);
930                         Assert ("Named color not == unnamed color", !(color==color1));
931                         Assert ("Named color not equals unnamed color", !color.Equals (color1));
932                         Assert ("Named color != unnamed color", color!=color1);
933                         color = Color.FromArgb (0, color1);
934                         Assert ("Alpha takes part in comparison", !color.Equals (color1));
935                 }
936                 [Test]
937                 public void TestIsEmpty ()
938                 {
939                         Color color = Color.Empty;
940                         Assert ("Empty color", color.IsEmpty);
941                         Assert ("Not empty color", !Color.FromArgb (0, Color.Black).IsEmpty);
942                 }
943                 [Test]
944                 public void IsKnownColor ()
945                 {
946                         Assert ("KnownColor", Color.FromKnownColor(KnownColor.AliceBlue).IsKnownColor);
947                         Assert ("KnownColor", Color.FromName("AliceBlue").IsKnownColor);
948                         AssertEquals ("Not KnownColor", false,
949                                 Color.FromArgb (50, 100, 150, 200).IsKnownColor);
950                 }
951                 [Test]
952                 public void IsNamedColor ()
953                 {
954                         Assert ("NamedColor", Color.AliceBlue.IsNamedColor);
955                         Assert ("NamedColor", Color.FromKnownColor(KnownColor.AliceBlue).IsNamedColor);
956                         Assert ("NamedColor", Color.FromName("AliceBlue").IsNamedColor);
957                         AssertEquals ("Not NamedColor", false,
958                                 Color.FromArgb (50, 100, 150, 200).IsNamedColor);
959                 }
960                 [Test]
961                 public void IsSystemColor () {
962                         Assert ("SystemColor#1", Color.FromKnownColor(KnownColor.ActiveBorder).IsSystemColor);
963                         Assert ("SystemColor#2", Color.FromName("ActiveBorder").IsSystemColor);
964                         AssertEquals ("Not SystemColor#1", false,
965                                 Color.FromArgb (50, 100, 150, 200).IsSystemColor);
966                         AssertEquals ("Not SystemColor#2", false,
967                                 Color.FromKnownColor(KnownColor.AliceBlue).IsSystemColor);
968                         AssertEquals ("Not SystemColor#3", false,
969                                 Color.FromName("AliceBlue").IsSystemColor);
970                 }
971                 [Test]
972                 public void Name ()
973                 {
974                         AssertEquals ("Color.Name#1", "AliceBlue", Color.AliceBlue.Name);
975                         AssertEquals ("Color.Name#2", "ActiveBorder",
976                                 Color.FromKnownColor (KnownColor.ActiveBorder).Name);
977                         AssertEquals ("Color.Name#3", "1122ccff",
978                                 Color.FromArgb(0x11, 0x22, 0xcc, 0xff).Name);
979                 }
980                 [Test]
981                 public void GetHashCodeTest ()
982                 {
983                         Color c = Color.AliceBlue;
984                         AssertEquals ("GHC#1", false, Color.FromArgb (c.A, c.R, c.G, c.B).GetHashCode () ==
985                                 c.GetHashCode ());
986                         AssertEquals ("GHC#2", c.GetHashCode (), Color.FromName ("AliceBlue").GetHashCode ());
987                 }
988                 [Test]
989                 public void ToArgb ()
990                 {
991                         AssertEquals (0x11cc8833, Color.FromArgb (0x11, 0xcc, 0x88, 0x33).ToArgb());
992                         AssertEquals (unchecked((int)0xf1cc8833), Color.FromArgb (0xf1, 0xcc, 0x88, 0x33).ToArgb());
993                 }
994
995                 [Test]
996                 public void ToKnownColor ()
997                 {
998                         AssertEquals ("TKC#1", KnownColor.ActiveBorder, Color.FromName ("ActiveBorder").ToKnownColor ());
999                         AssertEquals ("TKC#2", KnownColor.AliceBlue, Color.AliceBlue.ToKnownColor ());
1000                         KnownColor zero = Color.FromArgb (1, 2, 3, 4).ToKnownColor ();
1001                         AssertEquals ("TKC#3", (KnownColor)0, zero);
1002                 }
1003
1004                 [Test]
1005                 public void ToStringTest ()
1006                 {
1007                         AssertEquals ("TS#1", "Color [AliceBlue]", Color.AliceBlue.ToString ());
1008                         AssertEquals ("TS#2", "Color [ActiveBorder]",
1009                                 Color.FromKnownColor (KnownColor.ActiveBorder).ToString ());
1010                         AssertEquals ("TS#3", "Color [A=1, R=2, G=3, B=4]",
1011                                 Color.FromArgb(1, 2, 3, 4).ToString ());
1012                         AssertEquals ("TS#4", "Color [Empty]", Color.Empty.ToString ());
1013                 }
1014
1015                 [Test]
1016                 public void Equality ()
1017                 {
1018                         Color c = Color.AliceBlue;
1019                         Assert ("EQ#1", c == Color.FromName ("AliceBlue"));
1020                         AssertEquals ("EQ#2", false, c == Color.FromArgb (c.A, c.R, c.G, c.B));
1021                         Assert ("EQ#3", c.Equals (Color.FromName ("AliceBlue")));
1022                         AssertEquals ("EQ#4", false, c.Equals(Color.FromArgb (c.A, c.R, c.G, c.B)));
1023                         AssertEquals ("EQ#5", false, c != Color.FromName ("AliceBlue"));
1024                         Assert("EQ#6", c != Color.FromArgb (c.A, c.R, c.G, c.B));
1025                 }
1026
1027                 [Test]
1028                 [ExpectedException (typeof (ArgumentException))]
1029                 public void FromArgb_InvalidAlpha1 ()
1030                 {
1031                         Color.FromArgb (-1, Color.Red);
1032                 }
1033
1034                 [Test]
1035                 [ExpectedException (typeof (ArgumentException))]
1036                 public void FromArgb_InvalidAlpha2 ()
1037                 {
1038                         Color.FromArgb (256, Color.Red);
1039                 }
1040
1041                 [Test]
1042                 [ExpectedException (typeof (ArgumentException))]
1043                 public void FromArgb_InvalidAlpha3 ()
1044                 {
1045                         Color.FromArgb (-1, 0, 0, 0);
1046                 }
1047
1048                 [Test]
1049                 [ExpectedException (typeof (ArgumentException))]
1050                 public void FromArgb_InvalidAlpha4 ()
1051                 {
1052                         Color.FromArgb (256, 0, 0, 0);
1053                 }
1054
1055                 [Test]
1056                 [ExpectedException (typeof (ArgumentException))]
1057                 public void FromArgb_InvalidRed1 ()
1058                 {
1059                         Color.FromArgb (-1, 0, 0);
1060                 }
1061
1062                 [Test]
1063                 [ExpectedException (typeof (ArgumentException))]
1064                 public void FromArgb_InvalidRed2 ()
1065                 {
1066                         Color.FromArgb (256, 0, 0);
1067                 }
1068
1069                 [Test]
1070                 [ExpectedException (typeof (ArgumentException))]
1071                 public void FromArgb_InvalidRed3 ()
1072                 {
1073                         Color.FromArgb (0, -1, 0, 0);
1074                 }
1075
1076                 [Test]
1077                 [ExpectedException (typeof (ArgumentException))]
1078                 public void FromArgb_InvalidRed4 ()
1079                 {
1080                         Color.FromArgb (0, 256, 0, 0);
1081                 }
1082
1083                 [Test]
1084                 [ExpectedException (typeof (ArgumentException))]
1085                 public void FromArgb_InvalidGreen1 ()
1086                 {
1087                         Color.FromArgb (0, -1, 0);
1088                 }
1089
1090                 [Test]
1091                 [ExpectedException (typeof (ArgumentException))]
1092                 public void FromArgb_InvalidGreen2 ()
1093                 {
1094                         Color.FromArgb (0, 256, 0);
1095                 }
1096
1097                 [Test]
1098                 [ExpectedException (typeof (ArgumentException))]
1099                 public void FromArgb_InvalidGreen3 ()
1100                 {
1101                         Color.FromArgb (0, 0, -1, 0);
1102                 }
1103
1104                 [Test]
1105                 [ExpectedException (typeof (ArgumentException))]
1106                 public void FromArgb_InvalidGreen4 ()
1107                 {
1108                         Color.FromArgb (0, 0, 256, 0);
1109                 }
1110
1111                 [Test]
1112                 [ExpectedException (typeof (ArgumentException))]
1113                 public void FromArgb_InvalidBlue1 ()
1114                 {
1115                         Color.FromArgb (0, 0, -1);
1116                 }
1117
1118                 [Test]
1119                 [ExpectedException (typeof (ArgumentException))]
1120                 public void FromArgb_InvalidBlue2 ()
1121                 {
1122                         Color.FromArgb (0, 0, 256);
1123                 }
1124
1125                 [Test]
1126                 [ExpectedException (typeof (ArgumentException))]
1127                 public void FromArgb_InvalidBlue3 ()
1128                 {
1129                         Color.FromArgb (0, 0, 0, -1);
1130                 }
1131
1132                 [Test]
1133                 [ExpectedException (typeof (ArgumentException))]
1134                 public void FromArgb_InvalidBlue4 ()
1135                 {
1136                         Color.FromArgb (0, 0, 0, 256);
1137                 }
1138         }
1139 }
1140
1141 // Following code was used to generate the TestArgbValues method on MS. 
1142 //
1143 //              Type cType = typeof (Color);
1144 //              PropertyInfo [] properties = cType.GetProperties (BindingFlags.Public | BindingFlags.Static);
1145 ////            Console.WriteLine ("number: " + properties.Length);
1146 //
1147 //              Console.WriteLine("\t\t[Test]");
1148 //              Console.WriteLine("\t\tpublic void TestArgbValues ()");
1149 //              Console.WriteLine("\t\t{");
1150 //              Console.WriteLine("\t\t\tColor color;");
1151 //              foreach (PropertyInfo property in properties) {
1152 //
1153 //                      Console.WriteLine();
1154 //                      Console.WriteLine("\t\t\tcolor = Color.{0};", property.Name);
1155 //                      Color color = Color.FromName (property.Name);
1156 //                      Console.WriteLine("\t\t\tAssertEquals (\"#{0}.A\", {1}, color.A);", property.Name, color.A);
1157 //                      Console.WriteLine("\t\t\tAssertEquals (\"#{0}.R\", {1}, color.R);", property.Name, color.R);
1158 //                      Console.WriteLine("\t\t\tAssertEquals (\"#{0}.G\", {1}, color.G);", property.Name, color.G);
1159 //                      Console.WriteLine("\t\t\tAssertEquals (\"#{0}.B\", {1}, color.B);", property.Name, color.B);
1160 //              }
1161 //              Console.WriteLine("\t\t}");