2 // Tests for System.Drawing.Color.cs
5 // Ravindra (rkumar@novell.com)
6 // Sebastien Pouliot <sebastien@ximian.com>
8 // Copyright (C) 2004,2006-2007 Novell, Inc (http://www.novell.com)
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 using System.Runtime.Serialization;
34 using System.Runtime.Serialization.Formatters.Binary;
35 using System.Security.Permissions;
36 using NUnit.Framework;
38 namespace MonoTests.System.Drawing {
41 [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
42 public class ColorTest {
45 public void TestArgbValues ()
49 color = Color.Transparent;
50 Assert.AreEqual (0, color.A, "#Transparent.A");
51 Assert.AreEqual (255, color.R, "#Transparent.R");
52 Assert.AreEqual (255, color.G, "#Transparent.G");
53 Assert.AreEqual (255, color.B, "#Transparent.B");
55 color = Color.AliceBlue;
56 Assert.AreEqual (255, color.A, "#AliceBlue.A");
57 Assert.AreEqual (240, color.R, "#AliceBlue.R");
58 Assert.AreEqual (248, color.G, "#AliceBlue.G");
59 Assert.AreEqual (255, color.B, "#AliceBlue.B");
61 color = Color.AntiqueWhite;
62 Assert.AreEqual (255, color.A, "#AntiqueWhite.A");
63 Assert.AreEqual (250, color.R, "#AntiqueWhite.R");
64 Assert.AreEqual (235, color.G, "#AntiqueWhite.G");
65 Assert.AreEqual (215, color.B, "#AntiqueWhite.B");
68 Assert.AreEqual (255, color.A, "#Aqua.A");
69 Assert.AreEqual (0, color.R, "#Aqua.R");
70 Assert.AreEqual (255, color.G, "#Aqua.G");
71 Assert.AreEqual (255, color.B, "#Aqua.B");
73 color = Color.Aquamarine;
74 Assert.AreEqual (255, color.A, "#Aquamarine.A");
75 Assert.AreEqual (127, color.R, "#Aquamarine.R");
76 Assert.AreEqual (255, color.G, "#Aquamarine.G");
77 Assert.AreEqual (212, color.B, "#Aquamarine.B");
80 Assert.AreEqual (255, color.A, "#Azure.A");
81 Assert.AreEqual (240, color.R, "#Azure.R");
82 Assert.AreEqual (255, color.G, "#Azure.G");
83 Assert.AreEqual (255, color.B, "#Azure.B");
86 Assert.AreEqual (255, color.A, "#Beige.A");
87 Assert.AreEqual (245, color.R, "#Beige.R");
88 Assert.AreEqual (245, color.G, "#Beige.G");
89 Assert.AreEqual (220, color.B, "#Beige.B");
92 Assert.AreEqual (255, color.A, "#Bisque.A");
93 Assert.AreEqual (255, color.R, "#Bisque.R");
94 Assert.AreEqual (228, color.G, "#Bisque.G");
95 Assert.AreEqual (196, color.B, "#Bisque.B");
98 Assert.AreEqual (255, color.A, "#Black.A");
99 Assert.AreEqual (0, color.R, "#Black.R");
100 Assert.AreEqual (0, color.G, "#Black.G");
101 Assert.AreEqual (0, color.B, "#Black.B");
103 color = Color.BlanchedAlmond;
104 Assert.AreEqual (255, color.A, "#BlanchedAlmond.A");
105 Assert.AreEqual (255, color.R, "#BlanchedAlmond.R");
106 Assert.AreEqual (235, color.G, "#BlanchedAlmond.G");
107 Assert.AreEqual (205, color.B, "#BlanchedAlmond.B");
110 Assert.AreEqual (255, color.A, "#Blue.A");
111 Assert.AreEqual (0, color.R, "#Blue.R");
112 Assert.AreEqual (0, color.G, "#Blue.G");
113 Assert.AreEqual (255, color.B, "#Blue.B");
115 color = Color.BlueViolet;
116 Assert.AreEqual (255, color.A, "#BlueViolet.A");
117 Assert.AreEqual (138, color.R, "#BlueViolet.R");
118 Assert.AreEqual (43, color.G, "#BlueViolet.G");
119 Assert.AreEqual (226, color.B, "#BlueViolet.B");
122 Assert.AreEqual (255, color.A, "#Brown.A");
123 Assert.AreEqual (165, color.R, "#Brown.R");
124 Assert.AreEqual (42, color.G, "#Brown.G");
125 Assert.AreEqual (42, color.B, "#Brown.B");
127 color = Color.BurlyWood;
128 Assert.AreEqual (255, color.A, "#BurlyWood.A");
129 Assert.AreEqual (222, color.R, "#BurlyWood.R");
130 Assert.AreEqual (184, color.G, "#BurlyWood.G");
131 Assert.AreEqual (135, color.B, "#BurlyWood.B");
133 color = Color.CadetBlue;
134 Assert.AreEqual (255, color.A, "#CadetBlue.A");
135 Assert.AreEqual (95, color.R, "#CadetBlue.R");
136 Assert.AreEqual (158, color.G, "#CadetBlue.G");
137 Assert.AreEqual (160, color.B, "#CadetBlue.B");
139 color = Color.Chartreuse;
140 Assert.AreEqual (255, color.A, "#Chartreuse.A");
141 Assert.AreEqual (127, color.R, "#Chartreuse.R");
142 Assert.AreEqual (255, color.G, "#Chartreuse.G");
143 Assert.AreEqual (0, color.B, "#Chartreuse.B");
145 color = Color.Chocolate;
146 Assert.AreEqual (255, color.A, "#Chocolate.A");
147 Assert.AreEqual (210, color.R, "#Chocolate.R");
148 Assert.AreEqual (105, color.G, "#Chocolate.G");
149 Assert.AreEqual (30, color.B, "#Chocolate.B");
152 Assert.AreEqual (255, color.A, "#Coral.A");
153 Assert.AreEqual (255, color.R, "#Coral.R");
154 Assert.AreEqual (127, color.G, "#Coral.G");
155 Assert.AreEqual (80, color.B, "#Coral.B");
157 color = Color.CornflowerBlue;
158 Assert.AreEqual (255, color.A, "#CornflowerBlue.A");
159 Assert.AreEqual (100, color.R, "#CornflowerBlue.R");
160 Assert.AreEqual (149, color.G, "#CornflowerBlue.G");
161 Assert.AreEqual (237, color.B, "#CornflowerBlue.B");
163 color = Color.Cornsilk;
164 Assert.AreEqual (255, color.A, "#Cornsilk.A");
165 Assert.AreEqual (255, color.R, "#Cornsilk.R");
166 Assert.AreEqual (248, color.G, "#Cornsilk.G");
167 Assert.AreEqual (220, color.B, "#Cornsilk.B");
169 color = Color.Crimson;
170 Assert.AreEqual (255, color.A, "#Crimson.A");
171 Assert.AreEqual (220, color.R, "#Crimson.R");
172 Assert.AreEqual (20, color.G, "#Crimson.G");
173 Assert.AreEqual (60, color.B, "#Crimson.B");
176 Assert.AreEqual (255, color.A, "#Cyan.A");
177 Assert.AreEqual (0, color.R, "#Cyan.R");
178 Assert.AreEqual (255, color.G, "#Cyan.G");
179 Assert.AreEqual (255, color.B, "#Cyan.B");
181 color = Color.DarkBlue;
182 Assert.AreEqual (255, color.A, "#DarkBlue.A");
183 Assert.AreEqual (0, color.R, "#DarkBlue.R");
184 Assert.AreEqual (0, color.G, "#DarkBlue.G");
185 Assert.AreEqual (139, color.B, "#DarkBlue.B");
187 color = Color.DarkCyan;
188 Assert.AreEqual (255, color.A, "#DarkCyan.A");
189 Assert.AreEqual (0, color.R, "#DarkCyan.R");
190 Assert.AreEqual (139, color.G, "#DarkCyan.G");
191 Assert.AreEqual (139, color.B, "#DarkCyan.B");
193 color = Color.DarkGoldenrod;
194 Assert.AreEqual (255, color.A, "#DarkGoldenrod.A");
195 Assert.AreEqual (184, color.R, "#DarkGoldenrod.R");
196 Assert.AreEqual (134, color.G, "#DarkGoldenrod.G");
197 Assert.AreEqual (11, color.B, "#DarkGoldenrod.B");
199 color = Color.DarkGray;
200 Assert.AreEqual (255, color.A, "#DarkGray.A");
201 Assert.AreEqual (169, color.R, "#DarkGray.R");
202 Assert.AreEqual (169, color.G, "#DarkGray.G");
203 Assert.AreEqual (169, color.B, "#DarkGray.B");
205 color = Color.DarkGreen;
206 Assert.AreEqual (255, color.A, "#DarkGreen.A");
207 Assert.AreEqual (0, color.R, "#DarkGreen.R");
208 Assert.AreEqual (100, color.G, "#DarkGreen.G");
209 Assert.AreEqual (0, color.B, "#DarkGreen.B");
211 color = Color.DarkKhaki;
212 Assert.AreEqual (255, color.A, "#DarkKhaki.A");
213 Assert.AreEqual (189, color.R, "#DarkKhaki.R");
214 Assert.AreEqual (183, color.G, "#DarkKhaki.G");
215 Assert.AreEqual (107, color.B, "#DarkKhaki.B");
217 color = Color.DarkMagenta;
218 Assert.AreEqual (255, color.A, "#DarkMagenta.A");
219 Assert.AreEqual (139, color.R, "#DarkMagenta.R");
220 Assert.AreEqual (0, color.G, "#DarkMagenta.G");
221 Assert.AreEqual (139, color.B, "#DarkMagenta.B");
223 color = Color.DarkOliveGreen;
224 Assert.AreEqual (255, color.A, "#DarkOliveGreen.A");
225 Assert.AreEqual (85, color.R, "#DarkOliveGreen.R");
226 Assert.AreEqual (107, color.G, "#DarkOliveGreen.G");
227 Assert.AreEqual (47, color.B, "#DarkOliveGreen.B");
229 color = Color.DarkOrange;
230 Assert.AreEqual (255, color.A, "#DarkOrange.A");
231 Assert.AreEqual (255, color.R, "#DarkOrange.R");
232 Assert.AreEqual (140, color.G, "#DarkOrange.G");
233 Assert.AreEqual (0, color.B, "#DarkOrange.B");
235 color = Color.DarkOrchid;
236 Assert.AreEqual (255, color.A, "#DarkOrchid.A");
237 Assert.AreEqual (153, color.R, "#DarkOrchid.R");
238 Assert.AreEqual (50, color.G, "#DarkOrchid.G");
239 Assert.AreEqual (204, color.B, "#DarkOrchid.B");
241 color = Color.DarkRed;
242 Assert.AreEqual (255, color.A, "#DarkRed.A");
243 Assert.AreEqual (139, color.R, "#DarkRed.R");
244 Assert.AreEqual (0, color.G, "#DarkRed.G");
245 Assert.AreEqual (0, color.B, "#DarkRed.B");
247 color = Color.DarkSalmon;
248 Assert.AreEqual (255, color.A, "#DarkSalmon.A");
249 Assert.AreEqual (233, color.R, "#DarkSalmon.R");
250 Assert.AreEqual (150, color.G, "#DarkSalmon.G");
251 Assert.AreEqual (122, color.B, "#DarkSalmon.B");
253 color = Color.DarkSeaGreen;
254 Assert.AreEqual (255, color.A, "#DarkSeaGreen.A");
255 Assert.AreEqual (143, color.R, "#DarkSeaGreen.R");
256 Assert.AreEqual (188, color.G, "#DarkSeaGreen.G");
257 Assert.AreEqual (139, color.B, "#DarkSeaGreen.B");
259 color = Color.DarkSlateBlue;
260 Assert.AreEqual (255, color.A, "#DarkSlateBlue.A");
261 Assert.AreEqual (72, color.R, "#DarkSlateBlue.R");
262 Assert.AreEqual (61, color.G, "#DarkSlateBlue.G");
263 Assert.AreEqual (139, color.B, "#DarkSlateBlue.B");
265 color = Color.DarkSlateGray;
266 Assert.AreEqual (255, color.A, "#DarkSlateGray.A");
267 Assert.AreEqual (47, color.R, "#DarkSlateGray.R");
268 Assert.AreEqual (79, color.G, "#DarkSlateGray.G");
269 Assert.AreEqual (79, color.B, "#DarkSlateGray.B");
271 color = Color.DarkTurquoise;
272 Assert.AreEqual (255, color.A, "#DarkTurquoise.A");
273 Assert.AreEqual (0, color.R, "#DarkTurquoise.R");
274 Assert.AreEqual (206, color.G, "#DarkTurquoise.G");
275 Assert.AreEqual (209, color.B, "#DarkTurquoise.B");
277 color = Color.DarkViolet;
278 Assert.AreEqual (255, color.A, "#DarkViolet.A");
279 Assert.AreEqual (148, color.R, "#DarkViolet.R");
280 Assert.AreEqual (0, color.G, "#DarkViolet.G");
281 Assert.AreEqual (211, color.B, "#DarkViolet.B");
283 color = Color.DeepPink;
284 Assert.AreEqual (255, color.A, "#DeepPink.A");
285 Assert.AreEqual (255, color.R, "#DeepPink.R");
286 Assert.AreEqual (20, color.G, "#DeepPink.G");
287 Assert.AreEqual (147, color.B, "#DeepPink.B");
289 color = Color.DeepSkyBlue;
290 Assert.AreEqual (255, color.A, "#DeepSkyBlue.A");
291 Assert.AreEqual (0, color.R, "#DeepSkyBlue.R");
292 Assert.AreEqual (191, color.G, "#DeepSkyBlue.G");
293 Assert.AreEqual (255, color.B, "#DeepSkyBlue.B");
295 color = Color.DimGray;
296 Assert.AreEqual (255, color.A, "#DimGray.A");
297 Assert.AreEqual (105, color.R, "#DimGray.R");
298 Assert.AreEqual (105, color.G, "#DimGray.G");
299 Assert.AreEqual (105, color.B, "#DimGray.B");
301 color = Color.DodgerBlue;
302 Assert.AreEqual (255, color.A, "#DodgerBlue.A");
303 Assert.AreEqual (30, color.R, "#DodgerBlue.R");
304 Assert.AreEqual (144, color.G, "#DodgerBlue.G");
305 Assert.AreEqual (255, color.B, "#DodgerBlue.B");
307 color = Color.Firebrick;
308 Assert.AreEqual (255, color.A, "#Firebrick.A");
309 Assert.AreEqual (178, color.R, "#Firebrick.R");
310 Assert.AreEqual (34, color.G, "#Firebrick.G");
311 Assert.AreEqual (34, color.B, "#Firebrick.B");
313 color = Color.FloralWhite;
314 Assert.AreEqual (255, color.A, "#FloralWhite.A");
315 Assert.AreEqual (255, color.R, "#FloralWhite.R");
316 Assert.AreEqual (250, color.G, "#FloralWhite.G");
317 Assert.AreEqual (240, color.B, "#FloralWhite.B");
319 color = Color.ForestGreen;
320 Assert.AreEqual (255, color.A, "#ForestGreen.A");
321 Assert.AreEqual (34, color.R, "#ForestGreen.R");
322 Assert.AreEqual (139, color.G, "#ForestGreen.G");
323 Assert.AreEqual (34, color.B, "#ForestGreen.B");
325 color = Color.Fuchsia;
326 Assert.AreEqual (255, color.A, "#Fuchsia.A");
327 Assert.AreEqual (255, color.R, "#Fuchsia.R");
328 Assert.AreEqual (0, color.G, "#Fuchsia.G");
329 Assert.AreEqual (255, color.B, "#Fuchsia.B");
331 color = Color.Gainsboro;
332 Assert.AreEqual (255, color.A, "#Gainsboro.A");
333 Assert.AreEqual (220, color.R, "#Gainsboro.R");
334 Assert.AreEqual (220, color.G, "#Gainsboro.G");
335 Assert.AreEqual (220, color.B, "#Gainsboro.B");
337 color = Color.GhostWhite;
338 Assert.AreEqual (255, color.A, "#GhostWhite.A");
339 Assert.AreEqual (248, color.R, "#GhostWhite.R");
340 Assert.AreEqual (248, color.G, "#GhostWhite.G");
341 Assert.AreEqual (255, color.B, "#GhostWhite.B");
344 Assert.AreEqual (255, color.A, "#Gold.A");
345 Assert.AreEqual (255, color.R, "#Gold.R");
346 Assert.AreEqual (215, color.G, "#Gold.G");
347 Assert.AreEqual (0, color.B, "#Gold.B");
349 color = Color.Goldenrod;
350 Assert.AreEqual (255, color.A, "#Goldenrod.A");
351 Assert.AreEqual (218, color.R, "#Goldenrod.R");
352 Assert.AreEqual (165, color.G, "#Goldenrod.G");
353 Assert.AreEqual (32, color.B, "#Goldenrod.B");
356 Assert.AreEqual (255, color.A, "#Gray.A");
357 Assert.AreEqual (128, color.R, "#Gray.R");
358 Assert.AreEqual (128, color.G, "#Gray.G");
359 Assert.AreEqual (128, color.B, "#Gray.B");
362 Assert.AreEqual (255, color.A, "#Green.A");
363 Assert.AreEqual (0, color.R, "#Green.R");
364 // This test should compare Green.G with 255, but
365 // MS is using a value of 128 for Green.G
366 Assert.AreEqual (128, color.G, "#Green.G");
367 Assert.AreEqual (0, color.B, "#Green.B");
369 color = Color.GreenYellow;
370 Assert.AreEqual (255, color.A, "#GreenYellow.A");
371 Assert.AreEqual (173, color.R, "#GreenYellow.R");
372 Assert.AreEqual (255, color.G, "#GreenYellow.G");
373 Assert.AreEqual (47, color.B, "#GreenYellow.B");
375 color = Color.Honeydew;
376 Assert.AreEqual (255, color.A, "#Honeydew.A");
377 Assert.AreEqual (240, color.R, "#Honeydew.R");
378 Assert.AreEqual (255, color.G, "#Honeydew.G");
379 Assert.AreEqual (240, color.B, "#Honeydew.B");
381 color = Color.HotPink;
382 Assert.AreEqual (255, color.A, "#HotPink.A");
383 Assert.AreEqual (255, color.R, "#HotPink.R");
384 Assert.AreEqual (105, color.G, "#HotPink.G");
385 Assert.AreEqual (180, color.B, "#HotPink.B");
387 color = Color.IndianRed;
388 Assert.AreEqual (255, color.A, "#IndianRed.A");
389 Assert.AreEqual (205, color.R, "#IndianRed.R");
390 Assert.AreEqual (92, color.G, "#IndianRed.G");
391 Assert.AreEqual (92, color.B, "#IndianRed.B");
393 color = Color.Indigo;
394 Assert.AreEqual (255, color.A, "#Indigo.A");
395 Assert.AreEqual (75, color.R, "#Indigo.R");
396 Assert.AreEqual (0, color.G, "#Indigo.G");
397 Assert.AreEqual (130, color.B, "#Indigo.B");
400 Assert.AreEqual (255, color.A, "#Ivory.A");
401 Assert.AreEqual (255, color.R, "#Ivory.R");
402 Assert.AreEqual (255, color.G, "#Ivory.G");
403 Assert.AreEqual (240, color.B, "#Ivory.B");
406 Assert.AreEqual (255, color.A, "#Khaki.A");
407 Assert.AreEqual (240, color.R, "#Khaki.R");
408 Assert.AreEqual (230, color.G, "#Khaki.G");
409 Assert.AreEqual (140, color.B, "#Khaki.B");
411 color = Color.Lavender;
412 Assert.AreEqual (255, color.A, "#Lavender.A");
413 Assert.AreEqual (230, color.R, "#Lavender.R");
414 Assert.AreEqual (230, color.G, "#Lavender.G");
415 Assert.AreEqual (250, color.B, "#Lavender.B");
417 color = Color.LavenderBlush;
418 Assert.AreEqual (255, color.A, "#LavenderBlush.A");
419 Assert.AreEqual (255, color.R, "#LavenderBlush.R");
420 Assert.AreEqual (240, color.G, "#LavenderBlush.G");
421 Assert.AreEqual (245, color.B, "#LavenderBlush.B");
423 color = Color.LawnGreen;
424 Assert.AreEqual (255, color.A, "#LawnGreen.A");
425 Assert.AreEqual (124, color.R, "#LawnGreen.R");
426 Assert.AreEqual (252, color.G, "#LawnGreen.G");
427 Assert.AreEqual (0, color.B, "#LawnGreen.B");
429 color = Color.LemonChiffon;
430 Assert.AreEqual (255, color.A, "#LemonChiffon.A");
431 Assert.AreEqual (255, color.R, "#LemonChiffon.R");
432 Assert.AreEqual (250, color.G, "#LemonChiffon.G");
433 Assert.AreEqual (205, color.B, "#LemonChiffon.B");
435 color = Color.LightBlue;
436 Assert.AreEqual (255, color.A, "#LightBlue.A");
437 Assert.AreEqual (173, color.R, "#LightBlue.R");
438 Assert.AreEqual (216, color.G, "#LightBlue.G");
439 Assert.AreEqual (230, color.B, "#LightBlue.B");
441 color = Color.LightCoral;
442 Assert.AreEqual (255, color.A, "#LightCoral.A");
443 Assert.AreEqual (240, color.R, "#LightCoral.R");
444 Assert.AreEqual (128, color.G, "#LightCoral.G");
445 Assert.AreEqual (128, color.B, "#LightCoral.B");
447 color = Color.LightCyan;
448 Assert.AreEqual (255, color.A, "#LightCyan.A");
449 Assert.AreEqual (224, color.R, "#LightCyan.R");
450 Assert.AreEqual (255, color.G, "#LightCyan.G");
451 Assert.AreEqual (255, color.B, "#LightCyan.B");
453 color = Color.LightGoldenrodYellow;
454 Assert.AreEqual (255, color.A, "#LightGoldenrodYellow.A");
455 Assert.AreEqual (250, color.R, "#LightGoldenrodYellow.R");
456 Assert.AreEqual (250, color.G, "#LightGoldenrodYellow.G");
457 Assert.AreEqual (210, color.B, "#LightGoldenrodYellow.B");
459 color = Color.LightGreen;
460 Assert.AreEqual (255, color.A, "#LightGreen.A");
461 Assert.AreEqual (144, color.R, "#LightGreen.R");
462 Assert.AreEqual (238, color.G, "#LightGreen.G");
463 Assert.AreEqual (144, color.B, "#LightGreen.B");
465 color = Color.LightGray;
466 Assert.AreEqual (255, color.A, "#LightGray.A");
467 Assert.AreEqual (211, color.R, "#LightGray.R");
468 Assert.AreEqual (211, color.G, "#LightGray.G");
469 Assert.AreEqual (211, color.B, "#LightGray.B");
471 color = Color.LightPink;
472 Assert.AreEqual (255, color.A, "#LightPink.A");
473 Assert.AreEqual (255, color.R, "#LightPink.R");
474 Assert.AreEqual (182, color.G, "#LightPink.G");
475 Assert.AreEqual (193, color.B, "#LightPink.B");
477 color = Color.LightSalmon;
478 Assert.AreEqual (255, color.A, "#LightSalmon.A");
479 Assert.AreEqual (255, color.R, "#LightSalmon.R");
480 Assert.AreEqual (160, color.G, "#LightSalmon.G");
481 Assert.AreEqual (122, color.B, "#LightSalmon.B");
483 color = Color.LightSeaGreen;
484 Assert.AreEqual (255, color.A, "#LightSeaGreen.A");
485 Assert.AreEqual (32, color.R, "#LightSeaGreen.R");
486 Assert.AreEqual (178, color.G, "#LightSeaGreen.G");
487 Assert.AreEqual (170, color.B, "#LightSeaGreen.B");
489 color = Color.LightSkyBlue;
490 Assert.AreEqual (255, color.A, "#LightSkyBlue.A");
491 Assert.AreEqual (135, color.R, "#LightSkyBlue.R");
492 Assert.AreEqual (206, color.G, "#LightSkyBlue.G");
493 Assert.AreEqual (250, color.B, "#LightSkyBlue.B");
495 color = Color.LightSlateGray;
496 Assert.AreEqual (255, color.A, "#LightSlateGray.A");
497 Assert.AreEqual (119, color.R, "#LightSlateGray.R");
498 Assert.AreEqual (136, color.G, "#LightSlateGray.G");
499 Assert.AreEqual (153, color.B, "#LightSlateGray.B");
501 color = Color.LightSteelBlue;
502 Assert.AreEqual (255, color.A, "#LightSteelBlue.A");
503 Assert.AreEqual (176, color.R, "#LightSteelBlue.R");
504 Assert.AreEqual (196, color.G, "#LightSteelBlue.G");
505 Assert.AreEqual (222, color.B, "#LightSteelBlue.B");
507 color = Color.LightYellow;
508 Assert.AreEqual (255, color.A, "#LightYellow.A");
509 Assert.AreEqual (255, color.R, "#LightYellow.R");
510 Assert.AreEqual (255, color.G, "#LightYellow.G");
511 Assert.AreEqual (224, color.B, "#LightYellow.B");
514 Assert.AreEqual (255, color.A, "#Lime.A");
515 Assert.AreEqual (0, color.R, "#Lime.R");
516 Assert.AreEqual (255, color.G, "#Lime.G");
517 Assert.AreEqual (0, color.B, "#Lime.B");
519 color = Color.LimeGreen;
520 Assert.AreEqual (255, color.A, "#LimeGreen.A");
521 Assert.AreEqual (50, color.R, "#LimeGreen.R");
522 Assert.AreEqual (205, color.G, "#LimeGreen.G");
523 Assert.AreEqual (50, color.B, "#LimeGreen.B");
526 Assert.AreEqual (255, color.A, "#Linen.A");
527 Assert.AreEqual (250, color.R, "#Linen.R");
528 Assert.AreEqual (240, color.G, "#Linen.G");
529 Assert.AreEqual (230, color.B, "#Linen.B");
531 color = Color.Magenta;
532 Assert.AreEqual (255, color.A, "#Magenta.A");
533 Assert.AreEqual (255, color.R, "#Magenta.R");
534 Assert.AreEqual (0, color.G, "#Magenta.G");
535 Assert.AreEqual (255, color.B, "#Magenta.B");
537 color = Color.Maroon;
538 Assert.AreEqual (255, color.A, "#Maroon.A");
539 Assert.AreEqual (128, color.R, "#Maroon.R");
540 Assert.AreEqual (0, color.G, "#Maroon.G");
541 Assert.AreEqual (0, color.B, "#Maroon.B");
543 color = Color.MediumAquamarine;
544 Assert.AreEqual (255, color.A, "#MediumAquamarine.A");
545 Assert.AreEqual (102, color.R, "#MediumAquamarine.R");
546 Assert.AreEqual (205, color.G, "#MediumAquamarine.G");
547 Assert.AreEqual (170, color.B, "#MediumAquamarine.B");
549 color = Color.MediumBlue;
550 Assert.AreEqual (255, color.A, "#MediumBlue.A");
551 Assert.AreEqual (0, color.R, "#MediumBlue.R");
552 Assert.AreEqual (0, color.G, "#MediumBlue.G");
553 Assert.AreEqual (205, color.B, "#MediumBlue.B");
555 color = Color.MediumOrchid;
556 Assert.AreEqual (255, color.A, "#MediumOrchid.A");
557 Assert.AreEqual (186, color.R, "#MediumOrchid.R");
558 Assert.AreEqual (85, color.G, "#MediumOrchid.G");
559 Assert.AreEqual (211, color.B, "#MediumOrchid.B");
561 color = Color.MediumPurple;
562 Assert.AreEqual (255, color.A, "#MediumPurple.A");
563 Assert.AreEqual (147, color.R, "#MediumPurple.R");
564 Assert.AreEqual (112, color.G, "#MediumPurple.G");
565 Assert.AreEqual (219, color.B, "#MediumPurple.B");
567 color = Color.MediumSeaGreen;
568 Assert.AreEqual (255, color.A, "#MediumSeaGreen.A");
569 Assert.AreEqual (60, color.R, "#MediumSeaGreen.R");
570 Assert.AreEqual (179, color.G, "#MediumSeaGreen.G");
571 Assert.AreEqual (113, color.B, "#MediumSeaGreen.B");
573 color = Color.MediumSlateBlue;
574 Assert.AreEqual (255, color.A, "#MediumSlateBlue.A");
575 Assert.AreEqual (123, color.R, "#MediumSlateBlue.R");
576 Assert.AreEqual (104, color.G, "#MediumSlateBlue.G");
577 Assert.AreEqual (238, color.B, "#MediumSlateBlue.B");
579 color = Color.MediumSpringGreen;
580 Assert.AreEqual (255, color.A, "#MediumSpringGreen.A");
581 Assert.AreEqual (0, color.R, "#MediumSpringGreen.R");
582 Assert.AreEqual (250, color.G, "#MediumSpringGreen.G");
583 Assert.AreEqual (154, color.B, "#MediumSpringGreen.B");
585 color = Color.MediumTurquoise;
586 Assert.AreEqual (255, color.A, "#MediumTurquoise.A");
587 Assert.AreEqual (72, color.R, "#MediumTurquoise.R");
588 Assert.AreEqual (209, color.G, "#MediumTurquoise.G");
589 Assert.AreEqual (204, color.B, "#MediumTurquoise.B");
591 color = Color.MediumVioletRed;
592 Assert.AreEqual (255, color.A, "#MediumVioletRed.A");
593 Assert.AreEqual (199, color.R, "#MediumVioletRed.R");
594 Assert.AreEqual (21, color.G, "#MediumVioletRed.G");
595 Assert.AreEqual (133, color.B, "#MediumVioletRed.B");
597 color = Color.MidnightBlue;
598 Assert.AreEqual (255, color.A, "#MidnightBlue.A");
599 Assert.AreEqual (25, color.R, "#MidnightBlue.R");
600 Assert.AreEqual (25, color.G, "#MidnightBlue.G");
601 Assert.AreEqual (112, color.B, "#MidnightBlue.B");
603 color = Color.MintCream;
604 Assert.AreEqual (255, color.A, "#MintCream.A");
605 Assert.AreEqual (245, color.R, "#MintCream.R");
606 Assert.AreEqual (255, color.G, "#MintCream.G");
607 Assert.AreEqual (250, color.B, "#MintCream.B");
609 color = Color.MistyRose;
610 Assert.AreEqual (255, color.A, "#MistyRose.A");
611 Assert.AreEqual (255, color.R, "#MistyRose.R");
612 Assert.AreEqual (228, color.G, "#MistyRose.G");
613 Assert.AreEqual (225, color.B, "#MistyRose.B");
615 color = Color.Moccasin;
616 Assert.AreEqual (255, color.A, "#Moccasin.A");
617 Assert.AreEqual (255, color.R, "#Moccasin.R");
618 Assert.AreEqual (228, color.G, "#Moccasin.G");
619 Assert.AreEqual (181, color.B, "#Moccasin.B");
621 color = Color.NavajoWhite;
622 Assert.AreEqual (255, color.A, "#NavajoWhite.A");
623 Assert.AreEqual (255, color.R, "#NavajoWhite.R");
624 Assert.AreEqual (222, color.G, "#NavajoWhite.G");
625 Assert.AreEqual (173, color.B, "#NavajoWhite.B");
628 Assert.AreEqual (255, color.A, "#Navy.A");
629 Assert.AreEqual (0, color.R, "#Navy.R");
630 Assert.AreEqual (0, color.G, "#Navy.G");
631 Assert.AreEqual (128, color.B, "#Navy.B");
633 color = Color.OldLace;
634 Assert.AreEqual (255, color.A, "#OldLace.A");
635 Assert.AreEqual (253, color.R, "#OldLace.R");
636 Assert.AreEqual (245, color.G, "#OldLace.G");
637 Assert.AreEqual (230, color.B, "#OldLace.B");
640 Assert.AreEqual (255, color.A, "#Olive.A");
641 Assert.AreEqual (128, color.R, "#Olive.R");
642 Assert.AreEqual (128, color.G, "#Olive.G");
643 Assert.AreEqual (0, color.B, "#Olive.B");
645 color = Color.OliveDrab;
646 Assert.AreEqual (255, color.A, "#OliveDrab.A");
647 Assert.AreEqual (107, color.R, "#OliveDrab.R");
648 Assert.AreEqual (142, color.G, "#OliveDrab.G");
649 Assert.AreEqual (35, color.B, "#OliveDrab.B");
651 color = Color.Orange;
652 Assert.AreEqual (255, color.A, "#Orange.A");
653 Assert.AreEqual (255, color.R, "#Orange.R");
654 Assert.AreEqual (165, color.G, "#Orange.G");
655 Assert.AreEqual (0, color.B, "#Orange.B");
657 color = Color.OrangeRed;
658 Assert.AreEqual (255, color.A, "#OrangeRed.A");
659 Assert.AreEqual (255, color.R, "#OrangeRed.R");
660 Assert.AreEqual (69, color.G, "#OrangeRed.G");
661 Assert.AreEqual (0, color.B, "#OrangeRed.B");
663 color = Color.Orchid;
664 Assert.AreEqual (255, color.A, "#Orchid.A");
665 Assert.AreEqual (218, color.R, "#Orchid.R");
666 Assert.AreEqual (112, color.G, "#Orchid.G");
667 Assert.AreEqual (214, color.B, "#Orchid.B");
669 color = Color.PaleGoldenrod;
670 Assert.AreEqual (255, color.A, "#PaleGoldenrod.A");
671 Assert.AreEqual (238, color.R, "#PaleGoldenrod.R");
672 Assert.AreEqual (232, color.G, "#PaleGoldenrod.G");
673 Assert.AreEqual (170, color.B, "#PaleGoldenrod.B");
675 color = Color.PaleGreen;
676 Assert.AreEqual (255, color.A, "#PaleGreen.A");
677 Assert.AreEqual (152, color.R, "#PaleGreen.R");
678 Assert.AreEqual (251, color.G, "#PaleGreen.G");
679 Assert.AreEqual (152, color.B, "#PaleGreen.B");
681 color = Color.PaleTurquoise;
682 Assert.AreEqual (255, color.A, "#PaleTurquoise.A");
683 Assert.AreEqual (175, color.R, "#PaleTurquoise.R");
684 Assert.AreEqual (238, color.G, "#PaleTurquoise.G");
685 Assert.AreEqual (238, color.B, "#PaleTurquoise.B");
687 color = Color.PaleVioletRed;
688 Assert.AreEqual (255, color.A, "#PaleVioletRed.A");
689 Assert.AreEqual (219, color.R, "#PaleVioletRed.R");
690 Assert.AreEqual (112, color.G, "#PaleVioletRed.G");
691 Assert.AreEqual (147, color.B, "#PaleVioletRed.B");
693 color = Color.PapayaWhip;
694 Assert.AreEqual (255, color.A, "#PapayaWhip.A");
695 Assert.AreEqual (255, color.R, "#PapayaWhip.R");
696 Assert.AreEqual (239, color.G, "#PapayaWhip.G");
697 Assert.AreEqual (213, color.B, "#PapayaWhip.B");
699 color = Color.PeachPuff;
700 Assert.AreEqual (255, color.A, "#PeachPuff.A");
701 Assert.AreEqual (255, color.R, "#PeachPuff.R");
702 Assert.AreEqual (218, color.G, "#PeachPuff.G");
703 Assert.AreEqual (185, color.B, "#PeachPuff.B");
706 Assert.AreEqual (255, color.A, "#Peru.A");
707 Assert.AreEqual (205, color.R, "#Peru.R");
708 Assert.AreEqual (133, color.G, "#Peru.G");
709 Assert.AreEqual (63, color.B, "#Peru.B");
712 Assert.AreEqual (255, color.A, "#Pink.A");
713 Assert.AreEqual (255, color.R, "#Pink.R");
714 Assert.AreEqual (192, color.G, "#Pink.G");
715 Assert.AreEqual (203, color.B, "#Pink.B");
718 Assert.AreEqual (255, color.A, "#Plum.A");
719 Assert.AreEqual (221, color.R, "#Plum.R");
720 Assert.AreEqual (160, color.G, "#Plum.G");
721 Assert.AreEqual (221, color.B, "#Plum.B");
723 color = Color.PowderBlue;
724 Assert.AreEqual (255, color.A, "#PowderBlue.A");
725 Assert.AreEqual (176, color.R, "#PowderBlue.R");
726 Assert.AreEqual (224, color.G, "#PowderBlue.G");
727 Assert.AreEqual (230, color.B, "#PowderBlue.B");
729 color = Color.Purple;
730 Assert.AreEqual (255, color.A, "#Purple.A");
731 Assert.AreEqual (128, color.R, "#Purple.R");
732 Assert.AreEqual (0, color.G, "#Purple.G");
733 Assert.AreEqual (128, color.B, "#Purple.B");
736 Assert.AreEqual (255, color.A, "#Red.A");
737 Assert.AreEqual (255, color.R, "#Red.R");
738 Assert.AreEqual (0, color.G, "#Red.G");
739 Assert.AreEqual (0, color.B, "#Red.B");
741 color = Color.RosyBrown;
742 Assert.AreEqual (255, color.A, "#RosyBrown.A");
743 Assert.AreEqual (188, color.R, "#RosyBrown.R");
744 Assert.AreEqual (143, color.G, "#RosyBrown.G");
745 Assert.AreEqual (143, color.B, "#RosyBrown.B");
747 color = Color.RoyalBlue;
748 Assert.AreEqual (255, color.A, "#RoyalBlue.A");
749 Assert.AreEqual (65, color.R, "#RoyalBlue.R");
750 Assert.AreEqual (105, color.G, "#RoyalBlue.G");
751 Assert.AreEqual (225, color.B, "#RoyalBlue.B");
753 color = Color.SaddleBrown;
754 Assert.AreEqual (255, color.A, "#SaddleBrown.A");
755 Assert.AreEqual (139, color.R, "#SaddleBrown.R");
756 Assert.AreEqual (69, color.G, "#SaddleBrown.G");
757 Assert.AreEqual (19, color.B, "#SaddleBrown.B");
759 color = Color.Salmon;
760 Assert.AreEqual (255, color.A, "#Salmon.A");
761 Assert.AreEqual (250, color.R, "#Salmon.R");
762 Assert.AreEqual (128, color.G, "#Salmon.G");
763 Assert.AreEqual (114, color.B, "#Salmon.B");
765 color = Color.SandyBrown;
766 Assert.AreEqual (255, color.A, "#SandyBrown.A");
767 Assert.AreEqual (244, color.R, "#SandyBrown.R");
768 Assert.AreEqual (164, color.G, "#SandyBrown.G");
769 Assert.AreEqual (96, color.B, "#SandyBrown.B");
771 color = Color.SeaGreen;
772 Assert.AreEqual (255, color.A, "#SeaGreen.A");
773 Assert.AreEqual (46, color.R, "#SeaGreen.R");
774 Assert.AreEqual (139, color.G, "#SeaGreen.G");
775 Assert.AreEqual (87, color.B, "#SeaGreen.B");
777 color = Color.SeaShell;
778 Assert.AreEqual (255, color.A, "#SeaShell.A");
779 Assert.AreEqual (255, color.R, "#SeaShell.R");
780 Assert.AreEqual (245, color.G, "#SeaShell.G");
781 Assert.AreEqual (238, color.B, "#SeaShell.B");
783 color = Color.Sienna;
784 Assert.AreEqual (255, color.A, "#Sienna.A");
785 Assert.AreEqual (160, color.R, "#Sienna.R");
786 Assert.AreEqual (82, color.G, "#Sienna.G");
787 Assert.AreEqual (45, color.B, "#Sienna.B");
789 color = Color.Silver;
790 Assert.AreEqual (255, color.A, "#Silver.A");
791 Assert.AreEqual (192, color.R, "#Silver.R");
792 Assert.AreEqual (192, color.G, "#Silver.G");
793 Assert.AreEqual (192, color.B, "#Silver.B");
795 color = Color.SkyBlue;
796 Assert.AreEqual (255, color.A, "#SkyBlue.A");
797 Assert.AreEqual (135, color.R, "#SkyBlue.R");
798 Assert.AreEqual (206, color.G, "#SkyBlue.G");
799 Assert.AreEqual (235, color.B, "#SkyBlue.B");
801 color = Color.SlateBlue;
802 Assert.AreEqual (255, color.A, "#SlateBlue.A");
803 Assert.AreEqual (106, color.R, "#SlateBlue.R");
804 Assert.AreEqual (90, color.G, "#SlateBlue.G");
805 Assert.AreEqual (205, color.B, "#SlateBlue.B");
807 color = Color.SlateGray;
808 Assert.AreEqual (255, color.A, "#SlateGray.A");
809 Assert.AreEqual (112, color.R, "#SlateGray.R");
810 Assert.AreEqual (128, color.G, "#SlateGray.G");
811 Assert.AreEqual (144, color.B, "#SlateGray.B");
814 Assert.AreEqual (255, color.A, "#Snow.A");
815 Assert.AreEqual (255, color.R, "#Snow.R");
816 Assert.AreEqual (250, color.G, "#Snow.G");
817 Assert.AreEqual (250, color.B, "#Snow.B");
819 color = Color.SpringGreen;
820 Assert.AreEqual (255, color.A, "#SpringGreen.A");
821 Assert.AreEqual (0, color.R, "#SpringGreen.R");
822 Assert.AreEqual (255, color.G, "#SpringGreen.G");
823 Assert.AreEqual (127, color.B, "#SpringGreen.B");
825 color = Color.SteelBlue;
826 Assert.AreEqual (255, color.A, "#SteelBlue.A");
827 Assert.AreEqual (70, color.R, "#SteelBlue.R");
828 Assert.AreEqual (130, color.G, "#SteelBlue.G");
829 Assert.AreEqual (180, color.B, "#SteelBlue.B");
832 Assert.AreEqual (255, color.A, "#Tan.A");
833 Assert.AreEqual (210, color.R, "#Tan.R");
834 Assert.AreEqual (180, color.G, "#Tan.G");
835 Assert.AreEqual (140, color.B, "#Tan.B");
838 Assert.AreEqual (255, color.A, "#Teal.A");
839 Assert.AreEqual (0, color.R, "#Teal.R");
840 Assert.AreEqual (128, color.G, "#Teal.G");
841 Assert.AreEqual (128, color.B, "#Teal.B");
843 color = Color.Thistle;
844 Assert.AreEqual (255, color.A, "#Thistle.A");
845 Assert.AreEqual (216, color.R, "#Thistle.R");
846 Assert.AreEqual (191, color.G, "#Thistle.G");
847 Assert.AreEqual (216, color.B, "#Thistle.B");
849 color = Color.Tomato;
850 Assert.AreEqual (255, color.A, "#Tomato.A");
851 Assert.AreEqual (255, color.R, "#Tomato.R");
852 Assert.AreEqual (99, color.G, "#Tomato.G");
853 Assert.AreEqual (71, color.B, "#Tomato.B");
855 color = Color.Turquoise;
856 Assert.AreEqual (255, color.A, "#Turquoise.A");
857 Assert.AreEqual (64, color.R, "#Turquoise.R");
858 Assert.AreEqual (224, color.G, "#Turquoise.G");
859 Assert.AreEqual (208, color.B, "#Turquoise.B");
861 color = Color.Violet;
862 Assert.AreEqual (255, color.A, "#Violet.A");
863 Assert.AreEqual (238, color.R, "#Violet.R");
864 Assert.AreEqual (130, color.G, "#Violet.G");
865 Assert.AreEqual (238, color.B, "#Violet.B");
868 Assert.AreEqual (255, color.A, "#Wheat.A");
869 Assert.AreEqual (245, color.R, "#Wheat.R");
870 Assert.AreEqual (222, color.G, "#Wheat.G");
871 Assert.AreEqual (179, color.B, "#Wheat.B");
874 Assert.AreEqual (255, color.A, "#White.A");
875 Assert.AreEqual (255, color.R, "#White.R");
876 Assert.AreEqual (255, color.G, "#White.G");
877 Assert.AreEqual (255, color.B, "#White.B");
879 color = Color.WhiteSmoke;
880 Assert.AreEqual (255, color.A, "#WhiteSmoke.A");
881 Assert.AreEqual (245, color.R, "#WhiteSmoke.R");
882 Assert.AreEqual (245, color.G, "#WhiteSmoke.G");
883 Assert.AreEqual (245, color.B, "#WhiteSmoke.B");
885 color = Color.Yellow;
886 Assert.AreEqual (255, color.A, "#Yellow.A");
887 Assert.AreEqual (255, color.R, "#Yellow.R");
888 Assert.AreEqual (255, color.G, "#Yellow.G");
889 Assert.AreEqual (0, color.B, "#Yellow.B");
891 color = Color.YellowGreen;
892 Assert.AreEqual (255, color.A, "#YellowGreen.A");
893 Assert.AreEqual (154, color.R, "#YellowGreen.R");
894 Assert.AreEqual (205, color.G, "#YellowGreen.G");
895 Assert.AreEqual (50, color.B, "#YellowGreen.B");
898 static bool FloatsAlmostEqual (float v1, float v2)
900 float error = Math.Abs(v1-v2)/(v1+v2+float.Epsilon);
901 return error < 0.0001;
905 public void TestHBSValues ()
907 Assert.AreEqual (0.0f, Color.Black.GetBrightness (), "BrightnessBlack");
908 Assert.AreEqual (1.0f, Color.White.GetBrightness (), "BrightnessWhite");
910 Color c1 = Color.FromArgb (0, 13, 45, 7); //just some random color
911 Assert.IsTrue ( FloatsAlmostEqual (110.5263f, c1.GetHue ()), "Hue1");
912 Assert.IsTrue (FloatsAlmostEqual (0.1019608f, c1.GetBrightness ()), "Brightness1");
913 Assert.IsTrue (FloatsAlmostEqual (0.7307692f, c1.GetSaturation ()), "Saturation1");
915 Color c2 = Color.FromArgb (0, 112, 75, 29); //another random color
916 Assert.IsTrue ( FloatsAlmostEqual (33.25302f, c2.GetHue ()), "Hue2");
917 Assert.IsTrue (FloatsAlmostEqual (0.2764706f, c2.GetBrightness ()), "Brightness2");
918 Assert.IsTrue (FloatsAlmostEqual (0.5886525f, c2.GetSaturation ()), "Saturation2");
921 public void TestEquals ()
923 Color color = Color.Red;
924 Color color1 = Color.FromArgb (color.R, color.G, color.B);
925 Assert.IsTrue (!(color == color1), "Named color not == unnamed color");
926 Assert.IsTrue (!(color1 == color), "Named unnamed color == color not");
927 Assert.IsTrue ((color != color1), "Named color != unnamed color");
928 Assert.IsTrue ((color1 != color), "Named unnamed color != color not");
929 Assert.IsTrue (!color.Equals (color1), "Named color not equals unnamed color");
930 Assert.IsTrue (!color1.Equals (color), "Named unnamed color equals color not");
931 color = Color.FromArgb (0, color1);
932 Assert.IsTrue (!color.Equals (color1), "Alpha takes part in comparison");
935 public void TestIsEmpty ()
937 Color color = Color.Empty;
938 Assert.IsTrue (color.IsEmpty, "Empty color");
939 Assert.IsTrue (!Color.FromArgb (0, Color.Black).IsEmpty, "Not empty color");
943 public void IsKnownColor ()
945 Assert.IsTrue (Color.FromKnownColor(KnownColor.AliceBlue).IsKnownColor, "KnownColor");
946 Assert.IsTrue (Color.FromName("AliceBlue").IsKnownColor, "KnownColor");
947 Assert.AreEqual (false, Color.FromArgb (Color.AliceBlue.A, Color.AliceBlue.R, Color.AliceBlue.G, Color.AliceBlue.B).IsKnownColor, "Not KnownColor");
951 public void IsNamedColor ()
953 Assert.IsTrue (Color.AliceBlue.IsNamedColor, "NamedColor");
954 Assert.IsTrue (Color.FromKnownColor(KnownColor.AliceBlue).IsNamedColor, "NamedColor");
955 Assert.IsTrue (Color.FromName("AliceBlue").IsNamedColor, "NamedColor");
956 Assert.AreEqual (false, Color.FromArgb (Color.AliceBlue.A, Color.AliceBlue.R, Color.AliceBlue.G, Color.AliceBlue.B).IsNamedColor, "Not NamedColor");
960 public void IsSystemColor ()
962 Color c = Color.FromKnownColor (KnownColor.ActiveBorder);
963 Assert.IsTrue (c.IsSystemColor, "SystemColor#1");
964 Assert.IsTrue (Color.FromName("ActiveBorder").IsSystemColor, "SystemColor#2");
965 Assert.AreEqual (false, Color.FromArgb (c.A, c.R, c.G, c.B).IsSystemColor, "Not SystemColor#1");
966 Assert.AreEqual (false, Color.FromKnownColor(KnownColor.AliceBlue).IsSystemColor, "Not SystemColor#2");
967 Assert.AreEqual (false, Color.FromName("AliceBlue").IsSystemColor, "Not SystemColor#3");
973 Assert.AreEqual ("AliceBlue", Color.AliceBlue.Name, "Color.Name#1");
974 Assert.AreEqual ("ActiveBorder", Color.FromKnownColor (KnownColor.ActiveBorder).Name, "Color.Name#2");
975 Assert.AreEqual ("1122ccff", Color.FromArgb(0x11, 0x22, 0xcc, 0xff).Name, "Color.Name#3");
978 public void GetHashCodeTest ()
980 Color c = Color.AliceBlue;
981 Assert.AreEqual (false, Color.FromArgb (c.A, c.R, c.G, c.B).GetHashCode () == c.GetHashCode (), "GHC#1");
982 Assert.AreEqual (c.GetHashCode (), Color.FromName ("AliceBlue").GetHashCode (), "GHC#2");
985 public void ToArgb ()
987 Assert.AreEqual (0x11cc8833, Color.FromArgb (0x11, 0xcc, 0x88, 0x33).ToArgb (), "#1");
988 Assert.AreEqual (unchecked((int)0xf1cc8833), Color.FromArgb (0xf1, 0xcc, 0x88, 0x33).ToArgb (), "#2");
992 public void ToKnownColor ()
994 Assert.AreEqual (KnownColor.ActiveBorder, Color.FromName ("ActiveBorder").ToKnownColor (), "TKC#1");
995 Assert.AreEqual (KnownColor.AliceBlue, Color.AliceBlue.ToKnownColor (), "TKC#2");
996 KnownColor zero = Color.FromArgb (1, 2, 3, 4).ToKnownColor ();
997 Assert.AreEqual ((KnownColor)0, zero, "TKC#3");
1001 public void ToStringTest ()
1003 Assert.AreEqual ("Color [AliceBlue]", Color.AliceBlue.ToString (), "TS#1");
1004 Assert.AreEqual ("Color [ActiveBorder]", Color.FromKnownColor (KnownColor.ActiveBorder).ToString (), "TS#2");
1005 Assert.AreEqual ("Color [A=1, R=2, G=3, B=4]", Color.FromArgb(1, 2, 3, 4).ToString (), "TS#3");
1006 Assert.AreEqual ("Color [Empty]", Color.Empty.ToString (), "TS#4");
1010 public void Equality ()
1012 Color c = Color.AliceBlue;
1013 Assert.IsTrue (c == Color.FromName ("AliceBlue"), "EQ#1");
1014 Assert.AreEqual (false, c == Color.FromArgb (c.A, c.R, c.G, c.B), "EQ#2");
1015 Assert.IsTrue (c.Equals (Color.FromName ("AliceBlue")), "EQ#3");
1016 Assert.AreEqual (false, c.Equals(Color.FromArgb (c.A, c.R, c.G, c.B)), "EQ#4");
1017 Assert.AreEqual (false, c != Color.FromName ("AliceBlue"), "EQ#5");
1018 Assert.IsTrue(c != Color.FromArgb (c.A, c.R, c.G, c.B), "EQ#6");
1022 [ExpectedException (typeof (ArgumentException))]
1023 public void FromArgb_InvalidAlpha1 ()
1025 Color.FromArgb (-1, Color.Red);
1029 [ExpectedException (typeof (ArgumentException))]
1030 public void FromArgb_InvalidAlpha2 ()
1032 Color.FromArgb (256, Color.Red);
1036 [ExpectedException (typeof (ArgumentException))]
1037 public void FromArgb_InvalidAlpha3 ()
1039 Color.FromArgb (-1, 0, 0, 0);
1043 [ExpectedException (typeof (ArgumentException))]
1044 public void FromArgb_InvalidAlpha4 ()
1046 Color.FromArgb (256, 0, 0, 0);
1050 [ExpectedException (typeof (ArgumentException))]
1051 public void FromArgb_InvalidRed1 ()
1053 Color.FromArgb (-1, 0, 0);
1057 [ExpectedException (typeof (ArgumentException))]
1058 public void FromArgb_InvalidRed2 ()
1060 Color.FromArgb (256, 0, 0);
1064 [ExpectedException (typeof (ArgumentException))]
1065 public void FromArgb_InvalidRed3 ()
1067 Color.FromArgb (0, -1, 0, 0);
1071 [ExpectedException (typeof (ArgumentException))]
1072 public void FromArgb_InvalidRed4 ()
1074 Color.FromArgb (0, 256, 0, 0);
1078 [ExpectedException (typeof (ArgumentException))]
1079 public void FromArgb_InvalidGreen1 ()
1081 Color.FromArgb (0, -1, 0);
1085 [ExpectedException (typeof (ArgumentException))]
1086 public void FromArgb_InvalidGreen2 ()
1088 Color.FromArgb (0, 256, 0);
1092 [ExpectedException (typeof (ArgumentException))]
1093 public void FromArgb_InvalidGreen3 ()
1095 Color.FromArgb (0, 0, -1, 0);
1099 [ExpectedException (typeof (ArgumentException))]
1100 public void FromArgb_InvalidGreen4 ()
1102 Color.FromArgb (0, 0, 256, 0);
1106 [ExpectedException (typeof (ArgumentException))]
1107 public void FromArgb_InvalidBlue1 ()
1109 Color.FromArgb (0, 0, -1);
1113 [ExpectedException (typeof (ArgumentException))]
1114 public void FromArgb_InvalidBlue2 ()
1116 Color.FromArgb (0, 0, 256);
1120 [ExpectedException (typeof (ArgumentException))]
1121 public void FromArgb_InvalidBlue3 ()
1123 Color.FromArgb (0, 0, 0, -1);
1127 [ExpectedException (typeof (ArgumentException))]
1128 public void FromArgb_InvalidBlue4 ()
1130 Color.FromArgb (0, 0, 0, 256);
1134 public void FromName_Invalid () {
1135 Color c = Color.FromName ("OingoBoingo");
1136 Assert.IsTrue (c.IsNamedColor, "#1");
1137 Assert.AreEqual (c.ToArgb (), 0, "#2");
1138 Assert.AreEqual (c.Name, "OingoBoingo", "#3");
1141 private void CheckRed (string message, Color color)
1143 Assert.AreEqual (255, color.A, "A");
1144 Assert.AreEqual (255, color.R, "R");
1145 Assert.AreEqual (0, color.G, "G");
1146 Assert.AreEqual (0, color.B, "B");
1147 Assert.AreEqual ("Red", color.Name, "Name");
1148 Assert.IsTrue (!color.IsEmpty, "IsEmpty");
1149 Assert.IsTrue (color.IsKnownColor, "IsKnownColor");
1150 Assert.IsTrue (color.IsNamedColor, "IsNamedColor");
1151 Assert.IsTrue (!color.IsSystemColor, "IsSystemColor");
1155 public void SerializationRoundtrip ()
1157 Color c = Color.Red;
1158 CheckRed ("original", c);
1160 BinaryFormatter bf = new BinaryFormatter ();
1161 MemoryStream ms = new MemoryStream ();
1162 bf.Serialize (ms, c);
1165 Color color = (Color) bf.Deserialize (ms);
1166 CheckRed ("deserialized", color);
1169 // serialized under MS 2.0, can be deserialized on both MS 1.1 SP1 and 2.0
1170 static byte[] color_red = { 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
1171 0x00, 0x00, 0x00, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x51, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x44,
1172 0x72, 0x61, 0x77, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3D, 0x32,
1173 0x2E, 0x30, 0x2E, 0x30, 0x2E, 0x30, 0x2C, 0x20, 0x43, 0x75, 0x6C, 0x74, 0x75, 0x72, 0x65, 0x3D, 0x6E,
1174 0x65, 0x75, 0x74, 0x72, 0x61, 0x6C, 0x2C, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x4B, 0x65, 0x79,
1175 0x54, 0x6F, 0x6B, 0x65, 0x6E, 0x3D, 0x62, 0x30, 0x33, 0x66, 0x35, 0x66, 0x37, 0x66, 0x31, 0x31, 0x64,
1176 0x35, 0x30, 0x61, 0x33, 0x61, 0x05, 0x01, 0x00, 0x00, 0x00, 0x14, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D,
1177 0x2E, 0x44, 0x72, 0x61, 0x77, 0x69, 0x6E, 0x67, 0x2E, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x04, 0x00, 0x00,
1178 0x00, 0x04, 0x6E, 0x61, 0x6D, 0x65, 0x05, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x0A, 0x6B, 0x6E, 0x6F, 0x77,
1179 0x6E, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x01, 0x00, 0x00, 0x00, 0x09,
1180 0x07, 0x07, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x00,
1185 [Category ("NotWorking")]
1187 public void Deserialize ()
1189 BinaryFormatter bf = new BinaryFormatter ();
1190 MemoryStream ms = new MemoryStream (color_red);
1191 Color color = (Color) bf.Deserialize (ms);
1192 CheckRed ("deserialized", color);
1195 static byte [] color_blue = {
1196 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,
1197 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,
1198 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,
1199 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,
1200 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,
1201 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 };
1205 [Category ("NotWorking")]
1207 public void Deserialize2 ()
1209 BinaryFormatter bf = new BinaryFormatter ();
1210 MemoryStream ms = new MemoryStream (color_blue);
1211 Color color = (Color) bf.Deserialize (ms);
1212 Assert.AreEqual (255, color.A, "A");
1213 Assert.AreEqual (0, color.R, "R");
1214 Assert.AreEqual (0, color.G, "G");
1215 Assert.AreEqual (255, color.B, "B");
1216 Assert.AreEqual ("Blue", color.Name, "Name");
1217 Assert.IsTrue (!color.IsEmpty, "IsEmpty");
1218 Assert.IsTrue (color.IsKnownColor, "IsKnownColor");
1219 Assert.IsTrue (color.IsNamedColor, "IsNamedColor");
1220 Assert.IsTrue (!color.IsSystemColor, "IsSystemColor");
1223 static byte [] color_blue_fromargb = {
1224 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,
1225 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,
1226 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,
1227 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,
1228 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,
1229 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};
1233 [Category ("NotWorking")]
1235 public void Deserialize3 ()
1237 BinaryFormatter bf = new BinaryFormatter ();
1238 MemoryStream ms = new MemoryStream (color_blue_fromargb);
1239 Color color = (Color) bf.Deserialize (ms);
1240 Assert.AreEqual (255, color.A, "A");
1241 Assert.AreEqual (0, color.R, "R");
1242 Assert.AreEqual (0, color.G, "G");
1243 Assert.AreEqual (255, color.B, "B");
1244 Assert.AreEqual ("ff0000ff", color.Name, "Name");
1245 Assert.IsTrue (!color.IsEmpty, "IsEmpty");
1246 Assert.IsTrue (!color.IsKnownColor, "IsKnownColor");
1247 Assert.IsTrue (!color.IsNamedColor, "IsNamedColor");
1248 Assert.IsTrue (!color.IsSystemColor, "IsSystemColor");
1251 static byte [] _serializedV11 = {
1252 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01,
1253 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x00,
1254 0x00, 0x00, 0x54, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e,
1255 0x44, 0x72, 0x61, 0x77, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x56,
1256 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x31, 0x2e, 0x30,
1257 0x2e, 0x35, 0x30, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x43,
1258 0x75, 0x6c, 0x74, 0x75, 0x72, 0x65, 0x3d, 0x6e, 0x65, 0x75,
1259 0x74, 0x72, 0x61, 0x6c, 0x2c, 0x20, 0x50, 0x75, 0x62, 0x6c,
1260 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
1261 0x3d, 0x62, 0x30, 0x33, 0x66, 0x35, 0x66, 0x37, 0x66, 0x31,
1262 0x31, 0x64, 0x35, 0x30, 0x61, 0x33, 0x61, 0x05, 0x01, 0x00,
1263 0x00, 0x00, 0x14, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e,
1264 0x44, 0x72, 0x61, 0x77, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f,
1265 0x6c, 0x6f, 0x72, 0x04, 0x00, 0x00, 0x00, 0x05, 0x76, 0x61,
1266 0x6c, 0x75, 0x65, 0x0a, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x43,
1267 0x6f, 0x6c, 0x6f, 0x72, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
1268 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x01, 0x09,
1269 0x07, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1270 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x01, 0x00, 0x0a, 0x0b
1274 public void Deserialize4 ()
1277 using (MemoryStream ms = new MemoryStream ()) {
1278 BinaryFormatter formatter = new BinaryFormatter ();
1280 ms.Write (_serializedV11, 0, _serializedV11.Length);
1283 c = (Color) formatter.Deserialize (ms);
1284 Assert.AreEqual (Color.Green, c, "#1");
1289 private void Compare (KnownColor kc, GetSysColorIndex index)
1291 // we get BGR than needs to be converted into ARGB
1292 Color sc = ColorTranslator.FromWin32 ((int)GDIPlus.Win32GetSysColor (index));
1293 Assert.AreEqual (Color.FromKnownColor (kc).ToArgb (), sc.ToArgb (), kc.ToString ());
1297 public void WindowsSystemColors ()
1299 if (!GDIPlus.RunningOnWindows ())
1301 // ensure we can read *correctly* the Windows desktop colors
1302 Compare (KnownColor.ActiveBorder, GetSysColorIndex.COLOR_ACTIVEBORDER);
1303 Compare (KnownColor.ActiveCaption, GetSysColorIndex.COLOR_ACTIVECAPTION);
1304 Compare (KnownColor.ActiveCaptionText, GetSysColorIndex.COLOR_CAPTIONTEXT);
1305 Compare (KnownColor.AppWorkspace, GetSysColorIndex.COLOR_APPWORKSPACE);
1306 Compare (KnownColor.Control, GetSysColorIndex.COLOR_BTNFACE);
1307 Compare (KnownColor.ControlDark, GetSysColorIndex.COLOR_BTNSHADOW);
1308 Compare (KnownColor.ControlDarkDark, GetSysColorIndex.COLOR_3DDKSHADOW);
1309 Compare (KnownColor.ControlLight, GetSysColorIndex.COLOR_3DLIGHT);
1310 Compare (KnownColor.ControlLightLight, GetSysColorIndex.COLOR_BTNHIGHLIGHT);
1311 Compare (KnownColor.ControlText, GetSysColorIndex.COLOR_BTNTEXT);
1312 Compare (KnownColor.Desktop, GetSysColorIndex.COLOR_DESKTOP);
1313 Compare (KnownColor.GrayText, GetSysColorIndex.COLOR_GRAYTEXT);
1314 Compare (KnownColor.Highlight, GetSysColorIndex.COLOR_HIGHLIGHT);
1315 Compare (KnownColor.HighlightText, GetSysColorIndex.COLOR_HIGHLIGHTTEXT);
1316 Compare (KnownColor.HotTrack, GetSysColorIndex.COLOR_HOTLIGHT);
1317 Compare (KnownColor.InactiveBorder, GetSysColorIndex.COLOR_INACTIVEBORDER);
1318 Compare (KnownColor.InactiveCaption, GetSysColorIndex.COLOR_INACTIVECAPTION);
1319 Compare (KnownColor.InactiveCaptionText, GetSysColorIndex.COLOR_INACTIVECAPTIONTEXT);
1320 Compare (KnownColor.Info, GetSysColorIndex.COLOR_INFOBK);
1321 Compare (KnownColor.InfoText, GetSysColorIndex.COLOR_INFOTEXT);
1322 Compare (KnownColor.Menu, GetSysColorIndex.COLOR_MENU);
1323 Compare (KnownColor.MenuText, GetSysColorIndex.COLOR_MENUTEXT);
1324 Compare (KnownColor.ScrollBar, GetSysColorIndex.COLOR_SCROLLBAR);
1325 Compare (KnownColor.Window, GetSysColorIndex.COLOR_WINDOW);
1326 Compare (KnownColor.WindowFrame, GetSysColorIndex.COLOR_WINDOWFRAME);
1327 Compare (KnownColor.WindowText, GetSysColorIndex.COLOR_WINDOWTEXT);
1329 Compare (KnownColor.ButtonFace, GetSysColorIndex.COLOR_BTNFACE);
1330 Compare (KnownColor.ButtonHighlight, GetSysColorIndex.COLOR_BTNHIGHLIGHT);
1331 Compare (KnownColor.ButtonShadow, GetSysColorIndex.COLOR_BTNSHADOW);
1332 Compare (KnownColor.GradientActiveCaption, GetSysColorIndex.COLOR_GRADIENTACTIVECAPTION);
1333 Compare (KnownColor.GradientInactiveCaption, GetSysColorIndex.COLOR_GRADIENTINACTIVECAPTION);
1334 Compare (KnownColor.MenuBar, GetSysColorIndex.COLOR_MENUBAR);
1335 Compare (KnownColor.MenuHighlight, GetSysColorIndex.COLOR_MENUHIGHLIGHT);
1338 #endif // TARGET_JVM
1342 // Following code was used to generate the TestArgbValues method on MS.
1344 // Type cType = typeof (Color);
1345 // PropertyInfo [] properties = cType.GetProperties (BindingFlags.Public | BindingFlags.Static);
1346 //// Console.WriteLine ("number: " + properties.Length);
1348 // Console.WriteLine("\t\t[Test]");
1349 // Console.WriteLine("\t\tpublic void TestArgbValues ()");
1350 // Console.WriteLine("\t\t{");
1351 // Console.WriteLine("\t\t\tColor color;");
1352 // foreach (PropertyInfo property in properties) {
1354 // Console.WriteLine();
1355 // Console.WriteLine("\t\t\tcolor = Color.{0};", property.Name);
1356 // Color color = Color.FromName (property.Name);
1357 // Console.WriteLine("\t\t\tAssertEquals (\"#{0}.A\", {1}, color.A);", property.Name, color.A);
1358 // Console.WriteLine("\t\t\tAssertEquals (\"#{0}.R\", {1}, color.R);", property.Name, color.R);
1359 // Console.WriteLine("\t\t\tAssertEquals (\"#{0}.G\", {1}, color.G);", property.Name, color.G);
1360 // Console.WriteLine("\t\t\tAssertEquals (\"#{0}.B\", {1}, color.B);", property.Name, color.B);
1362 // Console.WriteLine("\t\t}");