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