2 // System.Globalization.CultureInfo Test Cases
5 // Gonzalo Paniagua Javier (gonzalo@ximian.com)
7 // (c) 2005 Novell, Inc. (http://www.novell.com)
11 using System.Globalization;
13 using System.Runtime.Serialization.Formatters.Binary;
14 using System.Threading;
16 using NUnit.Framework;
18 namespace MonoTests.System.Globalization
21 public class CultureInfoTest
23 CultureInfo old_culture;
28 old_culture = Thread.CurrentThread.CurrentCulture;
32 public void TearDown ()
34 Thread.CurrentThread.CurrentCulture = old_culture;
38 public void Constructor0 ()
40 CultureInfo ci = new CultureInfo (2067);
41 Assert.IsFalse (ci.IsReadOnly, "#1");
42 Assert.AreEqual (2067, ci.LCID, "#2");
43 Assert.AreEqual ("nl-BE", ci.Name, "#3");
44 Assert.IsTrue (ci.UseUserOverride, "#4");
48 public void Constructor0_Identifier_Negative ()
53 } catch (ArgumentOutOfRangeException ex) {
54 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
55 Assert.IsNull (ex.InnerException, "#3");
56 Assert.IsNotNull (ex.Message, "#4");
57 Assert.IsNotNull (ex.ParamName, "#5");
58 Assert.AreEqual ("culture", ex.ParamName, "#6");
63 public void Constructor1 ()
65 CultureInfo ci = new CultureInfo ("nl-BE");
66 Assert.IsFalse (ci.IsReadOnly, "#1");
67 Assert.AreEqual (2067, ci.LCID, "#2");
68 Assert.AreEqual ("nl-BE", ci.Name, "#3");
69 Assert.IsTrue (ci.UseUserOverride, "#4");
73 public void Constructor1_Name_Null ()
76 new CultureInfo ((string) null);
78 } catch (ArgumentNullException ex) {
79 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
80 Assert.IsNull (ex.InnerException, "#3");
81 Assert.IsNotNull (ex.Message, "#4");
82 Assert.IsNotNull (ex.ParamName, "#5");
83 Assert.AreEqual ("name", ex.ParamName, "#6");
88 public void Constructor2 ()
90 CultureInfo ci = new CultureInfo (2067, false);
91 Assert.IsFalse (ci.IsReadOnly, "#A1");
92 Assert.AreEqual (2067, ci.LCID, "#A2");
93 Assert.AreEqual ("nl-BE", ci.Name, "#A3");
94 Assert.IsFalse (ci.UseUserOverride, "#A4");
96 ci = new CultureInfo (2067, true);
97 Assert.IsFalse (ci.IsReadOnly, "#B1");
98 Assert.AreEqual (2067, ci.LCID, "#B2");
99 Assert.AreEqual ("nl-BE", ci.Name, "#B3");
100 Assert.IsTrue (ci.UseUserOverride, "#B4");
104 public void Constructor2_Identifier_Negative ()
107 new CultureInfo (-1, false);
109 } catch (ArgumentOutOfRangeException ex) {
110 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
111 Assert.IsNull (ex.InnerException, "#3");
112 Assert.IsNotNull (ex.Message, "#4");
113 Assert.IsNotNull (ex.ParamName, "#5");
114 Assert.AreEqual ("culture", ex.ParamName, "#6");
119 public void Constructor3 ()
121 CultureInfo ci = new CultureInfo ("nl-BE", false);
122 Assert.IsFalse (ci.IsReadOnly, "#A1");
123 Assert.AreEqual (2067, ci.LCID, "#A2");
124 Assert.AreEqual ("nl-BE", ci.Name, "#A3");
125 Assert.IsFalse (ci.UseUserOverride, "#A4");
127 ci = new CultureInfo ("nl-BE", true);
128 Assert.IsFalse (ci.IsReadOnly, "#B1");
129 Assert.AreEqual (2067, ci.LCID, "#B2");
130 Assert.AreEqual ("nl-BE", ci.Name, "#B3");
131 Assert.IsTrue (ci.UseUserOverride, "#B4");
135 public void Constructor3_Name_Null ()
138 new CultureInfo ((string) null, false);
140 } catch (ArgumentNullException ex) {
141 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
142 Assert.IsNull (ex.InnerException, "#3");
143 Assert.IsNotNull (ex.Message, "#4");
144 Assert.IsNotNull (ex.ParamName, "#5");
145 Assert.AreEqual ("name", ex.ParamName, "#6");
150 public void CreateSpecificCulture ()
152 var ci = CultureInfo.CreateSpecificCulture ("en");
153 Assert.AreEqual ("en-US", ci.Name, "#1");
155 ci = CultureInfo.CreateSpecificCulture ("en-GB");
156 Assert.AreEqual ("en-GB", ci.Name, "#2");
158 ci = CultureInfo.CreateSpecificCulture ("en-----");
159 Assert.AreEqual ("en-US", ci.Name, "#3");
161 ci = CultureInfo.CreateSpecificCulture ("en-GB-");
162 Assert.AreEqual ("en-US", ci.Name, "#4");
164 ci = CultureInfo.CreateSpecificCulture ("");
165 Assert.AreEqual (CultureInfo.InvariantCulture, ci, "#5");
169 public void CreateSpecificCulture_Invalid ()
172 CultureInfo.CreateSpecificCulture ("uy32");
175 } catch (CultureNotFoundException) {
177 } catch (ArgumentException) {
182 CultureInfo.CreateSpecificCulture (null);
184 } catch (ArgumentNullException) {
185 // .NET throws NRE which is lame
190 public void DateTimeFormat_Neutral_Culture ()
192 CultureInfo ci = new CultureInfo ("nl");
194 DateTimeFormatInfo dfi = ci.DateTimeFormat;
196 Assert.IsNotNull (dfi, "#1");
198 Assert.Fail ("#1:" + (dfi != null));
200 } catch (NotSupportedException ex) {
201 Assert.AreEqual (typeof (NotSupportedException), ex.GetType (), "#2");
202 Assert.IsNull (ex.InnerException, "#3");
203 Assert.IsNotNull (ex.Message, "#4");
208 public void GetAllCulturesInvariant ()
210 CultureInfo invariant = CultureInfo.InvariantCulture;
211 CultureInfo [] infos = CultureInfo.GetCultures (CultureTypes.AllCultures);
212 foreach (CultureInfo culture in infos) {
213 if (culture.Equals (invariant))
217 Assert.Fail ("InvariantCulture not found in the array from GetCultures()");
222 [ExpectedException (typeof (NotSupportedException))]
224 public void TrySetNeutralCultureNotInvariant ()
226 Thread.CurrentThread.CurrentCulture = new CultureInfo ("ar");
230 [Category ("TargetJvmNotWorking")] //OptionalCalendars not yet supported for TARGET_JVM.
231 // make sure that all CultureInfo holds non-null calendars.
232 public void OptionalCalendars ()
235 // ensure the linker does not remove them so we can test them
236 Assert.IsNotNull (typeof (UmAlQuraCalendar), "UmAlQuraCalendar");
238 foreach (CultureInfo ci in CultureInfo.GetCultures (
239 CultureTypes.AllCultures))
240 Assert.IsNotNull (ci.OptionalCalendars, String.Format ("{0} {1}",
245 public void CloneNeutral ()
247 CultureInfo culture = new CultureInfo ("en");
248 CultureInfo cultureClone = culture.Clone () as CultureInfo;
249 Assert.IsTrue (culture.Equals (cultureClone));
253 public void IsNeutral ()
255 var ci = new CultureInfo (0x6C1A);
256 Assert.IsTrue (ci.IsNeutralCulture, "#1");
257 Assert.AreEqual ("srp", ci.ThreeLetterISOLanguageName, "#2");
259 ci = new CultureInfo ("en-US");
260 Assert.IsFalse (ci.IsNeutralCulture, "#1a");
261 Assert.AreEqual ("eng", ci.ThreeLetterISOLanguageName, "#2a");
265 public void IsReadOnly ()
269 ci = new CultureInfo ("en-US");
270 Assert.IsFalse (ci.IsReadOnly, "#A1");
271 Assert.IsFalse (ci.NumberFormat.IsReadOnly, "#A2");
272 Assert.IsFalse (ci.DateTimeFormat.IsReadOnly, "#A3");
273 ci.NumberFormat.NumberGroupSeparator = ",";
274 ci.NumberFormat = new NumberFormatInfo ();
275 ci.DateTimeFormat.DateSeparator = "/";
276 ci.DateTimeFormat = new DateTimeFormatInfo ();
277 Assert.IsFalse (ci.NumberFormat.IsReadOnly, "#A4");
278 Assert.IsFalse (ci.DateTimeFormat.IsReadOnly, "#A5");
280 ci = new CultureInfo (CultureInfo.InvariantCulture.LCID);
281 Assert.IsFalse (ci.IsReadOnly, "#B1");
282 Assert.IsFalse (ci.NumberFormat.IsReadOnly, "#B2");
283 Assert.IsFalse (ci.DateTimeFormat.IsReadOnly, "#B3");
284 ci.NumberFormat.NumberGroupSeparator = ",";
285 ci.NumberFormat = new NumberFormatInfo ();
286 ci.DateTimeFormat.DateSeparator = "/";
287 ci.DateTimeFormat = new DateTimeFormatInfo ();
288 Assert.IsFalse (ci.NumberFormat.IsReadOnly, "#B4");
289 Assert.IsFalse (ci.DateTimeFormat.IsReadOnly, "#B5");
291 ci = CultureInfo.CurrentCulture;
292 Assert.IsTrue (ci.IsReadOnly, "#C1:" + ci.DisplayName);
293 Assert.IsTrue (ci.NumberFormat.IsReadOnly, "#C2");
294 Assert.IsTrue (ci.DateTimeFormat.IsReadOnly, "#C3");
296 ci.NumberFormat.NumberGroupSeparator = ",";
298 } catch (InvalidOperationException ex) {
299 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C5");
300 Assert.IsNull (ex.InnerException, "#C6");
301 Assert.IsNotNull (ex.Message, "#C7");
304 ci = CultureInfo.CurrentUICulture;
305 Assert.IsTrue (ci.IsReadOnly, "#D1");
306 Assert.IsTrue (ci.NumberFormat.IsReadOnly, "#D2");
307 Assert.IsTrue (ci.DateTimeFormat.IsReadOnly, "#D3");
309 ci.NumberFormat.NumberGroupSeparator = ",";
311 } catch (InvalidOperationException ex) {
312 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D5");
313 Assert.IsNull (ex.InnerException, "#D6");
314 Assert.IsNotNull (ex.Message, "#D7");
317 ci = CultureInfo.InvariantCulture;
318 Assert.IsTrue (ci.IsReadOnly, "#F1");
319 Assert.IsTrue (ci.NumberFormat.IsReadOnly, "#F2");
320 Assert.IsTrue (ci.DateTimeFormat.IsReadOnly, "#F3");
322 ci.NumberFormat.NumberGroupSeparator = ",";
324 } catch (InvalidOperationException ex) {
325 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#F5");
326 Assert.IsNull (ex.InnerException, "#F6");
327 Assert.IsNotNull (ex.Message, "#F7");
330 ci = new CultureInfo (string.Empty);
331 Assert.IsFalse (ci.IsReadOnly, "#G1");
332 Assert.IsFalse (ci.NumberFormat.IsReadOnly, "#G2");
333 Assert.IsFalse (ci.DateTimeFormat.IsReadOnly, "#G3");
334 ci.NumberFormat.NumberGroupSeparator = ",";
335 ci.NumberFormat = new NumberFormatInfo ();
336 ci.DateTimeFormat.DateSeparator = "/";
337 ci.DateTimeFormat = new DateTimeFormatInfo ();
338 Assert.IsFalse (ci.NumberFormat.IsReadOnly, "#G4");
339 Assert.IsFalse (ci.DateTimeFormat.IsReadOnly, "#G5");
343 public void IsReadOnly_GetCultures ()
345 foreach (CultureInfo ci in CultureInfo.GetCultures (CultureTypes.AllCultures)) {
346 string cultureMsg = String.Format ("{0} {1}", ci.LCID, ci.Name);
347 Assert.IsFalse (ci.IsReadOnly, "#1:" + cultureMsg);
348 if (ci.IsNeutralCulture)
350 Assert.IsFalse (ci.NumberFormat.IsReadOnly, "#2:" + cultureMsg);
351 Assert.IsFalse (ci.DateTimeFormat.IsReadOnly, "#3:" + cultureMsg);
356 [Category ("NotWorking")]
357 public void IsReadOnly_InstalledUICulture ()
359 CultureInfo ci = CultureInfo.InstalledUICulture;
360 Assert.IsTrue (ci.IsReadOnly, "#1");
361 Assert.IsTrue (ci.NumberFormat.IsReadOnly, "#2");
362 Assert.IsTrue (ci.DateTimeFormat.IsReadOnly, "#3");
364 ci.NumberFormat.NumberGroupSeparator = ",";
366 } catch (InvalidOperationException ex) {
367 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#5");
368 Assert.IsNull (ex.InnerException, "#6");
369 Assert.IsNotNull (ex.Message, "#7");
374 public void Norwegian ()
376 new CultureInfo ("no");
377 new CultureInfo ("nb-NO");
378 new CultureInfo ("nn-NO");
382 public void NumberFormat_Neutral_Culture ()
384 CultureInfo ci = new CultureInfo ("nl");
386 NumberFormatInfo nfi = ci.NumberFormat;
388 Assert.IsNotNull (nfi, "#1");
390 Assert.Fail ("#1:" + (nfi != null));
392 } catch (NotSupportedException ex) {
393 Assert.AreEqual (typeof (NotSupportedException), ex.GetType (), "#2");
394 Assert.IsNull (ex.InnerException, "#3");
395 Assert.IsNotNull (ex.Message, "#4");
400 [Category ("NotDotNet")] // On MS, the NumberFormatInfo of the CultureInfo matching the current locale is not read-only
401 public void GetCultureInfo_Identifier ()
403 foreach (CultureInfo ci in CultureInfo.GetCultures (CultureTypes.AllCultures)) {
404 string cultureMsg = String.Format ("{0} {1}", ci.LCID, ci.Name);
405 CultureInfo culture = CultureInfo.GetCultureInfo (ci.LCID);
406 Assert.IsTrue (culture.IsReadOnly, "#1:" + cultureMsg);
407 if (culture.IsNeutralCulture)
409 Assert.IsTrue (culture.NumberFormat.IsReadOnly, "#2:" + cultureMsg);
410 Assert.IsTrue (culture.DateTimeFormat.IsReadOnly, "#3:" + cultureMsg);
415 public void GetCultureInfo_Identifier_Negative ()
418 CultureInfo.GetCultureInfo (-1);
420 } catch (ArgumentOutOfRangeException ex) {
421 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
422 Assert.IsNull (ex.InnerException, "#3");
423 Assert.IsNotNull (ex.Message, "#4");
424 Assert.IsNotNull (ex.ParamName, "#5");
425 Assert.AreEqual ("culture", ex.ParamName, "#6");
430 public void GetCultureInfo_Identifier_NotSupported ()
433 CultureInfo.GetCultureInfo (666);
435 } catch (ArgumentException ex) {
437 Assert.AreEqual (typeof (CultureNotFoundException), ex.GetType (), "#2");
439 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
441 Assert.IsNull (ex.InnerException, "#3");
442 Assert.IsNotNull (ex.Message, "#4");
443 Assert.IsNotNull (ex.ParamName, "#5");
444 Assert.AreEqual ("culture", ex.ParamName, "#6");
449 [Category ("NotDotNet")] // On MS, the NumberFormatInfo of the CultureInfo matching the current locale is not read-only
450 public void GetCultureInfo_Name ()
452 foreach (CultureInfo ci in CultureInfo.GetCultures (CultureTypes.AllCultures)) {
453 string cultureMsg = String.Format ("{0} {1}", ci.LCID, ci.Name);
454 CultureInfo culture = CultureInfo.GetCultureInfo (ci.Name);
455 Assert.IsTrue (culture.IsReadOnly, "#1:" + cultureMsg);
456 if (culture.IsNeutralCulture)
458 Assert.IsTrue (culture.NumberFormat.IsReadOnly, "#2:" + cultureMsg);
459 Assert.IsTrue (culture.DateTimeFormat.IsReadOnly, "#3:" + cultureMsg);
464 public void GetCultureInfo_Name_NotSupported ()
467 CultureInfo.GetCultureInfo ("666");
469 } catch (ArgumentException ex) {
471 Assert.AreEqual (typeof (CultureNotFoundException), ex.GetType (), "#2");
473 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
475 Assert.IsNull (ex.InnerException, "#3");
476 Assert.IsNotNull (ex.Message, "#4");
477 Assert.IsNotNull (ex.ParamName, "#5");
478 Assert.AreEqual ("name", ex.ParamName, "#6");
483 public void GetCultureInfo_Name_Null ()
486 CultureInfo.GetCultureInfo ((string) null);
488 } catch (ArgumentNullException ex) {
489 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
490 Assert.IsNull (ex.InnerException, "#3");
491 Assert.IsNotNull (ex.Message, "#4");
492 Assert.IsNotNull (ex.ParamName, "#5");
493 Assert.AreEqual ("name", ex.ParamName, "#6");
498 public void UseUserOverride_CurrentCulture ()
500 CultureInfo ci = CultureInfo.CurrentCulture;
501 bool expected = (ci.LCID != CultureInfo.InvariantCulture.LCID);
502 Assert.AreEqual (expected, ci.UseUserOverride, "#1");
504 ci = (CultureInfo) ci.Clone ();
505 Assert.AreEqual (expected, ci.UseUserOverride, "#2");
509 public void UseUserOverride_CurrentUICulture ()
511 CultureInfo ci = CultureInfo.CurrentCulture;
512 bool expected = (ci.LCID != CultureInfo.InvariantCulture.LCID);
513 Assert.AreEqual (expected, ci.UseUserOverride, "#1");
515 ci = (CultureInfo) ci.Clone ();
516 Assert.AreEqual (expected, ci.UseUserOverride, "#2");
520 public void UseUserOverride_GetCultureInfo ()
524 foreach (CultureInfo ci in CultureInfo.GetCultures (CultureTypes.AllCultures)) {
525 string cultureMsg = String.Format ("{0} {1}", ci.LCID, ci.Name);
526 culture = CultureInfo.GetCultureInfo (ci.Name);
527 Assert.IsFalse (culture.UseUserOverride, "#1: " + cultureMsg);
528 culture = CultureInfo.GetCultureInfo (ci.LCID);
529 Assert.IsFalse (culture.UseUserOverride, "#2: " + cultureMsg);
534 public void UseUserOverride_GetCultures ()
536 foreach (CultureInfo ci in CultureInfo.GetCultures (CultureTypes.AllCultures)) {
537 string cultureMsg = String.Format ("{0} {1}", ci.LCID, ci.Name);
538 if (ci.LCID == CultureInfo.InvariantCulture.LCID)
539 Assert.IsFalse (ci.UseUserOverride, cultureMsg);
541 Assert.IsTrue (ci.UseUserOverride, cultureMsg);
546 public void UseUserOverride_InvariantCulture ()
548 CultureInfo ci = CultureInfo.InvariantCulture;
549 Assert.IsFalse (ci.UseUserOverride, "#21");
551 ci = (CultureInfo) ci.Clone ();
552 Assert.IsFalse (ci.UseUserOverride, "#2");
556 public void Bug402128 ()
558 var culture = new CultureInfo ("en-US");
559 var ms = new MemoryStream ();
560 var formatter = new BinaryFormatter ();
561 formatter.Serialize (ms, culture);
562 ms.Seek (0, SeekOrigin.Begin);
563 var deserializedCulture = (CultureInfo) formatter.Deserialize (ms);
567 public void ZhHant ()
569 Assert.AreEqual (31748, new CultureInfo ("zh-Hant").LCID);
570 Assert.AreEqual (31748, CultureInfo.GetCultureInfo ("zh-Hant").LCID);
571 Assert.AreEqual (31748, new CultureInfo ("zh-CHT").LCID);
572 Assert.AreEqual (31748, new CultureInfo ("zh-CHT").Parent.LCID);
576 [SetCulture ("zh-TW")]
577 public void ParentOfZh ()
579 Assert.AreEqual (31748, CultureInfo.CurrentCulture.Parent.LCID);
580 Assert.AreEqual (31748, CultureInfo.CurrentCulture.Parent.Parent.LCID);
584 public void CurrentCulture ()
586 Assert.IsNotNull (CultureInfo.CurrentCulture, "CurrentCulture");
591 [ExpectedException (typeof (CultureNotFoundException))]
593 [ExpectedException (typeof (ArgumentException))]
595 public void CultureNotFound ()
597 // that's how the 'locale' gets defined for a device with an English UI
598 // and it's international settings set for Hong Kong
599 // https://bugzilla.xamarin.com/show_bug.cgi?id=3471
600 new CultureInfo ("en-HK");
604 CountdownEvent barrier = new CountdownEvent (3);
605 AutoResetEvent[] evt = new AutoResetEvent [] { new AutoResetEvent (false), new AutoResetEvent (false), new AutoResetEvent (false)};
607 CultureInfo[] initial_culture = new CultureInfo[3];
608 CultureInfo[] changed_culture = new CultureInfo[3];
609 CultureInfo[] changed_culture2 = new CultureInfo[3];
610 CultureInfo alternative_culture = new CultureInfo("pt-BR");
612 void StepAllPhases (int index)
614 initial_culture [index] = CultureInfo.CurrentCulture;
615 /*Phase 1 - we witness the original value */
618 /*Phase 2 - main thread changes culture */
619 evt [index].WaitOne ();
621 /*Phase 3 - we witness the new value */
622 changed_culture [index] = CultureInfo.CurrentCulture;
625 /* Phase 4 - main thread changes culture back */
626 evt [index].WaitOne ();
628 /*Phase 5 - we witness the new value */
629 changed_culture2 [index] = CultureInfo.CurrentCulture;
633 void ThreadWithoutChange () {
637 void ThreadWithChange () {
638 Thread.CurrentThread.CurrentCulture = alternative_culture;
642 void ThreadPoolWithoutChange () {
647 public void DefaultThreadCurrentCulture () {
648 var orig_culture = CultureInfo.CurrentCulture;
649 var new_culture = new CultureInfo("fr-FR");
651 // The test doesn't work if the current culture is already set
652 if (orig_culture != CultureInfo.InvariantCulture)
655 /* Phase 0 - warm up */
656 new Thread (ThreadWithoutChange).Start ();
657 new Thread (ThreadWithChange).Start ();
658 Action x = ThreadPoolWithoutChange;
659 x.BeginInvoke (null, null);
661 /* Phase 1 - let everyone witness initial values */
662 initial_culture [0] = CultureInfo.CurrentCulture;
666 /* Phase 2 - change the default culture*/
667 CultureInfo.DefaultThreadCurrentCulture = new_culture;
671 /* Phase 3 - let everyone witness the new value */
672 changed_culture [0] = CultureInfo.CurrentCulture;
676 /* Phase 4 - revert the default culture back to null */
677 CultureInfo.DefaultThreadCurrentCulture = null;
682 /* Phase 5 - let everyone witness the new value */
683 changed_culture2 [0] = CultureInfo.CurrentCulture;
687 CultureInfo.DefaultThreadCurrentCulture = null;
689 Assert.AreEqual (orig_culture, initial_culture [0], "#2");
690 Assert.AreEqual (alternative_culture, initial_culture [1], "#3");
691 Assert.AreEqual (orig_culture, initial_culture [2], "#4");
693 Assert.AreEqual (new_culture, changed_culture [0], "#6");
694 Assert.AreEqual (alternative_culture, changed_culture [1], "#7");
695 Assert.AreEqual (new_culture, changed_culture [2], "#8");
697 Assert.AreEqual (orig_culture, changed_culture2 [0], "#10");
698 Assert.AreEqual (alternative_culture, changed_culture2 [1], "#11");
699 Assert.AreEqual (orig_culture, changed_culture2 [2], "#12");
703 public void DefaultThreadCurrentCultureAndNumberFormaters () {
704 string us_str = null;
705 string br_str = null;
706 var thread = new Thread (() => {
707 CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US");
708 us_str = 100000.ToString ("C");
709 CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("pt-BR");
710 br_str = 100000.ToString ("C");
714 CultureInfo.DefaultThreadCurrentCulture = null;
715 Assert.AreEqual ("$100,000.00", us_str, "#1");
716 Assert.AreEqual ("R$ 100.000,00", br_str, "#2");