2 // ColorConverter class testing unit
4 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
6 // Permission is hereby granted, free of charge, to any person obtaining
7 // a copy of this software and associated documentation files (the
8 // "Software"), to deal in the Software without restriction, including
9 // without limitation the rights to use, copy, modify, merge, publish,
10 // distribute, sublicense, and/or sell copies of the Software, and to
11 // permit persons to whom the Software is furnished to do so, subject to
12 // the following conditions:
14 // The above copyright notice and this permission notice shall be
15 // included in all copies or substantial portions of the Software.
17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 using System.Collections;
28 using System.ComponentModel;
29 using System.ComponentModel.Design.Serialization;
31 using System.Globalization;
32 using System.Security.Permissions;
34 using NUnit.Framework;
36 namespace MonoTests.System.Drawing {
39 [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
40 public class ColorConverterTest {
44 ColorConverter colconv;
46 String colStrInvariant;
50 public void SetUp () {
51 col = Color.FromArgb (10, 20, 30);
52 colStr = string.Format ("10{0} 20{0} 30", CultureInfo.CurrentCulture.TextInfo.ListSeparator);
53 colStrInvariant = string.Format ("10{0} 20{0} 30", CultureInfo.InvariantCulture.TextInfo.ListSeparator);
55 colnamed = Color.ForestGreen;
56 colnamedStr = "ForestGreen";
58 colconv = (ColorConverter) TypeDescriptor.GetConverter (col);
63 [NUnit.Framework.Category ("NotWorking")]
65 public void CanConvertFrom () {
66 Assert.IsTrue (colconv.CanConvertFrom (typeof (String)), "CCF#1");
67 Assert.IsTrue (colconv.CanConvertFrom (null, typeof (String)), "CCF#1a");
68 Assert.IsFalse (colconv.CanConvertFrom (null, typeof (Rectangle)), "CCF#2");
69 Assert.IsFalse (colconv.CanConvertFrom (null, typeof (RectangleF)), "CCF#3");
70 Assert.IsFalse (colconv.CanConvertFrom (null, typeof (Point)), "CCF#4");
71 Assert.IsFalse (colconv.CanConvertFrom (null, typeof (PointF)), "CCF#5");
72 Assert.IsFalse (colconv.CanConvertFrom (null, typeof (Color)), "CCF#6");
73 Assert.IsFalse (colconv.CanConvertFrom (null, typeof (SizeF)), "CCF#7");
74 Assert.IsFalse (colconv.CanConvertFrom (null, typeof (Object)), "CCF#8");
75 Assert.IsFalse ( colconv.CanConvertFrom (null, typeof (int)), "CCF#9");
76 Assert.IsTrue (colconv.CanConvertFrom (null, typeof (InstanceDescriptor)), "CCF#10");
80 public void CanConvertTo () {
81 Assert.IsTrue (colconv.CanConvertTo (typeof (String)), "CCT#1");
82 Assert.IsTrue (colconv.CanConvertTo (null, typeof (String)), "CCT#1a");
83 Assert.IsFalse (colconv.CanConvertTo (null, typeof (Rectangle)), "CCT#2");
84 Assert.IsFalse (colconv.CanConvertTo (null, typeof (RectangleF)), "CCT#3");
85 Assert.IsFalse (colconv.CanConvertTo (null, typeof (Point)), "CCT#4");
86 Assert.IsFalse (colconv.CanConvertTo (null, typeof (PointF)), "CCT#5");
87 Assert.IsFalse (colconv.CanConvertTo (null, typeof (Color)), "CCT#6");
88 Assert.IsFalse (colconv.CanConvertTo (null, typeof (SizeF)), "CCT#7");
89 Assert.IsFalse (colconv.CanConvertTo (null, typeof (Object)), "CCT#8");
90 Assert.IsFalse (colconv.CanConvertTo (null, typeof (int)), "CCT#9");
91 Assert.IsTrue (colconv.CanConvertTo (typeof (InstanceDescriptor)), "CCT#10");
96 [NUnit.Framework.Category ("NotWorking")]
98 public void ConvertFrom ()
100 Color color = (Color) colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
102 Assert.AreEqual (35, color.A, "CF1#1");
103 Assert.AreEqual (25, color.R, "CF1#2");
104 Assert.AreEqual (10, color.G, "CF1#3");
105 Assert.AreEqual (68, color.B, "CF1#4");
107 color = (Color) colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
109 Assert.AreEqual (0, color.A, "CF2#1");
110 Assert.AreEqual (25, color.R, "CF2#2");
111 Assert.AreEqual (10, color.G, "CF2#3");
112 Assert.AreEqual (68, color.B, "CF2#4");
114 color = (Color) colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
116 Assert.AreEqual (255, color.A, "CF3#1");
117 Assert.AreEqual (25, color.R, "CF3#2");
118 Assert.AreEqual (10, color.G, "CF3#3");
119 Assert.AreEqual (68, color.B, "CF3#4");
121 color = (Color) colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
123 Assert.AreEqual (255, color.A, "CF4#1");
124 Assert.AreEqual (25, color.R, "CF4#2");
125 Assert.AreEqual (10, color.G, "CF4#3");
126 Assert.AreEqual (68, color.B, "CF4#4");
128 color = (Color) colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
130 Assert.AreEqual (0, color.A, "CF5#1");
131 Assert.AreEqual (1, color.R, "CF5#2");
132 Assert.AreEqual (178, color.G, "CF5#3");
133 Assert.AreEqual (7, color.B, "CF5#4");
135 color = (Color) colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
137 Assert.AreEqual (0, color.A, "CF6#1");
138 Assert.AreEqual (0, color.R, "CF6#2");
139 Assert.AreEqual (0, color.G, "CF6#3");
140 Assert.AreEqual (10, color.B, "CF6#4");
142 color = (Color) colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
144 Assert.AreEqual (0, color.A, "CF7#1");
145 Assert.AreEqual (0, color.R, "CF7#2");
146 Assert.AreEqual (0, color.G, "CF7#3");
147 Assert.AreEqual (0, color.B, "CF7#4");
150 Assert.AreEqual (col, (Color) colconv.ConvertFrom (null,
151 CultureInfo.InvariantCulture, colStrInvariant), "CF#1");
152 Assert.AreEqual (colnamed, (Color) colconv.ConvertFrom (null,
153 CultureInfo.InvariantCulture, colnamedStr), "CF#2");
155 Assert.AreEqual (Color.Empty, colconv.ConvertFrom (string.Empty), "CF#3");
156 Assert.AreEqual (Color.Empty, colconv.ConvertFrom (" "), "CF#4");
157 Assert.AreEqual (Color.Red, colconv.ConvertFrom ("Red"), "CF#5");
158 Assert.AreEqual (Color.Red, colconv.ConvertFrom (" Red "), "CF#6");
160 color = (Color) colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
162 Assert.AreEqual (0, color.A, "CF8#1");
163 Assert.AreEqual (0, color.R, "CF8#2");
164 Assert.AreEqual (1, color.G, "CF8#3");
165 Assert.AreEqual (35, color.B, "CF8#4");
167 color = (Color) colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
169 Assert.AreEqual (0, color.A, "CF9#1");
170 Assert.AreEqual (0, color.R, "CF9#2");
171 Assert.AreEqual (1, color.G, "CF9#3");
172 Assert.AreEqual (35, color.B, "CF9#4");
176 [ExpectedException (typeof (ArgumentException))]
177 public void ConvertFrom_x1 ()
179 colconv.ConvertFrom (null, CultureInfo.InvariantCulture, "10, 20");
183 [ExpectedException (typeof (ArgumentException))]
184 public void ConvertFrom_x2 ()
186 colconv.ConvertFrom (null, CultureInfo.InvariantCulture, "-10, 20, 30");
190 [ExpectedException (typeof (ArgumentException))]
191 public void ConvertFrom_x3 ()
193 colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
198 [ExpectedException (typeof (Exception))]
200 [NUnit.Framework.Category ("NotWorking")]
202 public void ConvertFrom_x4 ()
204 colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
209 [ExpectedException (typeof (NotSupportedException))]
210 public void ConvertFrom_x5 ()
212 colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
217 [ExpectedException (typeof (NotSupportedException))]
218 public void ConvertFrom_x6 ()
220 colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
221 new PointF (10, 10));
225 [ExpectedException (typeof (NotSupportedException))]
226 public void ConvertFrom_x7 ()
228 colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
233 [ExpectedException (typeof (NotSupportedException))]
234 public void ConvertFrom_x8 ()
236 colconv.ConvertFrom (null, CultureInfo.InvariantCulture,
241 [ExpectedException (typeof (NotSupportedException))]
242 public void ConvertFrom_x9 ()
244 colconv.ConvertFrom (null, CultureInfo.InvariantCulture, 0x10);
248 public void ConvertFrom_CultureNull ()
250 Color color = (Color) colconv.ConvertFrom (null, null, "#0x23190A44");
251 Assert.AreEqual (35, color.A, "A");
252 Assert.AreEqual (25, color.R, "R");
253 Assert.AreEqual (10, color.G, "G");
254 Assert.AreEqual (68, color.B, "B");
258 public void ConvertTo ()
260 Assert.AreEqual (colStrInvariant, colconv.ConvertTo (null, CultureInfo.InvariantCulture,
261 Color.FromArgb (10, 20, 30), typeof (String)), "CT#1");
262 Assert.AreEqual (colStrInvariant, colconv.ConvertTo (null, CultureInfo.InvariantCulture,
263 Color.FromArgb (255, 10, 20, 30), typeof (String)), "CT#2");
264 Assert.AreEqual ("10, 20, 30, 40", colconv.ConvertTo (null, CultureInfo.InvariantCulture,
265 Color.FromArgb (10, 20, 30, 40), typeof (String)), "CT#3");
266 Assert.AreEqual (colnamedStr, colconv.ConvertTo (null, CultureInfo.InvariantCulture,
267 colnamed, typeof (String)), "CT#4");
269 Assert.AreEqual (string.Empty, colconv.ConvertTo (Color.Empty, typeof (string)), "CT#5");
270 Assert.AreEqual ("Red", colconv.ConvertTo (Color.Red, typeof (string)), "CT#6");
271 Assert.AreEqual (string.Empty, colconv.ConvertTo (null, typeof (string)), "CT#7");
272 Assert.AreEqual ("test", colconv.ConvertTo ("test", typeof (string)), "CT#8");
276 [ExpectedException (typeof (NotSupportedException))]
277 public void ConvertTo_x1 ()
279 colconv.ConvertTo (null, CultureInfo.InvariantCulture, col,
284 [ExpectedException (typeof (NotSupportedException))]
285 public void ConvertTo_x2 ()
287 colconv.ConvertTo (null, CultureInfo.InvariantCulture, col,
292 [ExpectedException (typeof (NotSupportedException))]
293 public void ConvertTo_x3 ()
295 colconv.ConvertTo (null, CultureInfo.InvariantCulture, col,
300 [ExpectedException (typeof (NotSupportedException))]
301 public void ConvertTo_x4 ()
303 colconv.ConvertTo (null, CultureInfo.InvariantCulture, col,
308 [ExpectedException (typeof (NotSupportedException))]
309 public void ConvertTo_x5 ()
311 colconv.ConvertTo (null, CultureInfo.InvariantCulture, col,
316 public void GetCreateInstanceSupported ()
318 Assert.IsTrue (!colconv.GetCreateInstanceSupported (), "GCIS#1");
319 Assert.IsTrue (!colconv.GetCreateInstanceSupported (null), "GCIS#2");
323 public void CreateInstance ()
325 Hashtable ht = new Hashtable ();
326 ht.Add ("R", 10); ht.Add ("G", 20); ht.Add ("B", 30);
328 Assert.AreEqual (null, colconv.CreateInstance (ht), "CI#1");
330 ht.Add ("Name", "ForestGreen");
332 Assert.AreEqual (null, colconv.CreateInstance (null, ht), "CI#2");
336 public void GetPropertiesSupported ()
338 Assert.IsTrue (!colconv.GetPropertiesSupported (), "GPS#1");
339 Assert.IsTrue (!colconv.GetPropertiesSupported (null), "GPS#2");
343 public void GetProperties ()
347 Assert.AreEqual (null, colconv.GetProperties (col), "GP1#1");
349 Assert.AreEqual (null, colconv.GetProperties (null, col, null), "GP2#1");
351 attrs = Attribute.GetCustomAttributes (typeof (Color), true);
352 Assert.AreEqual (null, colconv.GetProperties (null, col, attrs), "GP3#5");
356 public void ConvertFromInvariantString_string ()
358 Assert.AreEqual (col, colconv.ConvertFromInvariantString (colStrInvariant), "CFISS#1");
359 Assert.AreEqual (colnamed, colconv.ConvertFromInvariantString (colnamedStr), "CFISS#2");
363 [ExpectedException (typeof (ArgumentException))]
364 public void ConvertFromInvariantString_InvalidComponentCount ()
366 colconv.ConvertFromInvariantString ("1, 2, 3, 4, 5");
371 [NUnit.Framework.Category ("NotWorking")]
373 public void ConvertFromInvariantString_InvalidNumber ()
376 colconv.ConvertFromInvariantString ("hello");
378 } catch (Exception ex) {
379 Assert.AreEqual (typeof (Exception), ex.GetType (), "#2");
380 Assert.IsNotNull (ex.InnerException, "#3");
381 Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#3");
386 public void ConvertFromString_string ()
388 Assert.AreEqual (col, colconv.ConvertFromString (colStr), "CFSS#1");
389 Assert.AreEqual (colnamed, colconv.ConvertFromString (colnamedStr), "CFSS#2");
393 [ExpectedException (typeof (ArgumentException))]
394 public void ConvertFromString_InvalidComponentCount ()
396 CultureInfo culture = CultureInfo.CurrentCulture;
397 colconv.ConvertFromString (string.Format (culture,
398 "1{0} 2{0} 3{0} 4{0} 5", culture.TextInfo.ListSeparator[0]));
403 [NUnit.Framework.Category ("NotWorking")]
405 public void ConvertFromString_InvalidNumber ()
408 colconv.ConvertFromString ("hello");
410 } catch (Exception ex) {
411 Assert.AreEqual (typeof (Exception), ex.GetType (), "#2");
412 Assert.IsNotNull (ex.InnerException, "#3");
413 Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#3");
418 public void ConvertToInvariantString_string () {
419 Assert.AreEqual (colStrInvariant, colconv.ConvertToInvariantString (col), "CFISS#1");
420 Assert.AreEqual (colnamedStr, colconv.ConvertToInvariantString (colnamed), "CFISS#2");
424 public void ConvertToString_string () {
425 Assert.AreEqual (colStr, colconv.ConvertToString (col), "CFISS#1");
426 Assert.AreEqual (colnamedStr, colconv.ConvertToString (colnamed), "CFISS#3");
430 public void GetStandardValuesSupported () {
431 Assert.IsTrue (colconv.GetStandardValuesSupported ());
435 public void GetStandardValues () {
437 Assert.AreEqual ((int)KnownColor.MenuHighlight, colconv.GetStandardValues ().Count);
438 Assert.AreEqual ((int)KnownColor.MenuHighlight, colconv.GetStandardValues (null).Count);
440 Assert.AreEqual ((int)KnownColor.YellowGreen, colconv.GetStandardValues ().Count);
441 Assert.AreEqual ((int)KnownColor.YellowGreen, colconv.GetStandardValues (null).Count);
446 public void GetStandardValuesExclusive () {
447 Assert.AreEqual (false, colconv.GetStandardValuesExclusive ());
451 [ExpectedException (typeof (Exception))]
452 public void ConvertFromString_FromHtml_PoundTooLarge ()
454 colconv.ConvertFromString ("#100000000");