ci = CultureInfo.CreateSpecificCulture ("");
Assert.AreEqual (CultureInfo.InvariantCulture, ci, "#5");
+
+ ci = CultureInfo.CreateSpecificCulture ("zh-hant");
+ Assert.AreEqual ("zh-HK", ci.Name, "#6");
+
+ ci = CultureInfo.CreateSpecificCulture ("zh-hans");
+ Assert.AreEqual ("zh-CN", ci.Name, "#7");
+
+ ci = CultureInfo.CreateSpecificCulture ("zh-hans-CN");
+ Assert.AreEqual ("zh-CN", ci.Name, "#8");
+
+ ci = CultureInfo.CreateSpecificCulture ("zh-hant-US");
+ Assert.AreEqual ("zh-HK", ci.Name, "#9");
+
+ ci = CultureInfo.CreateSpecificCulture ("az-CyrlM-BR");
+ Assert.AreEqual ("az-Latn-AZ", ci.Name, "#10");
}
[Test]
}
[Test]
- public void GetCultureInfo_Identifier_Negative ()
+ public void GetCultureInfo_Identifier_Nonpositive ()
{
try {
- CultureInfo.GetCultureInfo (-1);
+ CultureInfo.GetCultureInfo (0);
Assert.Fail ("#1");
} catch (ArgumentOutOfRangeException ex) {
Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
#if NET_4_5
CountdownEvent barrier = new CountdownEvent (3);
- AutoResetEvent[] evt = new AutoResetEvent [] { new AutoResetEvent (false), new AutoResetEvent (false), new AutoResetEvent (false)};
+ AutoResetEvent[] evt = new AutoResetEvent [] { new AutoResetEvent (false), new AutoResetEvent (false), new AutoResetEvent (false), new AutoResetEvent (false)};
CultureInfo[] initial_culture = new CultureInfo[4];
CultureInfo[] changed_culture = new CultureInfo[4];
[Test]
public void DefaultThreadCurrentCulture () {
- var orig_culture = CultureInfo.CurrentCulture;
- var new_culture = new CultureInfo("fr-FR");
-
- // The test doesn't work if the current culture is already set
- if (orig_culture != CultureInfo.InvariantCulture)
- Assert.Ignore ("The test doesn't work if the current culture is already set.");
-
- /* Phase 0 - warm up */
- new Thread (ThreadWithoutChange).Start ();
- new Thread (ThreadWithChange).Start ();
- Action x = ThreadPoolWithoutChange;
- x.BeginInvoke (null, null);
-
- /* Phase 1 - let everyone witness initial values */
- initial_culture [0] = CultureInfo.CurrentCulture;
- barrier.Wait ();
- barrier.Reset ();
-
- /* Phase 2 - change the default culture*/
- CultureInfo.DefaultThreadCurrentCulture = new_culture;
- evt [0].Set ();
- evt [1].Set ();
- evt [2].Set ();
- /* Phase 3 - let everyone witness the new value */
- changed_culture [0] = CultureInfo.CurrentCulture;
- barrier.Wait ();
- barrier.Reset ();
-
- /* Phase 4 - revert the default culture back to null */
- CultureInfo.DefaultThreadCurrentCulture = null;
- evt [0].Set ();
- evt [1].Set ();
- evt [2].Set ();
-
- /* Phase 5 - let everyone witness the new value */
- changed_culture2 [0] = CultureInfo.CurrentCulture;
- barrier.Wait ();
- barrier.Reset ();
-
- CultureInfo.DefaultThreadCurrentCulture = null;
-
- Assert.AreEqual (orig_culture, initial_culture [0], "#1");
- Assert.AreEqual (orig_culture, initial_culture [1], "#2");
- Assert.AreEqual (alternative_culture, initial_culture [2], "#3");
- Assert.AreEqual (orig_culture, initial_culture [3], "#4");
-
- Assert.AreEqual (new_culture, changed_culture [0], "#5");
- Assert.AreEqual (new_culture, changed_culture [1], "#6");
- Assert.AreEqual (alternative_culture, changed_culture [2], "#7");
- Assert.AreEqual (new_culture, changed_culture [3], "#8");
- Assert.AreEqual (orig_culture, changed_culture [0], "#9");
- Assert.AreEqual (orig_culture, changed_culture2 [1], "#10");
- Assert.AreEqual (alternative_culture, changed_culture2 [2], "#11");
- Assert.AreEqual (orig_culture, changed_culture2 [3], "#12");
+ Action c = () => {
+ var orig_culture = CultureInfo.CurrentCulture;
+ var new_culture = new CultureInfo("fr-FR");
+
+ /* Phase 0 - warm up */
+ new Thread (ThreadWithoutChange).Start ();
+ new Thread (ThreadWithChange).Start ();
+ Action x = ThreadPoolWithoutChange;
+ x.BeginInvoke (null, null);
+
+ /* Phase 1 - let everyone witness initial values */
+ initial_culture [0] = CultureInfo.CurrentCulture;
+ barrier.Wait ();
+ barrier.Reset ();
+
+ /* Phase 2 - change the default culture*/
+ CultureInfo.DefaultThreadCurrentCulture = new_culture;
+ evt [1].Set ();
+ evt [2].Set ();
+ evt [3].Set ();
+
+ /* Phase 3 - let everyone witness the new value */
+ changed_culture [0] = CultureInfo.CurrentCulture;
+ barrier.Wait ();
+ barrier.Reset ();
+
+ /* Phase 4 - revert the default culture back to null */
+ CultureInfo.DefaultThreadCurrentCulture = null;
+ evt [1].Set ();
+ evt [2].Set ();
+ evt [3].Set ();
+
+ /* Phase 5 - let everyone witness the new value */
+ changed_culture2 [0] = CultureInfo.CurrentCulture;
+ barrier.Wait ();
+ barrier.Reset ();
+
+ CultureInfo.DefaultThreadCurrentCulture = null;
+
+ Assert.AreEqual (orig_culture, initial_culture [0], "#1");
+ Assert.AreEqual (orig_culture, initial_culture [1], "#2");
+ Assert.AreEqual (alternative_culture, initial_culture [2], "#3");
+ Assert.AreEqual (orig_culture, initial_culture [3], "#4");
+
+ Assert.AreEqual (new_culture, changed_culture [0], "#5");
+ Assert.AreEqual (new_culture, changed_culture [1], "#6");
+ Assert.AreEqual (alternative_culture, changed_culture [2], "#7");
+ Assert.AreEqual (new_culture, changed_culture [3], "#8");
+
+ Assert.AreEqual (orig_culture, changed_culture2 [0], "#9");
+ Assert.AreEqual (orig_culture, changed_culture2 [1], "#10");
+ Assert.AreEqual (alternative_culture, changed_culture2 [2], "#11");
+ Assert.AreEqual (orig_culture, changed_culture2 [3], "#12");
+ };
+ var ar = c.BeginInvoke (null, null);
+ ar.AsyncWaitHandle.WaitOne ();
}
[Test]