2 // System.ComponentModel.CultureInfoConverter test cases
5 // Gert Driesen (drieseng@users.sourceforge.net)
7 // (c) 2008 Gert Driesen
11 using System.ComponentModel;
12 using System.ComponentModel.Design.Serialization;
13 using System.Globalization;
15 using NUnit.Framework;
17 namespace MonoTests.System.ComponentModel
20 public class CultureInfoConverterTest
22 private CultureInfoConverter converter;
27 converter = new CultureInfoConverter ();
31 public void CanConvertFrom ()
33 Assert.IsTrue (converter.CanConvertFrom (typeof (string)), "#1");
34 Assert.IsFalse (converter.CanConvertFrom (typeof (CultureInfo)), "#2");
35 Assert.IsFalse (converter.CanConvertFrom (typeof (object)), "#3");
36 Assert.IsFalse (converter.CanConvertFrom (typeof (int)), "#4");
37 Assert.IsTrue (converter.CanConvertFrom (typeof (InstanceDescriptor)), "#5");
41 public void CanConvertTo ()
43 Assert.IsTrue (converter.CanConvertTo (typeof (string)), "#1");
44 Assert.IsFalse (converter.CanConvertTo (typeof (object)), "#2");
45 Assert.IsFalse (converter.CanConvertTo (typeof (CultureInfo)), "#3");
46 Assert.IsFalse (converter.CanConvertTo (typeof (int)), "#4");
47 Assert.IsTrue (converter.CanConvertTo (typeof (InstanceDescriptor)), "#5");
51 public void ConvertFrom_String ()
55 c = (CultureInfo) converter.ConvertFrom (null, CultureInfo.InvariantCulture,
57 Assert.AreEqual (CultureInfo.InvariantCulture, c, "#1");
59 c = (CultureInfo) converter.ConvertFrom (null, CultureInfo.InvariantCulture,
61 Assert.AreEqual (new CultureInfo ("nl-BE"), c, "#2");
64 c = (CultureInfo) converter.ConvertFrom (null, CultureInfo.InvariantCulture,
67 } catch (ArgumentException) {
71 c = (CultureInfo) converter.ConvertFrom (null, CultureInfo.InvariantCulture,
74 } catch (ArgumentException) {
78 c = (CultureInfo) converter.ConvertFrom (null, CultureInfo.InvariantCulture,
81 } catch (ArgumentException) {
84 c = (CultureInfo) converter.ConvertFrom (null, CultureInfo.InvariantCulture,
86 Assert.AreEqual (CultureInfo.InvariantCulture, c, "#6");
90 public void ConvertFrom_String_IncompleteName ()
92 converter.ConvertFrom (null, CultureInfo.InvariantCulture,
97 public void ConvertFrom_String_InvalidCulture ()
100 converter.ConvertFrom (null, CultureInfo.InvariantCulture,
103 } catch (ArgumentException ex) {
104 // The (default) culture cannot be converted to
105 // a CultureInfo object on this computer
106 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
107 Assert.IsNull (ex.InnerException, "#A3");
108 Assert.IsNotNull (ex.Message, "#A4");
109 Assert.IsTrue (ex.Message.IndexOf (typeof (CultureInfo).Name) != -1, "#A5");
110 Assert.IsTrue (ex.Message.IndexOf ("(default)") != -1, "#A6");
111 Assert.IsNull (ex.ParamName, "#A7");
115 converter.ConvertFrom (null, CultureInfo.InvariantCulture,
118 } catch (ArgumentException ex) {
119 // The culture cannot be converted to
120 // a CultureInfo object on this computer
121 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
122 Assert.IsNull (ex.InnerException, "#B3");
123 Assert.IsNotNull (ex.Message, "#B4");
124 Assert.IsTrue (ex.Message.IndexOf (typeof (CultureInfo).Name) != -1, "#B5");
125 Assert.IsTrue (ex.Message.IndexOf (" ") != -1, "#B6");
126 Assert.IsNull (ex.ParamName, "#B7");
130 converter.ConvertFrom (null, CultureInfo.InvariantCulture,
133 } catch (ArgumentException ex) {
134 // The \r\n culture cannot be converted to
135 // a CultureInfo object on this computer
136 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
137 Assert.IsNull (ex.InnerException, "#C3");
138 Assert.IsNotNull (ex.Message, "#C4");
139 Assert.IsTrue (ex.Message.IndexOf (typeof (CultureInfo).Name) != -1, "#C5");
140 Assert.IsTrue (ex.Message.IndexOf ("\r\n") != -1, "#C6");
141 Assert.IsNull (ex.ParamName, "#C7");
146 public void ConvertFrom_Value_Null ()
149 converter.ConvertFrom (null, CultureInfo.InvariantCulture,
152 } catch (NotSupportedException ex) {
153 // CultureInfoConverter cannot convert from (null)
154 Assert.AreEqual (typeof (NotSupportedException), ex.GetType (), "#2");
155 Assert.IsNull (ex.InnerException, "#3");
156 Assert.IsNotNull (ex.Message, "#4");
157 Assert.IsTrue (ex.Message.IndexOf (typeof (CultureInfoConverter).Name) != -1, "#5");
158 Assert.IsTrue (ex.Message.IndexOf ("(null)") != -1, "#6");
163 public void ConvertToString ()
167 result = converter.ConvertToString (null, CultureInfo.InvariantCulture,
168 new MyCultureInfo ());
169 Assert.AreEqual ("nl-BE", result, "#1");
171 result = converter.ConvertToString (null, CultureInfo.InvariantCulture,
173 Assert.AreEqual ("(Default)", result, "#2");
175 result = converter.ConvertToString (null, CultureInfo.InvariantCulture,
176 CultureInfo.InvariantCulture);
177 Assert.AreEqual ("(Default)", result, "#3");
179 result = converter.ConvertToString (null, CultureInfo.InvariantCulture,
180 new CultureInfo ("nl-BE"));
181 Assert.AreEqual ("nl-BE", result, "#4");
185 private sealed class MyCultureInfo : CultureInfo
187 internal MyCultureInfo () : base ("nl-BE")
191 public override string DisplayName {
192 get { return "display"; }
195 public override string EnglishName {
196 get { return "english"; }
202 public void GetCultureName ()
204 CustomCultureInfoConverter custom_converter = new CustomCultureInfoConverter ();
206 CultureInfo fr_culture = CultureInfo.GetCultureInfo ("fr-FR");
207 Assert.AreEqual (fr_culture.Name, custom_converter.GetCultureName (fr_culture), "#A1");
209 CultureInfo es_culture = CultureInfo.GetCultureInfo ("es-MX");
210 Assert.AreEqual (es_culture.Name, custom_converter.GetCultureName (es_culture), "#A2");
213 class CustomCultureInfoConverter : CultureInfoConverter
215 public new string GetCultureName (CultureInfo culture)
217 return base.GetCultureName (culture);