diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-wasm.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-wasm.yml index d587f5f7bb56f..f4e9a8447a210 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-wasm.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-wasm.yml @@ -16,7 +16,7 @@ jobs: # # ************ Rolling builds: ************* -# - only run eat, and aot tests +# - only run eat and aot tests # - rest are covered by runtime # - ${{ if eq(parameters.isRollingBuild, true) }}: @@ -205,6 +205,39 @@ jobs: scenarios: - normal + # Hybrid Globalization tests + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + nameSuffix: _HybridGlobalization + extraBuildArgs: /p:HybridGlobalization=true + isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} + isWasmOnlyBuild: ${{ parameters.isWasmOnlyBuild }} + alwaysRun: true + scenarios: + - normal + - WasmTestOnBrowser + - WasmTestOnNodeJS + + # Hybrid Globalization AOT tests - https://github.com/dotnet/runtime/issues/94212 + # - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + # parameters: + # platforms: + # - browser_wasm + # - browser_wasm_win + # nameSuffix: _HybridGlobalization_AOT + # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) /p:HybridGlobalization=true + # runAOT: true + # isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} + # isWasmOnlyBuild: ${{ parameters.isWasmOnlyBuild }} + # alwaysRun: true + # scenarios: + # - normal + # - WasmTestOnBrowser + # - WasmTestOnNodeJS + - ${{ if and(ne(parameters.isRollingBuild, true), ne(parameters.excludeNonLibTests, true), ne(parameters.debuggerTestsOnly, true)) }}: # Builds only - template: /eng/pipelines/common/templates/wasm-build-only.yml diff --git a/eng/pipelines/libraries/helix-queues-setup.yml b/eng/pipelines/libraries/helix-queues-setup.yml index 3634e9c438a08..7b9ef6882f630 100644 --- a/eng/pipelines/libraries/helix-queues-setup.yml +++ b/eng/pipelines/libraries/helix-queues-setup.yml @@ -181,6 +181,6 @@ jobs: # Browser WebAssembly windows - ${{ if in(parameters.platform, 'browser_wasm_win', 'wasi_wasm_win') }}: - - (Windows.Amd64.Server2022.Open)windows.amd64.server2022.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-ltsc2022-helix-webassembly-net8 + - (Windows.Amd64.Server2022.Open)windows.amd64.server2022.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-ltsc2022-helix-webassembly ${{ insert }}: ${{ parameters.jobParameters }} diff --git a/src/libraries/Common/tests/Tests/System/StringTests.cs b/src/libraries/Common/tests/Tests/System/StringTests.cs index c0b31d5d352c3..a16883f27d67e 100644 --- a/src/libraries/Common/tests/Tests/System/StringTests.cs +++ b/src/libraries/Common/tests/Tests/System/StringTests.cs @@ -1285,6 +1285,7 @@ public static void ContainsMatchDifferentSpans_StringComparison() [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/95338", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnOSX))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95471", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] public static void ContainsNoMatch_StringComparison() { for (int length = 1; length < 150; length++) @@ -1728,6 +1729,7 @@ public static IEnumerable EndsWith_StringComparison_TestData() [Theory] [MemberData(nameof(EndsWith_StringComparison_TestData))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95473", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] public static void EndsWith_StringComparison(string s, string value, StringComparison comparisonType, bool expected) { if (comparisonType == StringComparison.CurrentCulture) @@ -3216,7 +3218,8 @@ which ignore the contraction collation weights (defined as 'tertiary' rules) Assert.Equal(PlatformDetection.IsNlsGlobalization ? 0 : -1, source.IndexOf(target)); Assert.Equal(PlatformDetection.IsNlsGlobalization ? 0 : -1, source.IndexOf(target, StringComparison.CurrentCulture)); - Assert.Equal(0, source.IndexOf(target, StringComparison.CurrentCultureIgnoreCase)); + if (!PlatformDetection.IsHybridGlobalizationOnBrowser) + Assert.Equal(0, source.IndexOf(target, StringComparison.CurrentCultureIgnoreCase)); Assert.Equal(-1, source.IndexOf(target, StringComparison.Ordinal)); Assert.Equal(-1, source.IndexOf(target, StringComparison.OrdinalIgnoreCase)); @@ -3224,7 +3227,8 @@ which ignore the contraction collation weights (defined as 'tertiary' rules) Assert.Equal(PlatformDetection.IsNlsGlobalization ? 0 : -1, span.IndexOf(target.AsSpan(), StringComparison.CurrentCulture)); - Assert.Equal(0, span.IndexOf(target.AsSpan(), StringComparison.CurrentCultureIgnoreCase)); + if (!PlatformDetection.IsHybridGlobalizationOnBrowser) + Assert.Equal(0, span.IndexOf(target.AsSpan(), StringComparison.CurrentCultureIgnoreCase)); Assert.Equal(-1, span.IndexOf(target.AsSpan(), StringComparison.Ordinal)); Assert.Equal(-1, span.IndexOf(target.AsSpan(), StringComparison.OrdinalIgnoreCase)); } @@ -4853,7 +4857,11 @@ public static IEnumerable StartsWith_StringComparison_TestData() yield return new object[] { "", "hello", StringComparison.CurrentCulture, false }; if (PlatformDetection.IsNotInvariantGlobalization && PlatformDetection.IsNotHybridGlobalizationOnOSX) - yield return new object[] { "Hello", SoftHyphen + "Hel", StringComparison.CurrentCulture, true }; + { + // "https://github.com/dotnet/runtime/issues/95473" + if (PlatformDetection.IsNotHybridGlobalizationOnBrowser) + yield return new object[] { "Hello", SoftHyphen + "Hel", StringComparison.CurrentCulture, true }; + } // CurrentCultureIgnoreCase yield return new object[] { "Hello", "Hel", StringComparison.CurrentCultureIgnoreCase, true }; @@ -4924,6 +4932,7 @@ public static IEnumerable StartsWith_StringComparison_TestData() [Theory] [MemberData(nameof(StartsWith_StringComparison_TestData))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95473", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] public static void StartsWith_StringComparison(string s, string value, StringComparison comparisonType, bool expected) { if (comparisonType == StringComparison.CurrentCulture) @@ -5346,6 +5355,7 @@ private static IEnumerable ToLower_Culture_TestData() [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization))] [ActiveIssue("https://github.com/dotnet/runtime/issues/95338", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnOSX))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95503", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] public static void Test_ToLower_Culture() { foreach (object[] testdata in ToLower_Culture_TestData()) @@ -5863,6 +5873,7 @@ public static IEnumerable ToUpper_Culture_TestData() [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization))] [ActiveIssue("https://github.com/dotnet/runtime/issues/95338", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnOSX))] [MemberData(nameof(ToUpper_Culture_TestData))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95503", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] public static void Test_ToUpper_Culture(string actual, string expected, CultureInfo culture) { Assert.Equal(expected, actual.ToUpper(culture)); @@ -5962,6 +5973,7 @@ public static IEnumerable ToUpper_TurkishI_InvariantCulture_MemberData [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization), nameof(PlatformDetection.IsNotHybridGlobalizationOnOSX))] [MemberData(nameof(ToUpper_TurkishI_InvariantCulture_MemberData))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95471", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] public static void ToUpper_TurkishI_InvariantCulture(string s, string expected) { using (new ThreadCultureChange(CultureInfo.InvariantCulture)) diff --git a/src/libraries/Microsoft.VisualBasic.Core/tests/CollectionsTests.cs b/src/libraries/Microsoft.VisualBasic.Core/tests/CollectionsTests.cs index d387d548b4115..35195353a2ed6 100644 --- a/src/libraries/Microsoft.VisualBasic.Core/tests/CollectionsTests.cs +++ b/src/libraries/Microsoft.VisualBasic.Core/tests/CollectionsTests.cs @@ -74,7 +74,7 @@ public static void Add_RelativeIndex() Assert.Equal(item1, coll[3]); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void Add_RelativeKey() { var coll = new Collection(); @@ -175,7 +175,7 @@ public static void RemoveAt_InvalidIndex_ThrowsArgumentOutOfRangeException() Assert.Throws("Index", () => coll.RemoveAt(-1)); // Index < 0 } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void Remove_Key() { var coll = CreateKeyedCollection(10); @@ -185,7 +185,7 @@ public static void Remove_Key() Assert.False(coll.Contains("Key3")); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void Remove_InvalidKey_ThrowsArgumentException() { var coll = CreateKeyedCollection(10); @@ -242,7 +242,7 @@ public static void Contains() Assert.False(coll.Contains(new Foo())); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void Contains_ByKey() { var coll = CreateKeyedCollection(10); @@ -275,7 +275,7 @@ public static void Item_Get_InvalidIndex_ThrowsIndexOutOfRangeException() Assert.Throws(() => coll[(object)Guid.Empty]); // Neither string nor int } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void Item_GetByKey() { Collection coll = CreateKeyedCollection(10); @@ -291,7 +291,7 @@ public static void Item_GetByKey() Assert.Equal(CreateValue(11), coll[(object)'X']); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void Item_GetByKey_InvalidIndex_ThrowsIndexOutOfRangeException() { Collection coll = CreateKeyedCollection(10); diff --git a/src/libraries/Microsoft.VisualBasic.Core/tests/LateBindingTests.cs b/src/libraries/Microsoft.VisualBasic.Core/tests/LateBindingTests.cs index a04e4b0b29333..3d66733224abe 100644 --- a/src/libraries/Microsoft.VisualBasic.Core/tests/LateBindingTests.cs +++ b/src/libraries/Microsoft.VisualBasic.Core/tests/LateBindingTests.cs @@ -9,7 +9,7 @@ namespace Microsoft.VisualBasic.CompilerServices.Tests { public class LateBindingTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(LateCall_TestData))] public void LateCall(object obj, Type objType, string name, object[] args, string[] paramNames, bool[] copyBack, Func getResult, object expected) { @@ -17,14 +17,14 @@ public void LateCall(object obj, Type objType, string name, object[] args, strin Assert.Equal(expected, getResult(obj)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(LateGet_TestData))] public void LateGet(object obj, Type objType, string name, object[] args, string[] paramNames, bool[] copyBack, object expected) { Assert.Equal(expected, LateBinding.LateGet(obj, objType, name, args, paramNames, copyBack)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(LateSet_TestData))] public void LateSet(object obj, Type objType, string name, object[] args, string[] paramNames, Func getResult, object expected) { @@ -32,7 +32,7 @@ public void LateSet(object obj, Type objType, string name, object[] args, string Assert.Equal(expected, getResult(obj)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(LateSetComplex_TestData))] public void LateSetComplex(object obj, Type objType, string name, object[] args, string[] paramNames, bool missing, bool valueType) { @@ -81,7 +81,7 @@ public void LateIndexSet_MissingMember(object obj, object[] args, string[] param Assert.Throws(() => LateBinding.LateIndexSet(obj, args, paramNames)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(LateIndexSetComplex_TestData))] public void LateIndexSetComplex(object obj, object[] args, string[] paramNames, bool missing, bool valueType) { diff --git a/src/libraries/Microsoft.VisualBasic.Core/tests/LikeOperatorTests.cs b/src/libraries/Microsoft.VisualBasic.Core/tests/LikeOperatorTests.cs index 1452be5b7fb33..892fbc5c31b5e 100644 --- a/src/libraries/Microsoft.VisualBasic.Core/tests/LikeOperatorTests.cs +++ b/src/libraries/Microsoft.VisualBasic.Core/tests/LikeOperatorTests.cs @@ -9,7 +9,7 @@ namespace Microsoft.VisualBasic.CompilerServices.Tests { public class LikeOperatorTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(LikeObject_TestData))] [MemberData(nameof(LikeString_TestData))] public void LikeObject(object source, object pattern, object expectedBinaryCompare, object expectedTextCompare) @@ -18,7 +18,7 @@ public void LikeObject(object source, object pattern, object expectedBinaryCompa Assert.Equal(expectedTextCompare, LikeOperator.LikeObject(source, pattern, CompareMethod.Text)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(LikeString_TestData))] public void LikeString(string source, string pattern, bool expectedBinaryCompare, bool expectedTextCompare) { diff --git a/src/libraries/Microsoft.VisualBasic.Core/tests/ObjectTypeTests.cs b/src/libraries/Microsoft.VisualBasic.Core/tests/ObjectTypeTests.cs index f1e4b8ac6935f..d520d69d6cb6f 100644 --- a/src/libraries/Microsoft.VisualBasic.Core/tests/ObjectTypeTests.cs +++ b/src/libraries/Microsoft.VisualBasic.Core/tests/ObjectTypeTests.cs @@ -287,7 +287,7 @@ public static IEnumerable GetObjectValuePrimitive_TestData() // Add more... } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(LikeObj_TestData))] public void LikeObj(object left, object right, object expectedBinaryCompare, object expectedTextCompare) { @@ -323,7 +323,7 @@ public static IEnumerable LikeObj_NullReference_TestData() yield return new object[] { null, "*" }; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(ObjTst_TestData))] public void ObjTst(object x, object y, bool textCompare, object expected) { diff --git a/src/libraries/Microsoft.VisualBasic.Core/tests/OperatorsTests.Comparison.cs b/src/libraries/Microsoft.VisualBasic.Core/tests/OperatorsTests.Comparison.cs index f90fd7d819824..9e300ec063a23 100644 --- a/src/libraries/Microsoft.VisualBasic.Core/tests/OperatorsTests.Comparison.cs +++ b/src/libraries/Microsoft.VisualBasic.Core/tests/OperatorsTests.Comparison.cs @@ -1107,7 +1107,7 @@ public static IEnumerable Compare_InvalidObjects_TestData() yield return new object[] { new object(), new char[] { '8' } }; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Compare_Primitives_TestData))] public void CompareObjectEqual_Invoke_ReturnsExpected(object left, object right, bool greater, bool equal, bool less) { @@ -1171,7 +1171,7 @@ public class CompareObjectEqual public static string op_Equality(OperatorsTests left, CompareObjectEqual right) => "tcejbomotsuc"; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Compare_Primitives_TestData))] public void CompareObjectGreater_Invoke_ReturnsExpected(object left, object right, bool greater, bool equal, bool less) { @@ -1235,7 +1235,7 @@ public class CompareObjectGreater public static string op_GreaterThan(OperatorsTests left, CompareObjectGreater right) => "tcejbomotsuc"; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Compare_Primitives_TestData))] public void CompareObjectGreaterEqual_Invoke_ReturnsExpected(object left, object right, bool greater, bool equal, bool less) { @@ -1298,7 +1298,7 @@ public class CompareObjectGreaterEqual public static string op_GreaterThanOrEqual(OperatorsTests left, CompareObjectGreaterEqual right) => "tcejbomotsuc"; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Compare_Primitives_TestData))] public void CompareObjectLess_Invoke_ReturnsExpected(object left, object right, bool greater, bool equal, bool less) { @@ -1362,7 +1362,7 @@ public class CompareObjectLess public static string op_LessThan(OperatorsTests left, CompareObjectLess right) => "tcejbomotsuc"; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Compare_Primitives_TestData))] public void CompareObjectLessEqual_Invoke_ReturnsExpected(object left, object right, bool greater, bool equal, bool less) { @@ -1425,7 +1425,7 @@ public class CompareObjectLessEqual public static string op_LessThanOrEqual(OperatorsTests left, CompareObjectLessEqual right) => "tcejbomotsuc"; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Compare_Primitives_TestData))] public void CompareObjectNotEqual_Invoke_ReturnsExpected(object left, object right, bool greater, bool equal, bool less) { @@ -1490,7 +1490,7 @@ public class CompareObjectNotEqual } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Compare_Primitives_TestData))] public void ConditionalCompareObjectEqual_Invoke_ReturnsExpected(object left, object right, bool greater, bool equal, bool less) { @@ -1554,7 +1554,7 @@ public class ConditionalCompareObjectEqual public static bool op_Equality(OperatorsTests left, ConditionalCompareObjectEqual right) => true; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Compare_Primitives_TestData))] public void ConditionalCompareObjectGreater_Invoke_ReturnsExpected(object left, object right, bool greater, bool equal, bool less) { @@ -1618,7 +1618,7 @@ public class ConditionalCompareObjectGreater public static bool op_GreaterThan(OperatorsTests left, ConditionalCompareObjectGreater right) => true; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Compare_Primitives_TestData))] public void ConditionalCompareObjectGreaterEqual_Invoke_ReturnsExpected(object left, object right, bool greater, bool equal, bool less) { @@ -1681,7 +1681,7 @@ public class ConditionalCompareObjectGreaterEqual public static bool op_GreaterThanOrEqual(OperatorsTests left, ConditionalCompareObjectGreaterEqual right) => true; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Compare_Primitives_TestData))] public void ConditionalCompareObjectLess_Invoke_ReturnsExpected(object left, object right, bool greater, bool equal, bool less) { @@ -1745,7 +1745,7 @@ public class ConditionalCompareObjectLess public static bool op_LessThan(OperatorsTests left, ConditionalCompareObjectLess right) => true; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Compare_Primitives_TestData))] public void ConditionalCompareObjectLessEqual_Invoke_ReturnsExpected(object left, object right, bool greater, bool equal, bool less) { @@ -1808,7 +1808,7 @@ public class ConditionalCompareObjectLessEqual public static bool op_LessThanOrEqual(OperatorsTests left, ConditionalCompareObjectLessEqual right) => true; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Compare_Primitives_TestData))] public void ConditionalCompareObjectNotEqual_Invoke_ReturnsExpected(object left, object right, bool greater, bool equal, bool less) { diff --git a/src/libraries/Microsoft.VisualBasic.Core/tests/StringTypeTests.cs b/src/libraries/Microsoft.VisualBasic.Core/tests/StringTypeTests.cs index 8d4d2842766d7..76d390ea840e6 100644 --- a/src/libraries/Microsoft.VisualBasic.Core/tests/StringTypeTests.cs +++ b/src/libraries/Microsoft.VisualBasic.Core/tests/StringTypeTests.cs @@ -363,7 +363,7 @@ public void MidStmtStr_ArgumentException(string str, int start, int length, stri Assert.Throws(() => StringType.MidStmtStr(ref str, start, length, insert)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(StrCmp_TestData))] public void StrCmp(string left, string right, int expectedBinaryCompare, int expectedTextCompare) { @@ -388,7 +388,7 @@ public static IEnumerable StrCmp_TestData() yield return new object[] { "abc", "ABC", 32, 0 }; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(null, null, true, true)] [InlineData("", null, true, true)] [InlineData("", "*", true, true)] diff --git a/src/libraries/Microsoft.VisualBasic.Core/tests/StringsTests.cs b/src/libraries/Microsoft.VisualBasic.Core/tests/StringsTests.cs index 27967fa777fe1..037412ed58275 100644 --- a/src/libraries/Microsoft.VisualBasic.Core/tests/StringsTests.cs +++ b/src/libraries/Microsoft.VisualBasic.Core/tests/StringsTests.cs @@ -431,7 +431,7 @@ public void InStr_BinaryCompare(string string1, string string2, int expected) Assert.Equal(expected, Strings.InStr(1, string1, string2, CompareMethod.Binary)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData("A", "a", 1)] [InlineData("Aa", "a", 1)] public void InStr_TextCompare(string string1, string string2, int expected) @@ -479,7 +479,7 @@ public void InStrRev_BinaryCompare(string stringCheck, string stringMatch, int s Assert.Equal(expected, Strings.InStrRev(stringCheck, stringMatch, start, CompareMethod.Binary)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData("A", "a", 1, 1)] [InlineData("aA", "a", 2, 2)] public void InStrRev_TextCompare(string stringCheck, string stringMatch, int start, int expected) @@ -779,7 +779,7 @@ public void Trim_Valid(string str, string expected) Assert.Equal(expected, Strings.Trim(str)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData("", "", null, 1, -1, CompareMethod.Text, null)] [InlineData("", null, "", 1, -1, CompareMethod.Text, null)] [InlineData("", "", "", 1, -1, CompareMethod.Text, null)] @@ -815,7 +815,7 @@ public void Space(int number, string expected) Assert.Equal(expected, Strings.Space(number)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(null, null, -1, CompareMethod.Text, new string[] { "" })] [InlineData(null, "", -1, CompareMethod.Text, new string[] { "" })] [InlineData("", null, -1, CompareMethod.Text, new string[] { "" })] @@ -833,14 +833,14 @@ public void Split(string expression, string delimiter, int limit, CompareMethod Assert.Equal(expected, Strings.Split(expression, delimiter, limit, compare)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData("A, B, C", ", ", 0, CompareMethod.Text)] public void Split_IndexOutOfRangeException(string expression, string delimiter, int limit, CompareMethod compare) { Assert.Throws< IndexOutOfRangeException>(() => Strings.Split(expression, delimiter, limit, compare)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData("a", "a", 0, 0)] [InlineData("a", "b", -1, -1)] [InlineData("b", "a", 1, 1)] diff --git a/src/libraries/System.Collections.NonGeneric/tests/CaseInsensitiveHashCodeProviderTests.cs b/src/libraries/System.Collections.NonGeneric/tests/CaseInsensitiveHashCodeProviderTests.cs index 64d65337f536a..927dcb1b6b9e3 100644 --- a/src/libraries/System.Collections.NonGeneric/tests/CaseInsensitiveHashCodeProviderTests.cs +++ b/src/libraries/System.Collections.NonGeneric/tests/CaseInsensitiveHashCodeProviderTests.cs @@ -13,7 +13,7 @@ namespace System.Collections.Tests { public class CaseInsensitiveHashCodeProviderTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData("hello", "HELLO", true)] [InlineData("hello", "hello", true)] [InlineData("HELLO", "HELLO", true)] @@ -29,7 +29,7 @@ public void Ctor_Empty_GetHashCodeCompare(object a, object b, bool expected) Assert.Equal(expected, provider.GetHashCode(a) == provider.GetHashCode(b)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData("hello", "HELLO", true)] [InlineData("hello", "hello", true)] [InlineData("HELLO", "HELLO", true)] @@ -63,7 +63,7 @@ public void Ctor_Empty_ChangeCurrentCulture_GetHashCodeCompare(object a, object } } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData("hello", "HELLO", true)] [InlineData("hello", "hello", true)] [InlineData("HELLO", "HELLO", true)] @@ -94,7 +94,7 @@ public void Ctor_CultureInfo_ChangeCurrentCulture_GetHashCodeCompare(object a, o } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [ActiveIssue("https://github.com/dotnet/runtime/issues/37069", TestPlatforms.Android | TestPlatforms.LinuxBionic)] public void Ctor_CultureInfo_GetHashCodeCompare_TurkishI() { @@ -134,7 +134,7 @@ public void GetHashCode_NullObj_ThrowsArgumentNullException() AssertExtensions.Throws("obj", () => new CaseInsensitiveHashCodeProvider().GetHashCode(null)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData("hello", "HELLO", true)] [InlineData("hello", "hello", true)] [InlineData("HELLO", "HELLO", true)] @@ -150,7 +150,7 @@ public void Default_GetHashCodeCompare(object a, object b, bool expected) CaseInsensitiveHashCodeProvider.DefaultInvariant.GetHashCode(a) == CaseInsensitiveHashCodeProvider.DefaultInvariant.GetHashCode(b)); } - [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization))] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [ActiveIssue("https://github.com/dotnet/runtime/issues/37069", TestPlatforms.Android | TestPlatforms.LinuxBionic)] public void Default_Compare_TurkishI() { diff --git a/src/libraries/System.Collections.NonGeneric/tests/CollectionsUtilTests.cs b/src/libraries/System.Collections.NonGeneric/tests/CollectionsUtilTests.cs index e5735bdbbbb7e..9b46116d50ed2 100644 --- a/src/libraries/System.Collections.NonGeneric/tests/CollectionsUtilTests.cs +++ b/src/libraries/System.Collections.NonGeneric/tests/CollectionsUtilTests.cs @@ -8,7 +8,7 @@ namespace System.Collections.Tests { public static class CollectionsUtilTests { - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void CreateCaseInsensitiveHashtable() { Hashtable hashtable = CollectionsUtil.CreateCaseInsensitiveHashtable(); @@ -20,7 +20,7 @@ public static void CreateCaseInsensitiveHashtable() AssertExtensions.Throws(null, () => hashtable.Add("key1", "value1")); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void CreateCaseInsensitiveHashtable_Capacity() { Hashtable hashtable = CollectionsUtil.CreateCaseInsensitiveHashtable(15); @@ -33,7 +33,7 @@ public static void CreateCaseInsensitiveHashtable_Capacity() AssertExtensions.Throws(null, () => hashtable.Add("key1", "value1")); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void CreateCaseInsensitiveHashtable_IDictionary() { Hashtable hashtable1 = CollectionsUtil.CreateCaseInsensitiveHashtable(); diff --git a/src/libraries/System.Collections.NonGeneric/tests/HashtableTests.cs b/src/libraries/System.Collections.NonGeneric/tests/HashtableTests.cs index e172e121feac8..c0fddb75701b6 100644 --- a/src/libraries/System.Collections.NonGeneric/tests/HashtableTests.cs +++ b/src/libraries/System.Collections.NonGeneric/tests/HashtableTests.cs @@ -779,7 +779,7 @@ public void Values_ModifyingHashtable_ModifiesCollection() } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void HashCodeProvider_Set_ImpactsSearch() { var hash = new ComparableHashtable(CaseInsensitiveHashCodeProvider.DefaultInvariant, StringComparer.OrdinalIgnoreCase); @@ -834,7 +834,7 @@ public void HashCodeProvider_Comparer_IncompatibleGetSet_Throws() AssertExtensions.Throws(null, () => hash.Comparer = StringComparer.OrdinalIgnoreCase); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Comparer_Set_ImpactsSearch() { var hash = new ComparableHashtable(CaseInsensitiveHashCodeProvider.DefaultInvariant, StringComparer.OrdinalIgnoreCase); diff --git a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.ConstructorTests.cs b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.ConstructorTests.cs index 9ede42f1d18d4..e34009b7c97fb 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.ConstructorTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.ConstructorTests.cs @@ -20,7 +20,7 @@ public void Constructor_Provider_Comparer() Assert.Equal(0, coll.Count); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Constructor_Int_Provider_Comparer() { #pragma warning disable CS0618 // Type or member is obsolete diff --git a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.CopyToTests.cs b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.CopyToTests.cs index 74b351ff4007c..d8eb5ae5777d7 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.CopyToTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.CopyToTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameObjectCollectionBaseCopyToTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0, 0)] [InlineData(0, 5)] [InlineData(10, 0)] @@ -39,7 +39,7 @@ public void CopyTo(int count, int index) Assert.Equal(previousCount, copyArray.Length); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(10)] public void CopyTo_Invalid(int count) diff --git a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.GetAllValuesTests.cs b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.GetAllValuesTests.cs index 941b943be7ab0..b9a64ecc30aed 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.GetAllValuesTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.GetAllValuesTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class GetAllValuesTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0, typeof(object))] [InlineData(0, typeof(Foo))] [InlineData(10, typeof(object))] @@ -33,7 +33,7 @@ private static void VerifyGetAllValues(NameObjectCollectionBase nameObjectCollec } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void GetAllValues_Invalid() { MyNameObjectCollection nameObjectCollection = new MyNameObjectCollection(); diff --git a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.GetEnumeratorTests.cs b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.GetEnumeratorTests.cs index 7d1c06f066a11..3f7ec1338bf87 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.GetEnumeratorTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.GetEnumeratorTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameObjectCollectionBaseGetEnumeratorTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(10)] public void GetEnumerator(int count) @@ -29,7 +29,7 @@ public void GetEnumerator(int count) } } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(10)] public void GetEnumerator_Invalid(int count) diff --git a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.KeysTests.cs b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.KeysTests.cs index f1edcf9aad34a..db56a194ad67a 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.KeysTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.KeysTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameObjectCollectionBaseKeysTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(10)] public void Keys_PreservesInstance(int count) @@ -16,7 +16,7 @@ public void Keys_PreservesInstance(int count) Assert.Same(nameObjectCollection.Keys, nameObjectCollection.Keys); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(10)] public void Keys_GetEnumerator(int count) @@ -40,7 +40,7 @@ public void Keys_GetEnumerator(int count) } } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(10)] public void Keys_GetEnumerator_Invalid(int count) @@ -85,7 +85,7 @@ public void Keys_GetEnumerator_Invalid(int count) Assert.Throws(() => enumerator.Reset()); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(10)] public void Keys_Properties(int count) @@ -97,7 +97,7 @@ public void Keys_Properties(int count) Assert.False(keysCollection.IsSynchronized); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0, 0)] [InlineData(0, 5)] [InlineData(10, 0)] @@ -145,7 +145,7 @@ private static void Keys_CopyTo_Helper(MyNameObjectCollection nameObjectCollecti Assert.Equal(previousCount, keysArray.Length); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(10)] public void Keys_CopyTo_Invalid(int count) diff --git a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.ReadOnlyTests.cs b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.ReadOnlyTests.cs index 05af2efe64000..e05a2e78936c5 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.ReadOnlyTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.ReadOnlyTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameObjectCollectionBaseReadOnlyTests { - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void IsReadOnly_Set() { MyNameObjectCollection nameObjectCollection = Helpers.CreateNameObjectCollection(10); diff --git a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.RemoveAtTests.cs b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.RemoveAtTests.cs index 4ec96a64fd9ea..fe99de5af1b7d 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.RemoveAtTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.RemoveAtTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameObjectCollectionBaseRemoveAtTests { - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void RemoveAt() { MyNameObjectCollection nameObjectCollection = Helpers.CreateNameObjectCollection(10); @@ -59,7 +59,7 @@ public void RemoveAt() } } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(10)] public void RemoveAt_InvalidIndex_ThrowsArgumentOutOfRangeException(int count) @@ -69,7 +69,7 @@ public void RemoveAt_InvalidIndex_ThrowsArgumentOutOfRangeException(int count) AssertExtensions.Throws("index", () => nameObjectCollection.RemoveAt(count)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void RemoveAt_ReadOnly_ThrowsNotSupportedException() { MyNameObjectCollection nameObjectCollection = Helpers.CreateNameObjectCollection(1); diff --git a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.SetItemTests.cs b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.SetItemTests.cs index c1f1bd54acfcb..398aab7fabf13 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.SetItemTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameObjectCollectionBase/NameObjectCollectionBase.SetItemTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameObjectCollectionBaseSetItemTests { - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Set_ObjectAtIndex_ModifiesCollection() { var noc = new MyNameObjectCollection(); diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.AddNVCTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.AddNVCTests.cs index 538b9c924ce2a..82578fb7de13a 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.AddNVCTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.AddNVCTests.cs @@ -8,7 +8,7 @@ namespace System.Collections.Specialized.Tests { public class NameValueCollectionAddNameValueCollectionTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0, 0)] [InlineData(0, 5)] [InlineData(5, 0)] @@ -43,7 +43,7 @@ public void Add(int count1, int count2) } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Add_ExistingKeys() { NameValueCollection nameValueCollection1 = new NameValueCollection(); @@ -61,7 +61,7 @@ public void Add_ExistingKeys() Assert.Equal(new string[] { value2, value1 }, nameValueCollection2.GetValues(name)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Add_MultipleValues() { NameValueCollection nameValueCollection1 = new NameValueCollection(); @@ -104,7 +104,7 @@ public void Add_NameValueCollection_WithNullKeys() Assert.Equal(nullKeyValue1 + "," + nullKeyValue2, nameValueCollection3[null]); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Add_NameValueCollection_WithNullValues() { NameValueCollection nameValueCollection1 = new NameValueCollection(); diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.AddStringStringTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.AddStringStringTests.cs index dc148f198c358..28ba9d7ad71ad 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.AddStringStringTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.AddStringStringTests.cs @@ -8,7 +8,7 @@ namespace System.Collections.Specialized.Tests { public class NameValueCollectionAddStringStringTests { - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Add() { NameValueCollection nameValueCollection = new NameValueCollection(); @@ -82,7 +82,7 @@ public void Add_NullName() Assert.False(nameValueCollection.HasKeys()); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Add_NullValue() { NameValueCollection nameValueCollection = new NameValueCollection(); @@ -108,7 +108,7 @@ public void Add_NullValue() Assert.True(nameValueCollection.HasKeys()); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Add_AddingValueToExistingName_AppendsValueToOriginalValue() { var nameValueCollection = new NameValueCollection(); diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.ClearTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.ClearTests.cs index b15395c354d11..acdf6b442eabb 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.ClearTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.ClearTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameValueCollectionClearTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(10)] public void Clear(int count) diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CopyToTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CopyToTests.cs index 2daff0ba450f9..409ccd25c8ab4 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CopyToTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CopyToTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameValueCollectionCopyToTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0, 0)] [InlineData(0, 1)] [InlineData(5, 0)] @@ -37,7 +37,7 @@ public void CopyTo(int count, int index) } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void CopyTo_MultipleValues_SameName() { NameValueCollection nameValueCollection = new NameValueCollection(); @@ -51,7 +51,7 @@ public void CopyTo_MultipleValues_SameName() Assert.Equal(nameValueCollection[0], dest[0]); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(5)] public void CopyTo_Invalid(int count) diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CtorTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CtorTests.cs index 20cf0fe5af512..c7106153faf89 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CtorTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.CtorTests.cs @@ -46,7 +46,7 @@ public void Ctor_Int_Provider_Comparer() Assert.False(((ICollection)nameValueCollection).IsSynchronized); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(5)] public void Ctor_Int(int capacity) @@ -85,7 +85,7 @@ public static IEnumerable Ctor_NameValueCollection_TestData() yield return new object[] { Helpers.CreateNameValueCollection(10) }; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Ctor_NameValueCollection_TestData))] public void Ctor_NameValueCollection(NameValueCollection nameValueCollection1) { @@ -126,7 +126,7 @@ public static IEnumerable Ctor_Int_NameValueCollection_TestData() yield return new object[] { 15, Helpers.CreateNameValueCollection(10) }; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Ctor_Int_NameValueCollection_TestData))] public void Ctor_Int_NameValueCollection(int capacity, NameValueCollection nameValueCollection1) { @@ -156,7 +156,7 @@ public static IEnumerable Ctor_Int_IEqualityComparer_TestData() yield return new object[] { 10, null }; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Ctor_Int_IEqualityComparer_TestData))] public void Ctor_Int_IEqualityComparer(int capacity, IEqualityComparer equalityComparer) { @@ -170,7 +170,7 @@ public static IEnumerable Ctor_IEqualityComparer_TestData() yield return new object[] { null }; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Ctor_IEqualityComparer_TestData))] public void Ctor_IEqualityComparer(IEqualityComparer equalityComparer) { diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetIntTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetIntTests.cs index c8b4fdc6c996e..ba652ced4b86b 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetIntTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetIntTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameValueCollectionGetIntTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(5)] public void Get_InvalidIndex_ThrowsArgumentOutOfRangeException(int count) diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetItemTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetItemTests.cs index 82e63d654e47c..c6e723e1a52f5 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetItemTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetItemTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameValueCollectionGetItemTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(5)] public void Item_Get_InvalidIndex_ThrowsArgumentOutOfRangeException(int count) diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetKeyTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetKeyTests.cs index c283053d0c70c..4e0b496448802 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetKeyTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetKeyTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameValueCollectionGetKeyTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(5)] public void Get_InvalidIndex_ThrowsArgumentOutOfRangeException(int count) diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetStringTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetStringTests.cs index 47c6e1db59e8d..d61cabe1900b3 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetStringTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetStringTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameValueCollectionGetStringTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(5)] public void Get_NoSuchName_ReturnsNull(int count) diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetValuesIntTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetValuesIntTests.cs index dc7bfaca4f64c..b179a4b6bfd2c 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetValuesIntTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetValuesIntTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameValueCollectionGetValuesIntTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(5)] public void GetValues_InvalidIndex_ThrowsArgumentOutOfRangeException(int count) diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetValuesStringTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetValuesStringTests.cs index 0371dc9e20ad8..b7deb3badfc45 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetValuesStringTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.GetValuesStringTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameValueCollectionGetValuesStringTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(5)] public void GetValues_NoSuchName_ReturnsNull(int count) diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.RemoveTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.RemoveTests.cs index 34e48ae0ba55d..65e582c346a64 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.RemoveTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.RemoveTests.cs @@ -8,7 +8,7 @@ namespace System.Collections.Specialized.Tests { public class NameValueCollectionRemoveTests { - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(5)] public void Remove(int count) @@ -46,7 +46,7 @@ public void Remove(int count) } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Remove_MultipleValues_SameName() { NameValueCollection nameValueCollection = new NameValueCollection(); diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.SetItemTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.SetItemTests.cs index de3e23ecd4086..dc9e8bb14598b 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.SetItemTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.SetItemTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameValueCollectionSetItemTests { - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Item_Set() { NameValueCollection nameValueCollection = new NameValueCollection(); @@ -22,7 +22,7 @@ public void Item_Set() } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Item_Set_OvewriteExistingValue() { NameValueCollection nameValueCollection = new NameValueCollection(); @@ -35,7 +35,7 @@ public void Item_Set_OvewriteExistingValue() Assert.Equal(new string[] { value }, nameValueCollection.GetValues(name)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(5)] public void Item_Set_NullName(int count) @@ -53,7 +53,7 @@ public void Item_Set_NullName(int count) Assert.Equal(newNullNameValue, nameValueCollection[null]); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(5)] public void Item_Set_NullValue(int count) @@ -74,7 +74,7 @@ public void Item_Set_NullValue(int count) Assert.Null(nameValueCollection[nullValueName]); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Item_Set_IsCaseSensitive() { NameValueCollection nameValueCollection = new NameValueCollection(); diff --git a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.SetTests.cs b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.SetTests.cs index 6873b3e8a22d2..79e8c037ed15b 100644 --- a/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.SetTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/NameValueCollection/NameValueCollection.SetTests.cs @@ -7,7 +7,7 @@ namespace System.Collections.Specialized.Tests { public class NameValueCollectionSetTests { - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Set() { NameValueCollection nameValueCollection = new NameValueCollection(); @@ -23,7 +23,7 @@ public void Set() } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Set_OvewriteExistingValue() { NameValueCollection nameValueCollection = new NameValueCollection(); @@ -36,7 +36,7 @@ public void Set_OvewriteExistingValue() Assert.Equal(new string[] { value }, nameValueCollection.GetValues(name)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(5)] public void Set_NullName(int count) @@ -54,7 +54,7 @@ public void Set_NullName(int count) Assert.Equal(newNullNameValue, nameValueCollection.Get(null)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData(0)] [InlineData(5)] public void Set_NullValue(int count) @@ -75,7 +75,7 @@ public void Set_NullValue(int count) Assert.Null(nameValueCollection.Get(nullValueName)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Set_IsCaseSensitive() { NameValueCollection nameValueCollection = new NameValueCollection(); diff --git a/src/libraries/System.Collections.Specialized/tests/OrderedDictionary/OrderedDictionaryTests.cs b/src/libraries/System.Collections.Specialized/tests/OrderedDictionary/OrderedDictionaryTests.cs index ac1163d28c041..f24d0cd7892e3 100644 --- a/src/libraries/System.Collections.Specialized/tests/OrderedDictionary/OrderedDictionaryTests.cs +++ b/src/libraries/System.Collections.Specialized/tests/OrderedDictionary/OrderedDictionaryTests.cs @@ -35,7 +35,7 @@ public void CreatingWithDifferentCapacityValues() } // public OrderedDictionary(IEqualityComparer comparer); - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void PassingEqualityComparers() { var d1 = new OrderedDictionary(StringComparer.InvariantCultureIgnoreCase); @@ -55,7 +55,7 @@ public void PassingEqualityComparers() } // public OrderedDictionary(int capacity, IEqualityComparer comparer); - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void PassingCapacityAndIEqualityComparer() { var d1 = new OrderedDictionary(-1000, StringComparer.InvariantCultureIgnoreCase); @@ -626,7 +626,7 @@ public void KeysAndValuesPropertiesNotSupportWritableIList(bool testKeysProperty Assert.Throws(() => list.RemoveAt(0)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void IListedKeysPropertyCanUseCustomEqualityComparer() { var orderedDictionary = new OrderedDictionary(StringComparer.InvariantCultureIgnoreCase); diff --git a/src/libraries/System.Collections/tests/Generic/Dictionary/HashCollisionScenarios/OutOfBoundsRegression.cs b/src/libraries/System.Collections/tests/Generic/Dictionary/HashCollisionScenarios/OutOfBoundsRegression.cs index a41ed79d68078..37297f382c0a3 100644 --- a/src/libraries/System.Collections/tests/Generic/Dictionary/HashCollisionScenarios/OutOfBoundsRegression.cs +++ b/src/libraries/System.Collections/tests/Generic/Dictionary/HashCollisionScenarios/OutOfBoundsRegression.cs @@ -42,7 +42,7 @@ public static void OutOfBoundsRegression() } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void ComparerImplementations_Dictionary_WithWellKnownStringComparers() { Type nonRandomizedOrdinalComparerType = typeof(object).Assembly.GetType("System.Collections.Generic.NonRandomizedStringEqualityComparer+OrdinalComparer", throwOnError: true); @@ -54,71 +54,71 @@ public static void ComparerImplementations_Dictionary_WithWellKnownStringCompare RunDictionaryTest( equalityComparer: null, - expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, - expectedPublicComparerBeforeCollisionThreshold: EqualityComparer.Default, - expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); + expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, + expectedPublicComparerBeforeCollisionThreshold: EqualityComparer.Default, + expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); // EqualityComparer.Default comparer RunDictionaryTest( equalityComparer: EqualityComparer.Default, - expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, - expectedPublicComparerBeforeCollisionThreshold: EqualityComparer.Default, - expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); + expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, + expectedPublicComparerBeforeCollisionThreshold: EqualityComparer.Default, + expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); // Ordinal comparer RunDictionaryTest( equalityComparer: StringComparer.Ordinal, - expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, - expectedPublicComparerBeforeCollisionThreshold: StringComparer.Ordinal, - expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); + expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, + expectedPublicComparerBeforeCollisionThreshold: StringComparer.Ordinal, + expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); // OrdinalIgnoreCase comparer RunDictionaryTest( equalityComparer: StringComparer.OrdinalIgnoreCase, - expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalIgnoreCaseComparerType, - expectedPublicComparerBeforeCollisionThreshold: StringComparer.OrdinalIgnoreCase, - expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalIgnoreCaseComparerType); + expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalIgnoreCaseComparerType, + expectedPublicComparerBeforeCollisionThreshold: StringComparer.OrdinalIgnoreCase, + expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalIgnoreCaseComparerType); // linguistic comparer (not optimized) RunDictionaryTest( equalityComparer: StringComparer.InvariantCulture, - expectedInternalComparerTypeBeforeCollisionThreshold: StringComparer.InvariantCulture.GetType(), - expectedPublicComparerBeforeCollisionThreshold: StringComparer.InvariantCulture, - expectedInternalComparerTypeAfterCollisionThreshold: StringComparer.InvariantCulture.GetType()); - - // CollectionsMarshal.GetValueRefOrAddDefault - - RunCollectionTestCommon( - () => new Dictionary(StringComparer.Ordinal), - (dictionary, key) => CollectionsMarshal.GetValueRefOrAddDefault(dictionary, key, out _) = null, - (dictionary, key) => dictionary.ContainsKey(key), - dictionary => dictionary.Comparer, - expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, - expectedPublicComparerBeforeCollisionThreshold: StringComparer.Ordinal, - expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); + expectedInternalComparerTypeBeforeCollisionThreshold: StringComparer.InvariantCulture.GetType(), + expectedPublicComparerBeforeCollisionThreshold: StringComparer.InvariantCulture, + expectedInternalComparerTypeAfterCollisionThreshold: StringComparer.InvariantCulture.GetType()); + + // CollectionsMarshal.GetValueRefOrAddDefault + + RunCollectionTestCommon( + () => new Dictionary(StringComparer.Ordinal), + (dictionary, key) => CollectionsMarshal.GetValueRefOrAddDefault(dictionary, key, out _) = null, + (dictionary, key) => dictionary.ContainsKey(key), + dictionary => dictionary.Comparer, + expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, + expectedPublicComparerBeforeCollisionThreshold: StringComparer.Ordinal, + expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); static void RunDictionaryTest( IEqualityComparer equalityComparer, - Type expectedInternalComparerTypeBeforeCollisionThreshold, - IEqualityComparer expectedPublicComparerBeforeCollisionThreshold, - Type expectedInternalComparerTypeAfterCollisionThreshold) + Type expectedInternalComparerTypeBeforeCollisionThreshold, + IEqualityComparer expectedPublicComparerBeforeCollisionThreshold, + Type expectedInternalComparerTypeAfterCollisionThreshold) { RunCollectionTestCommon( () => new Dictionary(equalityComparer), (dictionary, key) => dictionary.Add(key, null), (dictionary, key) => dictionary.ContainsKey(key), dictionary => dictionary.Comparer, - expectedInternalComparerTypeBeforeCollisionThreshold, + expectedInternalComparerTypeBeforeCollisionThreshold, expectedPublicComparerBeforeCollisionThreshold, - expectedInternalComparerTypeAfterCollisionThreshold); + expectedInternalComparerTypeAfterCollisionThreshold); } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void ComparerImplementations_HashSet_WithWellKnownStringComparers() { Type nonRandomizedOrdinalComparerType = typeof(object).Assembly.GetType("System.Collections.Generic.NonRandomizedStringEqualityComparer+OrdinalComparer", throwOnError: true); @@ -130,56 +130,56 @@ public static void ComparerImplementations_HashSet_WithWellKnownStringComparers( RunHashSetTest( equalityComparer: null, - expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, - expectedPublicComparerBeforeCollisionThreshold: EqualityComparer.Default, - expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); + expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, + expectedPublicComparerBeforeCollisionThreshold: EqualityComparer.Default, + expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); // EqualityComparer.Default comparer RunHashSetTest( equalityComparer: EqualityComparer.Default, - expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, - expectedPublicComparerBeforeCollisionThreshold: EqualityComparer.Default, - expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); + expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, + expectedPublicComparerBeforeCollisionThreshold: EqualityComparer.Default, + expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); // Ordinal comparer RunHashSetTest( equalityComparer: StringComparer.Ordinal, - expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, - expectedPublicComparerBeforeCollisionThreshold: StringComparer.Ordinal, - expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); + expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalComparerType, + expectedPublicComparerBeforeCollisionThreshold: StringComparer.Ordinal, + expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalComparerType); // OrdinalIgnoreCase comparer RunHashSetTest( equalityComparer: StringComparer.OrdinalIgnoreCase, - expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalIgnoreCaseComparerType, - expectedPublicComparerBeforeCollisionThreshold: StringComparer.OrdinalIgnoreCase, - expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalIgnoreCaseComparerType); + expectedInternalComparerTypeBeforeCollisionThreshold: nonRandomizedOrdinalIgnoreCaseComparerType, + expectedPublicComparerBeforeCollisionThreshold: StringComparer.OrdinalIgnoreCase, + expectedInternalComparerTypeAfterCollisionThreshold: randomizedOrdinalIgnoreCaseComparerType); // linguistic comparer (not optimized) RunHashSetTest( equalityComparer: StringComparer.InvariantCulture, - expectedInternalComparerTypeBeforeCollisionThreshold: StringComparer.InvariantCulture.GetType(), - expectedPublicComparerBeforeCollisionThreshold: StringComparer.InvariantCulture, - expectedInternalComparerTypeAfterCollisionThreshold: StringComparer.InvariantCulture.GetType()); + expectedInternalComparerTypeBeforeCollisionThreshold: StringComparer.InvariantCulture.GetType(), + expectedPublicComparerBeforeCollisionThreshold: StringComparer.InvariantCulture, + expectedInternalComparerTypeAfterCollisionThreshold: StringComparer.InvariantCulture.GetType()); static void RunHashSetTest( IEqualityComparer equalityComparer, - Type expectedInternalComparerTypeBeforeCollisionThreshold, - IEqualityComparer expectedPublicComparerBeforeCollisionThreshold, - Type expectedInternalComparerTypeAfterCollisionThreshold) + Type expectedInternalComparerTypeBeforeCollisionThreshold, + IEqualityComparer expectedPublicComparerBeforeCollisionThreshold, + Type expectedInternalComparerTypeAfterCollisionThreshold) { RunCollectionTestCommon( () => new HashSet(equalityComparer), (set, key) => Assert.True(set.Add(key)), (set, key) => set.Contains(key), set => set.Comparer, - expectedInternalComparerTypeBeforeCollisionThreshold, + expectedInternalComparerTypeBeforeCollisionThreshold, expectedPublicComparerBeforeCollisionThreshold, - expectedInternalComparerTypeAfterCollisionThreshold); + expectedInternalComparerTypeAfterCollisionThreshold); } } @@ -188,9 +188,9 @@ private static void RunCollectionTestCommon( Action addKeyCallback, Func containsKeyCallback, Func> getComparerCallback, - Type expectedInternalComparerTypeBeforeCollisionThreshold, - IEqualityComparer expectedPublicComparerBeforeCollisionThreshold, - Type expectedInternalComparerTypeAfterCollisionThreshold) + Type expectedInternalComparerTypeBeforeCollisionThreshold, + IEqualityComparer expectedPublicComparerBeforeCollisionThreshold, + Type expectedInternalComparerTypeAfterCollisionThreshold) { TCollection collection = collectionFactory(); List allKeys = new List(); @@ -199,7 +199,7 @@ private static void RunCollectionTestCommon( for (int i = 0; i < 100; i++) { - string newKey = _collidingStrings[i]; + string newKey = _collidingStrings[i]; addKeyCallback(collection, newKey); allKeys.Add(newKey); } @@ -207,18 +207,18 @@ private static void RunCollectionTestCommon( FieldInfo internalComparerField = collection.GetType().GetField("_comparer", BindingFlags.NonPublic | BindingFlags.Instance); Assert.NotNull(internalComparerField); - IEqualityComparer actualInternalComparerBeforeCollisionThreshold = (IEqualityComparer)internalComparerField.GetValue(collection); - ValidateBehaviorOfInternalComparerVsPublicComparer(actualInternalComparerBeforeCollisionThreshold, expectedPublicComparerBeforeCollisionThreshold); - - Assert.Equal(expectedInternalComparerTypeBeforeCollisionThreshold, actualInternalComparerBeforeCollisionThreshold?.GetType()); - Assert.Equal(expectedPublicComparerBeforeCollisionThreshold, getComparerCallback(collection)); + IEqualityComparer actualInternalComparerBeforeCollisionThreshold = (IEqualityComparer)internalComparerField.GetValue(collection); + ValidateBehaviorOfInternalComparerVsPublicComparer(actualInternalComparerBeforeCollisionThreshold, expectedPublicComparerBeforeCollisionThreshold); + + Assert.Equal(expectedInternalComparerTypeBeforeCollisionThreshold, actualInternalComparerBeforeCollisionThreshold?.GetType()); + Assert.Equal(expectedPublicComparerBeforeCollisionThreshold, getComparerCallback(collection)); // Now exceed the collision threshold, which should rebucket entries. // Continue adding a few more entries to ensure we didn't corrupt internal state. for (int i = 100; i < 110; i++) { - string newKey = _collidingStrings[i]; + string newKey = _collidingStrings[i]; Assert.Equal(0, _lazyGetNonRandomizedHashCodeDel.Value(newKey)); // ensure has a zero hash code Ordinal Assert.Equal(0x24716ca0, _lazyGetNonRandomizedOrdinalIgnoreCaseHashCodeDel.Value(newKey)); // ensure has a zero hash code OrdinalIgnoreCase @@ -226,11 +226,11 @@ private static void RunCollectionTestCommon( allKeys.Add(newKey); } - IEqualityComparer actualInternalComparerAfterCollisionThreshold = (IEqualityComparer)internalComparerField.GetValue(collection); - ValidateBehaviorOfInternalComparerVsPublicComparer(actualInternalComparerAfterCollisionThreshold, expectedPublicComparerBeforeCollisionThreshold); - - Assert.Equal(expectedInternalComparerTypeAfterCollisionThreshold, actualInternalComparerAfterCollisionThreshold?.GetType()); - Assert.Equal(expectedPublicComparerBeforeCollisionThreshold, getComparerCallback(collection)); // shouldn't change this return value after collision threshold met + IEqualityComparer actualInternalComparerAfterCollisionThreshold = (IEqualityComparer)internalComparerField.GetValue(collection); + ValidateBehaviorOfInternalComparerVsPublicComparer(actualInternalComparerAfterCollisionThreshold, expectedPublicComparerBeforeCollisionThreshold); + + Assert.Equal(expectedInternalComparerTypeAfterCollisionThreshold, actualInternalComparerAfterCollisionThreshold?.GetType()); + Assert.Equal(expectedPublicComparerBeforeCollisionThreshold, getComparerCallback(collection)); // shouldn't change this return value after collision threshold met // And validate that all strings are present in the dictionary. @@ -246,7 +246,7 @@ private static void RunCollectionTestCommon( ((ISerializable)collection).GetObjectData(si, new StreamingContext()); object serializedComparer = si.GetValue("Comparer", typeof(IEqualityComparer)); - Assert.Equal(expectedPublicComparerBeforeCollisionThreshold, serializedComparer); + Assert.Equal(expectedPublicComparerBeforeCollisionThreshold, serializedComparer); } private static Lazy> _lazyGetNonRandomizedHashCodeDel = new Lazy>( @@ -255,63 +255,63 @@ private static void RunCollectionTestCommon( private static Lazy> _lazyGetNonRandomizedOrdinalIgnoreCaseHashCodeDel = new Lazy>( () => GetStringHashCodeOpenDelegate("GetNonRandomizedHashCodeOrdinalIgnoreCase")); - // n.b., must be initialized *after* delegate fields above - private static readonly List _collidingStrings = GenerateCollidingStrings(110); - - private static List GenerateCollidingStrings(int count) + // n.b., must be initialized *after* delegate fields above + private static readonly List _collidingStrings = GenerateCollidingStrings(110); + + private static List GenerateCollidingStrings(int count) { - const int StartOfRange = 0xE020; // use the Unicode Private Use range to avoid accidentally creating strings that really do compare as equal OrdinalIgnoreCase - const int Stride = 0x40; // to ensure we don't accidentally reset the 0x20 bit of the seed, which is used to negate OrdinalIgnoreCase effects - - int currentSeed = StartOfRange; - - List collidingStrings = new List(count); - while (collidingStrings.Count < count) + const int StartOfRange = 0xE020; // use the Unicode Private Use range to avoid accidentally creating strings that really do compare as equal OrdinalIgnoreCase + const int Stride = 0x40; // to ensure we don't accidentally reset the 0x20 bit of the seed, which is used to negate OrdinalIgnoreCase effects + + int currentSeed = StartOfRange; + + List collidingStrings = new List(count); + while (collidingStrings.Count < count) + { + if (currentSeed > ushort.MaxValue) + { + throw new Exception($"Couldn't create enough colliding strings? Created {collidingStrings.Count}, needed {count}."); + } + + string candidate = GenerateCollidingStringCandidate(currentSeed); + + int ordinalHashCode = _lazyGetNonRandomizedHashCodeDel.Value(candidate); + Assert.Equal(0, ordinalHashCode); // ensure has a zero hash code Ordinal + + int ordinalIgnoreCaseHashCode = _lazyGetNonRandomizedOrdinalIgnoreCaseHashCodeDel.Value(candidate); + if (ordinalIgnoreCaseHashCode == 0x24716ca0) // ensure has a zero hash code OrdinalIgnoreCase (might not have one) + { + collidingStrings.Add(candidate); // success! + } + + currentSeed += Stride; + } + + return collidingStrings; + + // Generates a possible string with a well-known non-randomized hash code: + // - string.GetNonRandomizedHashCode returns 0. + // - string.GetNonRandomizedHashCodeOrdinalIgnoreCase returns 0x24716ca0. + // Provide a different seed to produce a different string. + // Caller must check OrdinalIgnoreCase hash code to ensure correctness. + static string GenerateCollidingStringCandidate(int seed) { - if (currentSeed > ushort.MaxValue) - { - throw new Exception($"Couldn't create enough colliding strings? Created {collidingStrings.Count}, needed {count}."); - } - - string candidate = GenerateCollidingStringCandidate(currentSeed); - - int ordinalHashCode = _lazyGetNonRandomizedHashCodeDel.Value(candidate); - Assert.Equal(0, ordinalHashCode); // ensure has a zero hash code Ordinal - - int ordinalIgnoreCaseHashCode = _lazyGetNonRandomizedOrdinalIgnoreCaseHashCodeDel.Value(candidate); - if (ordinalIgnoreCaseHashCode == 0x24716ca0) // ensure has a zero hash code OrdinalIgnoreCase (might not have one) - { - collidingStrings.Add(candidate); // success! - } - - currentSeed += Stride; - } - - return collidingStrings; - - // Generates a possible string with a well-known non-randomized hash code: - // - string.GetNonRandomizedHashCode returns 0. - // - string.GetNonRandomizedHashCodeOrdinalIgnoreCase returns 0x24716ca0. - // Provide a different seed to produce a different string. - // Caller must check OrdinalIgnoreCase hash code to ensure correctness. - static string GenerateCollidingStringCandidate(int seed) - { - return string.Create(8, seed, (span, seed) => - { - Span asBytes = MemoryMarshal.AsBytes(span); - - uint hash1 = (5381 << 16) + 5381; - uint hash2 = BitOperations.RotateLeft(hash1, 5) + hash1; - - MemoryMarshal.Write(asBytes, in seed); - MemoryMarshal.Write(asBytes.Slice(4), in hash2); // set hash2 := 0 (for Ordinal) - - hash1 = (BitOperations.RotateLeft(hash1, 5) + hash1) ^ (uint)seed; - hash1 = (BitOperations.RotateLeft(hash1, 5) + hash1); - - MemoryMarshal.Write(asBytes.Slice(8), in hash1); // set hash1 := 0 (for Ordinal) - }); - } + return string.Create(8, seed, (span, seed) => + { + Span asBytes = MemoryMarshal.AsBytes(span); + + uint hash1 = (5381 << 16) + 5381; + uint hash2 = BitOperations.RotateLeft(hash1, 5) + hash1; + + MemoryMarshal.Write(asBytes, in seed); + MemoryMarshal.Write(asBytes.Slice(4), in hash2); // set hash2 := 0 (for Ordinal) + + hash1 = (BitOperations.RotateLeft(hash1, 5) + hash1) ^ (uint)seed; + hash1 = (BitOperations.RotateLeft(hash1, 5) + hash1); + + MemoryMarshal.Write(asBytes.Slice(8), in hash1); // set hash1 := 0 (for Ordinal) + }); + } } private static Func GetStringHashCodeOpenDelegate(string methodName) @@ -321,44 +321,44 @@ private static Func GetStringHashCodeOpenDelegate(string methodName return method.CreateDelegate>(target: null); // create open delegate unbound to 'this' } - - private static void ValidateBehaviorOfInternalComparerVsPublicComparer(IEqualityComparer internalComparer, IEqualityComparer publicComparer) - { - // This helper ensures that when we substitute one of our internal comparers - // in place of the expected public comparer, the internal comparer's Equals - // and GetHashCode behavior are consistent with the public comparer's. - - if (internalComparer is null) - { - internalComparer = EqualityComparer.Default; - } - if (publicComparer is null) - { - publicComparer = EqualityComparer.Default; - } - - foreach (var pair in new[] { - ("Hello", "Hello"), // exactly equal - ("Hello", "Goodbye"), // not equal at all - ("Hello", "hello"), // case-insensitive equal - ("Hello", "He\u200dllo"), // equal under linguistic comparer - ("Hello", "HE\u200dLLO"), // equal under case-insensitive linguistic comparer - ("\u0430\u0431\u0432\u0433\u0434\u0435\u0451\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044C\u044B\u044A\u044D\u044E\u044F", "\u0410\u0411\u0412\u0413\u0414\u0415\u0401\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042C\u042B\u042A\u042D\u042E\u042F"), // Cyrillic, case-insensitive equal - }) - { - bool arePairElementsExpectedEqual = publicComparer.Equals(pair.Item1, pair.Item2); - Assert.Equal(arePairElementsExpectedEqual, internalComparer.Equals(pair.Item1, pair.Item2)); - - bool areInternalHashCodesEqual = internalComparer.GetHashCode(pair.Item1) == internalComparer.GetHashCode(pair.Item2); - if (arePairElementsExpectedEqual) - { - Assert.True(areInternalHashCodesEqual); - } - else if (!areInternalHashCodesEqual) - { - Assert.False(arePairElementsExpectedEqual); - } - } - } + + private static void ValidateBehaviorOfInternalComparerVsPublicComparer(IEqualityComparer internalComparer, IEqualityComparer publicComparer) + { + // This helper ensures that when we substitute one of our internal comparers + // in place of the expected public comparer, the internal comparer's Equals + // and GetHashCode behavior are consistent with the public comparer's. + + if (internalComparer is null) + { + internalComparer = EqualityComparer.Default; + } + if (publicComparer is null) + { + publicComparer = EqualityComparer.Default; + } + + foreach (var pair in new[] { + ("Hello", "Hello"), // exactly equal + ("Hello", "Goodbye"), // not equal at all + ("Hello", "hello"), // case-insensitive equal + ("Hello", "He\u200dllo"), // equal under linguistic comparer + ("Hello", "HE\u200dLLO"), // equal under case-insensitive linguistic comparer + ("\u0430\u0431\u0432\u0433\u0434\u0435\u0451\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044C\u044B\u044A\u044D\u044E\u044F", "\u0410\u0411\u0412\u0413\u0414\u0415\u0401\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042C\u042B\u042A\u042D\u042E\u042F"), // Cyrillic, case-insensitive equal + }) + { + bool arePairElementsExpectedEqual = publicComparer.Equals(pair.Item1, pair.Item2); + Assert.Equal(arePairElementsExpectedEqual, internalComparer.Equals(pair.Item1, pair.Item2)); + + bool areInternalHashCodesEqual = internalComparer.GetHashCode(pair.Item1) == internalComparer.GetHashCode(pair.Item2); + if (arePairElementsExpectedEqual) + { + Assert.True(areInternalHashCodesEqual); + } + else if (!areInternalHashCodesEqual) + { + Assert.False(arePairElementsExpectedEqual); + } + } + } } } diff --git a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/DataRowComparerTest.cs b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/DataRowComparerTest.cs index 6d4ddbe9b3f58..c3350234eacc7 100644 --- a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/DataRowComparerTest.cs +++ b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/DataRowComparerTest.cs @@ -45,7 +45,7 @@ public void Default() Assert.Same(c1, c2); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void EqualsTest() { DataRowComparer c = DataRowComparer.Default; @@ -123,7 +123,7 @@ public void EqualsTest() Assert.False(c.Equals(r1, r4), "#H2"); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Equals_Rows_Detached() { DataRowComparer c = DataRowComparer.Default; @@ -160,7 +160,7 @@ public void Equals_Rows_Detached() Assert.True(c.Equals(r2, r3), "#C3"); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Equals_Rows_Deleted() { DataRowComparer c = DataRowComparer.Default; @@ -216,7 +216,7 @@ public void Equals_Rows_Deleted() } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void GetHashCodeWithVersions() { DataSet ds = new DataSet(); diff --git a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/DataRowExtensionsTest.cs b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/DataRowExtensionsTest.cs index a03fc946672eb..3cf12c4d4648d 100644 --- a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/DataRowExtensionsTest.cs +++ b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/DataRowExtensionsTest.cs @@ -55,7 +55,7 @@ DataRow SetupRow() return row; } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Field_T_DBNullFieldValue() { DataRow row = SetupRow(); @@ -69,7 +69,7 @@ public void Field_T_DBNullFieldValue() Assert.Null(i); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Field_T_DBNullFieldValue_ValueType() { DataRow row = SetupRow(); diff --git a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/DataTableExtensionsTest.cs b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/DataTableExtensionsTest.cs index 479807057113e..edda9c89df4f9 100644 --- a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/DataTableExtensionsTest.cs +++ b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/DataTableExtensionsTest.cs @@ -42,7 +42,7 @@ public class DataTableExtensionsTest { private string _testDataSet = "Mono/testdataset1.xml"; - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void CopyToDataTableNoArgNoRows() { DataTable dt = new DataTable(); @@ -53,7 +53,7 @@ public void CopyToDataTableNoArgNoRows() Assert.Throws(() => dt.AsEnumerable().CopyToDataTable()); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void CopyToDataTableNoArg() { DataTable dt = new DataTable(); @@ -65,7 +65,7 @@ public void CopyToDataTableNoArg() Assert.Equal("foo", dst.Rows[0]["CName"]); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void CopyToDataTableTableArgNoRows() { DataTable dt = new DataTable(); @@ -75,7 +75,7 @@ public void CopyToDataTableTableArgNoRows() dt.AsEnumerable().CopyToDataTable(dst, LoadOption.PreserveChanges); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void AsEnumerable() { DataSet ds = new DataSet(); diff --git a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/EnumerableRowCollectionTest.cs b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/EnumerableRowCollectionTest.cs index a1f0dd6ec13ff..ba292235291e3 100644 --- a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/EnumerableRowCollectionTest.cs +++ b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/Mono/EnumerableRowCollectionTest.cs @@ -41,7 +41,7 @@ public class EnumerableRowCollectionTest { private string _testDataSet = "Mono/testdataset1.xml"; - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void QueryWhere() { var ds = new DataSet(); @@ -68,7 +68,7 @@ where line.Field("Score") > 80 } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void QueryWhereSelect () { var ds = new DataSet (); @@ -89,7 +89,7 @@ where line.Field ("Score") > 80 } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void QueryWhereSelectOrderBy () { var ds = new DataSet (); @@ -119,7 +119,7 @@ orderby line.Field ("ID") } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void QueryWhereSelectOrderByDescending () { var ds = new DataSet (); @@ -149,7 +149,7 @@ orderby line.Field ("ID") descending } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void ThenBy () { var ds = new DataSet (); @@ -179,7 +179,7 @@ orderby line.Field ("Gender"), line.Field ("ID") } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void ThenByDescending () { var ds = new DataSet (); diff --git a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/DataRowComparerTests.cs b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/DataRowComparerTests.cs index db2a3420cde13..7652cfe9dac9d 100644 --- a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/DataRowComparerTests.cs +++ b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/DataRowComparerTests.cs @@ -278,7 +278,7 @@ public static IEnumerable Equals_TestData() }; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(Equals_TestData))] public void Equals_Rows_ReturnsExpected(DataRow row1, DataRow row2, bool expected) { @@ -286,7 +286,7 @@ public void Equals_Rows_ReturnsExpected(DataRow row1, DataRow row2, bool expecte Assert.Equal(expected, DataRowComparer.Default.Equals(row2, row1)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Equals_NullStringValueInStringArray_CanBeCompared() { var table = new DataTable("Table"); @@ -307,7 +307,7 @@ public void Equals_NullStringValueInStringArray_CanBeCompared() Assert.False(DataRowComparer.Default.Equals(row3, row2)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Equals_DeletedRow_ThrowsInvalidOperationException() { var table = new DataTable("Table"); @@ -342,7 +342,7 @@ public static IEnumerable GetHashCode_TestData() yield return new object[] { multidimensionalArray, multidimensionalArray.GetHashCode() }; } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(GetHashCode_TestData))] public void GetHashCode_HasColumns_ReturnsExpected(object value, int expected) { @@ -362,7 +362,7 @@ public void GetHashCode_NoColumns_ReturnsZero() Assert.Equal(0, DataRowComparer.Default.GetHashCode(table.NewRow())); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void GetHashCode_OneColumn_DoesNotReturnZero() { var comparer = DataRowComparer.Default; @@ -379,7 +379,7 @@ public void GetHashCode_NullRow_ThrowsArgumentNullException() AssertExtensions.Throws("row", () => DataRowComparer.Default.GetHashCode(null)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void GetHashCode_DeletedRow_ThrowsInvalidOperationException() { var table = new DataTable("Table"); diff --git a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/DataRowExtensionsTests.cs b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/DataRowExtensionsTests.cs index 340eb77e7d60a..e9acec3f8c446 100644 --- a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/DataRowExtensionsTests.cs +++ b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/DataRowExtensionsTests.cs @@ -93,7 +93,7 @@ public void Field_ColumnVersion_NullColumnThrows() AssertExtensions.Throws("column", () => DataRowExtensions.Field(row, column: null, version: DataRowVersion.Default)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Field_NonNullable_Enum() { DataTable table = new DataTable("test"); @@ -105,7 +105,7 @@ public void Field_NonNullable_Enum() Assert.Equal(SomeEnum.Foo, table.Rows[0].Field("col")); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Field_Nullable_Enum() { DataTable table = new DataTable("test"); @@ -136,7 +136,7 @@ public void SetField_IndexValue_NullColumnThrows() Assert.Throws(() => DataRowExtensions.SetField(row, columnIndex: -1, value: 0)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void SetField_IndexValue_NullValueReplacedByDBNull() { DataTable table = new DataTable("test"); @@ -161,7 +161,7 @@ public void SetField_NameValue_NullColumnNameThrows() AssertExtensions.Throws("name", () => DataRowExtensions.SetField(row, columnName: null, value: 0)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void SetField_NameValue_NullValueReplacedByDBNull() { DataTable table = new DataTable("test"); @@ -187,7 +187,7 @@ public void SetField_ColumnValue_NullColumnThrows() AssertExtensions.Throws("column", () => DataRowExtensions.SetField(row, column: null, value: 0)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void SetField_ColumnValue_NullValueReplacedByDBNull() { DataTable table = new DataTable("test"); diff --git a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/EnumerableRowCollectionExtensionsTests.cs b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/EnumerableRowCollectionExtensionsTests.cs index 2c7a483cd2b66..0806c4a586eb8 100644 --- a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/EnumerableRowCollectionExtensionsTests.cs +++ b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/EnumerableRowCollectionExtensionsTests.cs @@ -33,7 +33,7 @@ public override int Compare(T x, T y) return (table, one, two, three); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Where_SuccessfullyFindRow() { TypedTableBase table = new TestTypedTable(); @@ -51,7 +51,7 @@ public void Where_SuccessfullyFindRow() Assert.Same(two, filtered.First()); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void OrderBy_AddSortExpressionValidation() { var (table, one, two, three) = InstantiateTable(); @@ -65,7 +65,7 @@ public void OrderBy_AddSortExpressionValidation() Assert.Equal(new DataRow[] { zero, one, two, three }, compared); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void OrderByDescending_AddSortExpressionValidation() { var (table, one, two, three) = InstantiateTable(); @@ -79,7 +79,7 @@ public void OrderByDescending_AddSortExpressionValidation() Assert.Equal(new DataRow[] { four, three, two, one }, comparedBackwards); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void ThenBy_AddSortExpressionValidation() { var (table, one, two, three) = InstantiateTable(); @@ -97,7 +97,7 @@ public void ThenBy_AddSortExpressionValidation() } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void ThenByDescending_AddSortExpressionValidation() { var (table, one, two, three) = InstantiateTable(); diff --git a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/TypedTableBaseExtensionsTests.cs b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/TypedTableBaseExtensionsTests.cs index ef8516dfc3e16..02d2b2153d3d0 100644 --- a/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/TypedTableBaseExtensionsTests.cs +++ b/src/libraries/System.Data.Common/tests/System.Data.DataSetExtensions.Tests/System/Data/TypedTableBaseExtensionsTests.cs @@ -44,7 +44,7 @@ public class TestTypedTable : TypedTableBase where T : DataRow public TestTypedTable() : base() { } } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void ElementAtOrDefault_ValidIndex() { TypedTableBase table = new TestTypedTable(); @@ -54,7 +54,7 @@ public void ElementAtOrDefault_ValidIndex() Assert.Same(zero, table.ElementAtOrDefault(0)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void ElementAtOrDefault_InvalidIndex() { TypedTableBase table = new TestTypedTable(); @@ -64,7 +64,7 @@ public void ElementAtOrDefault_InvalidIndex() Assert.Same(default(DataRow), table.ElementAtOrDefault(1)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Select_ToListOfInts() { TypedTableBase table = new TestTypedTable(); diff --git a/src/libraries/System.Data.Common/tests/System/Data/DataTableExtensionsTest.cs b/src/libraries/System.Data.Common/tests/System/Data/DataTableExtensionsTest.cs index 9d73511e9b07a..3c88b4a785bcc 100644 --- a/src/libraries/System.Data.Common/tests/System/Data/DataTableExtensionsTest.cs +++ b/src/libraries/System.Data.Common/tests/System/Data/DataTableExtensionsTest.cs @@ -51,7 +51,7 @@ public void AsDataView_NullSource_ThrowsArgumentNullException() AssertExtensions.Throws("source", () => DataTableExtensions.AsDataView(null)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void AsDataView_Source_Succeeds() { DataView dv = _dt.AsEnumerable().Where(r => r.Field("alias").Length > 6).AsDataView(); diff --git a/src/libraries/System.Net.Mail/tests/Functional/MailAddressTest.cs b/src/libraries/System.Net.Mail/tests/Functional/MailAddressTest.cs index 019ceee0d41b2..70c30ee55a86a 100644 --- a/src/libraries/System.Net.Mail/tests/Functional/MailAddressTest.cs +++ b/src/libraries/System.Net.Mail/tests/Functional/MailAddressTest.cs @@ -210,7 +210,7 @@ public void EqualsTest2() Assert.Equal(n, n2); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void GetHashCodeTest() { var n = new MailAddress("Mr. Bar "); @@ -218,7 +218,7 @@ public void GetHashCodeTest() Assert.Equal(n.GetHashCode(), n2.GetHashCode()); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void GetHashCodeTest2() { var n = new MailAddress("Mr. Bar "); diff --git a/src/libraries/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XsltArgumentList.cs b/src/libraries/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XsltArgumentList.cs index 5cdf85852f87c..d28d2bf7a840f 100644 --- a/src/libraries/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XsltArgumentList.cs +++ b/src/libraries/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XsltArgumentList.cs @@ -3252,7 +3252,7 @@ public void AddExtObject32(object param, XslInputType xslInputType, ReaderType r [InlineData("sort.xsl", "sort.txt", XslInputType.Navigator, ReaderType.XmlValidatingReader, OutputType.Writer, NavType.XPathDocument)] [InlineData("sort.xsl", "sort.txt", XslInputType.Navigator, ReaderType.XmlValidatingReader, OutputType.TextWriter, NavType.XPathDocument)] - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void AddExtObject33(object param0, object param1, XslInputType xslInputType, ReaderType readerType, OutputType outputType, NavType navType) { ExObj obj = new ExObj(0, _output); diff --git a/src/libraries/System.Runtime.Caching/tests/System.Runtime.Caching/MemoryCacheTest.cs b/src/libraries/System.Runtime.Caching/tests/System.Runtime.Caching/MemoryCacheTest.cs index ef5a6c04d45db..c34386b128159 100644 --- a/src/libraries/System.Runtime.Caching/tests/System.Runtime.Caching/MemoryCacheTest.cs +++ b/src/libraries/System.Runtime.Caching/tests/System.Runtime.Caching/MemoryCacheTest.cs @@ -70,6 +70,8 @@ public static bool SupportsPhysicalMemoryMonitor } public static bool DoesNotSupportPhysicalMemoryMonitor => !SupportsPhysicalMemoryMonitor; + public static bool IsNotHybridGlobalizationOnBrowser => PlatformDetection.IsNotHybridGlobalizationOnBrowser; + private bool IsFullFramework = RuntimeInformation.FrameworkDescription.StartsWith(".NET Framework", StringComparison.OrdinalIgnoreCase); private PokerMemoryCache CreatePokerMemoryCache(string name, string throwOnDisposed) @@ -84,7 +86,7 @@ private PokerMemoryCache CreatePokerMemoryCache(string name, string throwOnDispo return new PokerMemoryCache("MyCache", config); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void ConstructorParameters() { MemoryCache mc; @@ -236,7 +238,7 @@ public void DefaultInstanceDefaults() mc.Trim(0); } - [ConditionalFact(nameof(SupportsPhysicalMemoryMonitor))] + [ConditionalFact(nameof(SupportsPhysicalMemoryMonitor), nameof(IsNotHybridGlobalizationOnBrowser))] public void ConstructorValues() { var config = new NameValueCollection(); @@ -258,7 +260,10 @@ public void ConstructorValues() Assert.Equal(TimeSpan.FromMinutes(70), mc.PollingInterval); } - [Theory, InlineData("true"), InlineData("false"), InlineData(null)] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] + [InlineData("true")] + [InlineData("false")] + [InlineData(null)] public void Indexer(string throwOnDisposed) { var mc = CreatePokerMemoryCache("MyCache", throwOnDisposed); @@ -303,7 +308,10 @@ public void Indexer(string throwOnDisposed) } } - [Theory, InlineData("true"), InlineData("false"), InlineData(null)] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] + [InlineData("true")] + [InlineData("false")] + [InlineData(null)] //[ActiveIssue("https://github.com/dotnet/runtime/issues/1429")] public void Contains(string throwOnDisposed) { @@ -401,7 +409,10 @@ public void CreateCacheEntryChangeMonitor() Assert.True (monitor.HasChanged); } - [Theory, InlineData("true"), InlineData("false"), InlineData(null)] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] + [InlineData("true")] + [InlineData("false")] + [InlineData(null)] public void AddOrGetExisting_String_Object_DateTimeOffset_String(string throwOnDisposed) { var mc = CreatePokerMemoryCache("MyCache", throwOnDisposed); @@ -675,7 +686,10 @@ public void AddOrGetExisting_CacheItem_CacheItemPolicy() Assert.Equal("AddOrGetExisting (CacheItem item, CacheItemPolicy policy)", mc.Calls[0]); } - [Theory, InlineData("true"), InlineData("false"), InlineData(null)] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] + [InlineData("true")] + [InlineData("false")] + [InlineData(null)] public void Set_String_Object_CacheItemPolicy_String(string throwOnDisposed) { var mc = CreatePokerMemoryCache("MyCache", throwOnDisposed); @@ -901,7 +915,10 @@ public void Set_CacheItem_CacheItemPolicy() Assert.Equal("Set (string key, object value, CacheItemPolicy policy, string regionName = null)", mc.Calls[1]); } - [Theory, InlineData("true"), InlineData("false"), InlineData(null)] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] + [InlineData("true")] + [InlineData("false")] + [InlineData(null)] public void Remove(string throwOnDisposed) { var mc = CreatePokerMemoryCache("MyCache", throwOnDisposed); @@ -1010,7 +1027,10 @@ public void Remove(string throwOnDisposed) } } - [Theory, InlineData("true"), InlineData("false"), InlineData(null)] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] + [InlineData("true")] + [InlineData("false")] + [InlineData(null)] public void GetValues(string throwOnDisposed) { var mc = CreatePokerMemoryCache("MyCache", throwOnDisposed); @@ -1111,7 +1131,7 @@ public void ChangeMonitors() // Due to internal implementation details Trim has very few easily verifiable scenarios // ActiveIssue: https://github.com/dotnet/runtime/issues/36488 - [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotArm64Process))] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotArm64Process), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData("true"), InlineData("false"), InlineData(null)] public void Trim(string throwOnDisposed) { @@ -1162,7 +1182,7 @@ public void Trim(string throwOnDisposed) } } - [ConditionalFact(nameof(SupportsPhysicalMemoryMonitor))] + [ConditionalFact(nameof(SupportsPhysicalMemoryMonitor), nameof(IsNotHybridGlobalizationOnBrowser))] public void TestExpiredGetValues() { var config = new NameValueCollection(); @@ -1508,8 +1528,9 @@ public async Task GetCacheItem() public class MemoryCacheTestExpires4 { public static bool SupportsPhysicalMemoryMonitor => MemoryCacheTest.SupportsPhysicalMemoryMonitor; + public static bool IsNotHybridGlobalizationOnBrowser => MemoryCacheTest.IsNotHybridGlobalizationOnBrowser; - [ConditionalFact(nameof(SupportsPhysicalMemoryMonitor))] + [ConditionalFact(nameof(SupportsPhysicalMemoryMonitor), nameof(IsNotHybridGlobalizationOnBrowser))] [SkipOnPlatform(TestPlatforms.LinuxBionic, "https://github.com/dotnet/runtime/issues/93106")] public async Task TestCacheShrink() { @@ -1568,8 +1589,9 @@ public async Task TestCacheShrink() public class MemoryCacheTestExpires5 { public static bool SupportsPhysicalMemoryMonitor => MemoryCacheTest.SupportsPhysicalMemoryMonitor; + public static bool IsNotHybridGlobalizationOnBrowser => MemoryCacheTest.IsNotHybridGlobalizationOnBrowser; - [ConditionalFact(nameof(SupportsPhysicalMemoryMonitor))] + [ConditionalFact(nameof(SupportsPhysicalMemoryMonitor), nameof(IsNotHybridGlobalizationOnBrowser))] [SkipOnPlatform(TestPlatforms.LinuxBionic, "https://github.com/dotnet/runtime/issues/93106")] public async Task TestCacheExpiryOrdering() { diff --git a/src/libraries/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs b/src/libraries/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs index 58d8a6eb3026e..effd1426556ee 100644 --- a/src/libraries/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs +++ b/src/libraries/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs @@ -2599,7 +2599,7 @@ public static void DCJS_VerifyDateTimeForFormatStringDCJsonSerSetting() Assert.Equal(value, actual); } - [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization))] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [ActiveIssue("https://github.com/dotnet/runtime/issues/60462", TestPlatforms.iOS | TestPlatforms.tvOS)] public static void DCJS_VerifyDateTimeForFormatStringDCJsonSerSettings() { @@ -2660,7 +2660,7 @@ public static void DCJS_VerifyDateTimeForFormatStringDCJsonSerSettings() Assert.True(actual6 == dateTime); } - [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization))] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void DCJS_VerifyDateTimeForDateTimeFormat() { var jsonTypes = new JsonTypes(); diff --git a/src/libraries/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs b/src/libraries/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs index 0d543eca0c99a..a7ffda68b113a 100644 --- a/src/libraries/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs +++ b/src/libraries/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs @@ -3542,7 +3542,7 @@ public static void DCS_BasicPerSerializerRoundTripAndCompare_SampleTypes() } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void DCS_BasicPerSerializerRoundTripAndCompare_DataSet() { diff --git a/src/libraries/System.Runtime/tests/System.Globalization.Extensions.Tests/GetStringComparerTests.cs b/src/libraries/System.Runtime/tests/System.Globalization.Extensions.Tests/GetStringComparerTests.cs index 964f45d97452a..1f2dc7714adc5 100644 --- a/src/libraries/System.Runtime/tests/System.Globalization.Extensions.Tests/GetStringComparerTests.cs +++ b/src/libraries/System.Runtime/tests/System.Globalization.Extensions.Tests/GetStringComparerTests.cs @@ -19,7 +19,7 @@ public void GetStringComparer_Invalid() AssertExtensions.Throws("options", () => new CultureInfo("tr-TR").CompareInfo.GetStringComparer(CompareOptions.OrdinalIgnoreCase | CompareOptions.IgnoreCase)); } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData("hello", "hello", "fr-FR", CompareOptions.IgnoreCase, 0, 0)] [InlineData("hello", "HELLo", "fr-FR", CompareOptions.IgnoreCase, 0, 0)] [InlineData("hello", null, "fr-FR", CompareOptions.IgnoreCase, 1, 1)] diff --git a/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedDayNames.cs b/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedDayNames.cs index a597272f7492c..e8a0c1d46e68f 100644 --- a/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedDayNames.cs +++ b/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoAbbreviatedDayNames.cs @@ -31,66 +31,73 @@ public static IEnumerable AbbreviatedDayNames_Set_TestData() public static IEnumerable AbbreviatedDayNames_Get_TestData_HybridGlobalization() { // see the comments on the right to check the non-Hybrid result, if it differs - yield return new object[] { new CultureInfo("ar-SA").DateTimeFormat, new string[] { "الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت" } }; - yield return new object[] { new CultureInfo("am-ET").DateTimeFormat, new string[] { "እሑድ", "ሰኞ", "ማክሰ", "ረቡዕ", "ሐሙስ", "ዓርብ", "ቅዳሜ" } }; - yield return new object[] { new CultureInfo("bg-BG").DateTimeFormat, new string[] { "нд", "пн", "вт", "ср", "чт", "пт", "сб" } }; - yield return new object[] { new CultureInfo("bn-BD").DateTimeFormat, new string[] { "রবি", "সোম", "মঙ্গল", "বুধ", "বৃহস্পতি", "শুক্র", "শনি" } }; - yield return new object[] { new CultureInfo("ca-AD").DateTimeFormat, new string[] { "dg.", "dl.", "dt.", "dc.", "dj.", "dv.", "ds." } }; - yield return new object[] { new CultureInfo("cs-CZ").DateTimeFormat, new string[] { "ne", "po", "út", "st", "čt", "pá", "so" } }; - yield return new object[] { new CultureInfo("da-DK").DateTimeFormat, new string[] { "søn.", "man.", "tirs.", "ons.", "tors.", "fre.", "lør." } }; - yield return new object[] { new CultureInfo("de-DE").DateTimeFormat, new string[] { "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa" } }; - yield return new object[] { new CultureInfo("el-GR").DateTimeFormat, new string[] { "Κυρ", "Δευ", "Τρί", "Τετ", "Πέμ", "Παρ", "Σάβ" } }; - yield return new object[] { new CultureInfo("en-CA").DateTimeFormat, new string[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" } }; // should be with dots - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, new string[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" } }; - yield return new object[] { new CultureInfo("es-419").DateTimeFormat, new string[] { "dom", "lun", "mar", "mié", "jue", "vie", "sáb" } }; // should be with dots like all "es-*" - yield return new object[] { new CultureInfo("et-EE").DateTimeFormat, new string[] { "P", "E", "T", "K", "N", "R", "L" } }; - yield return new object[] { new CultureInfo("fa-IR").DateTimeFormat, new string[] { "یکشنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" } }; - yield return new object[] { new CultureInfo("fi-FI").DateTimeFormat, new string[] { "su", "ma", "ti", "ke", "to", "pe", "la" } }; - yield return new object[] { new CultureInfo("fil-PH").DateTimeFormat, new string[] { "Lin", "Lun", "Mar", "Miy", "Huw", "Biy", "Sab" } }; - yield return new object[] { new CultureInfo("fr-BE").DateTimeFormat, new string[] { "dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam." } }; - yield return new object[] { new CultureInfo("gu-IN").DateTimeFormat, new string[] { "રવિ", "સોમ", "મંગળ", "બુધ", "ગુરુ", "શુક્ર", "શનિ" } }; - yield return new object[] { new CultureInfo("he-IL").DateTimeFormat, new string[] { "יום א׳", "יום ב׳", "יום ג׳", "יום ד׳", "יום ה׳", "יום ו׳", "שבת" } }; - yield return new object[] { new CultureInfo("hr-BA").DateTimeFormat, new string[] { "ned", "pon", "uto", "sri", "čet", "pet", "sub" } }; - yield return new object[] { new CultureInfo("hu-HU").DateTimeFormat, new string[] { "V", "H", "K", "Sze", "Cs", "P", "Szo" } }; - yield return new object[] { new CultureInfo("id-ID").DateTimeFormat, new string[] { "Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab" } }; - yield return new object[] { new CultureInfo("it-CH").DateTimeFormat, new string[] { "dom", "lun", "mar", "mer", "gio", "ven", "sab" } }; - yield return new object[] { new CultureInfo("it-IT").DateTimeFormat, new string[] { "dom", "lun", "mar", "mer", "gio", "ven", "sab" } }; - yield return new object[] { new CultureInfo("ja-JP").DateTimeFormat, new string[] { "日", "月", "火", "水", "木", "金", "土" } }; - yield return new object[] { new CultureInfo("kn-IN").DateTimeFormat, new string[] { "ಭಾನು", "ಸೋಮ", "ಮಂಗಳ", "ಬುಧ", "ಗುರು", "ಶುಕ್ರ", "ಶನಿ" } }; - yield return new object[] { new CultureInfo("ko-KR").DateTimeFormat, new string[] { "일", "월", "화", "수", "목", "금", "토" } }; - yield return new object[] { new CultureInfo("lt-LT").DateTimeFormat, new string[] { "sk", "pr", "an", "tr", "kt", "pn", "št" } }; - yield return new object[] { new CultureInfo("lv-LV").DateTimeFormat, new string[] { "Svētd.", "Pirmd.", "Otrd.", "Trešd.", "Ceturtd.", "Piektd.", "Sestd." } }; - yield return new object[] { new CultureInfo("ml-IN").DateTimeFormat, new string[] { "ഞായർ", "തിങ്കൾ", "ചൊവ്വ", "ബുധൻ", "വ്യാഴം", "വെള്ളി", "ശനി" } }; - yield return new object[] { new CultureInfo("mr-IN").DateTimeFormat, new string[] { "रवि", "सोम", "मंगळ", "बुध", "गुरु", "शुक्र", "शनि" } }; - yield return new object[] { new CultureInfo("ms-BN").DateTimeFormat, new string[] { "Ahd", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab" } }; - yield return new object[] { new CultureInfo("nb-NO").DateTimeFormat, new string[] { "søn.", "man.", "tir.", "ons.", "tor.", "fre.", "lør." } }; - yield return new object[] { new CultureInfo("nl-AW").DateTimeFormat, new string[] { "zo", "ma", "di", "wo", "do", "vr", "za" } }; - yield return new object[] { new CultureInfo("pl-PL").DateTimeFormat, new string[] { "niedz.", "pon.", "wt.", "śr.", "czw.", "pt.", "sob." } }; - yield return new object[] { new CultureInfo("pt-BR").DateTimeFormat, new string[] { "dom.", "seg.", "ter.", "qua.", "qui.", "sex.", "sáb." } }; - yield return new object[] { new CultureInfo("pt-PT").DateTimeFormat, new string[] { "domingo", "segunda", "terça", "quarta", "quinta", "sexta", "sábado" } }; - yield return new object[] { new CultureInfo("ro-RO").DateTimeFormat, new string[] { "dum.", "lun.", "mar.", "mie.", "joi", "vin.", "sâm." } }; - yield return new object[] { new CultureInfo("ru-RU").DateTimeFormat, new string[] { "вс", "пн", "вт", "ср", "чт", "пт", "сб" } }; - yield return new object[] { new CultureInfo("sk-SK").DateTimeFormat, new string[] { "ne", "po", "ut", "st", "št", "pi", "so" } }; - yield return new object[] { new CultureInfo("sl-SI").DateTimeFormat, new string[] { "ned.", "pon.", "tor.", "sre.", "čet.", "pet.", "sob." } }; - yield return new object[] { new CultureInfo("sr-Cyrl-RS").DateTimeFormat, new string[] { "нед", "пон", "уто", "сре", "чет", "пет", "суб" } }; - yield return new object[] { new CultureInfo("sr-Latn-RS").DateTimeFormat, new string[] { "ned", "pon", "uto", "sre", "čet", "pet", "sub" } }; - yield return new object[] { new CultureInfo("sv-AX").DateTimeFormat, new string[] { "sön", "mån", "tis", "ons", "tors", "fre", "lör" } }; - yield return new object[] { new CultureInfo("sv-SE").DateTimeFormat, new string[] { "sön", "mån", "tis", "ons", "tors", "fre", "lör" } }; - yield return new object[] { new CultureInfo("sw-CD").DateTimeFormat, new string[] { "Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi" } }; - yield return new object[] { new CultureInfo("ta-IN").DateTimeFormat, new string[] { "ஞாயி.", "திங்.", "செவ்.", "புத.", "வியா.", "வெள்.", "சனி" } }; - yield return new object[] { new CultureInfo("te-IN").DateTimeFormat, new string[] { "ఆది", "సోమ", "మంగళ", "బుధ", "గురు", "శుక్ర", "శని" } }; - yield return new object[] { new CultureInfo("th-TH").DateTimeFormat, new string[] { "อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส." } }; - yield return new object[] { new CultureInfo("tr-CY").DateTimeFormat, new string[] { "Paz", "Pzt", "Sal", "Çar", "Per", "Cum", "Cmt" } }; - yield return new object[] { new CultureInfo("uk-UA").DateTimeFormat, new string[] { "нд", "пн", "вт", "ср", "чт", "пт", "сб" } }; - yield return new object[] { new CultureInfo("vi-VN").DateTimeFormat, new string[] { "CN", "Th 2", "Th 3", "Th 4", "Th 5", "Th 6", "Th 7" } }; - yield return new object[] { new CultureInfo("zh-CN").DateTimeFormat, new string[] { "周日", "周一", "周二", "周三", "周四", "周五", "周六" } }; + yield return new object[] { "ar-SA", new string[] { "الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت" } }; + yield return new object[] { "am-ET", new string[] { "እሑድ", "ሰኞ", "ማክሰ", "ረቡዕ", "ሐሙስ", "ዓርብ", "ቅዳሜ" } }; + yield return new object[] { "bg-BG", new string[] { "нд", "пн", "вт", "ср", "чт", "пт", "сб" } }; + yield return new object[] { "bn-BD", new string[] { "রবি", "সোম", "মঙ্গল", "বুধ", "বৃহস্পতি", "শুক্র", "শনি" } }; + yield return new object[] { "ca-AD", new string[] { "dg.", "dl.", "dt.", "dc.", "dj.", "dv.", "ds." } }; + yield return new object[] { "cs-CZ", new string[] { "ne", "po", "út", "st", "čt", "pá", "so" } }; + var danishDays = PlatformDetection.IsNodeJSOnWindows ? + new string[] { "søn", "man", "tir", "ons", "tor", "fre", "lør" } : + new string[] { "søn.", "man.", "tirs.", "ons.", "tors.", "fre.", "lør." }; // like ICU + yield return new object[] { "da-DK", danishDays }; + yield return new object[] { "de-DE", new string[] { "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa" } }; + yield return new object[] { "el-GR", new string[] { "Κυρ", "Δευ", "Τρί", "Τετ", "Πέμ", "Παρ", "Σάβ" } }; + yield return new object[] { "en-CA", new string[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" } }; // should be with dots + yield return new object[] { "en-US", new string[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" } }; + yield return new object[] { "es-419", new string[] { "dom", "lun", "mar", "mié", "jue", "vie", "sáb" } }; // should be with dots like all "es-*" + yield return new object[] { "et-EE", new string[] { "P", "E", "T", "K", "N", "R", "L" } }; + yield return new object[] { "fa-IR", new string[] { "یکشنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" } }; + yield return new object[] { "fi-FI", new string[] { "su", "ma", "ti", "ke", "to", "pe", "la" } }; + yield return new object[] { "fil-PH", new string[] { "Lin", "Lun", "Mar", "Miy", "Huw", "Biy", "Sab" } }; + yield return new object[] { "fr-BE", new string[] { "dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam." } }; + yield return new object[] { "gu-IN", new string[] { "રવિ", "સોમ", "મંગળ", "બુધ", "ગુરુ", "શુક્ર", "શનિ" } }; + yield return new object[] { "he-IL", new string[] { "יום א׳", "יום ב׳", "יום ג׳", "יום ד׳", "יום ה׳", "יום ו׳", "שבת" } }; + yield return new object[] { "hr-BA", new string[] { "ned", "pon", "uto", "sri", "čet", "pet", "sub" } }; + yield return new object[] { "hu-HU", new string[] { "V", "H", "K", "Sze", "Cs", "P", "Szo" } }; + yield return new object[] { "id-ID", new string[] { "Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab" } }; + yield return new object[] { "it-CH", new string[] { "dom", "lun", "mar", "mer", "gio", "ven", "sab" } }; + yield return new object[] { "it-IT", new string[] { "dom", "lun", "mar", "mer", "gio", "ven", "sab" } }; + yield return new object[] { "ja-JP", new string[] { "日", "月", "火", "水", "木", "金", "土" } }; + yield return new object[] { "kn-IN", new string[] { "ಭಾನು", "ಸೋಮ", "ಮಂಗಳ", "ಬುಧ", "ಗುರು", "ಶುಕ್ರ", "ಶನಿ" } }; + yield return new object[] { "ko-KR", new string[] { "일", "월", "화", "수", "목", "금", "토" } }; + yield return new object[] { "lt-LT", new string[] { "sk", "pr", "an", "tr", "kt", "pn", "št" } }; + yield return new object[] { "lv-LV", new string[] { "Svētd.", "Pirmd.", "Otrd.", "Trešd.", "Ceturtd.", "Piektd.", "Sestd." } }; + yield return new object[] { "ml-IN", new string[] { "ഞായർ", "തിങ്കൾ", "ചൊവ്വ", "ബുധൻ", "വ്യാഴം", "വെള്ളി", "ശനി" } }; + yield return new object[] { "mr-IN", new string[] { "रवि", "सोम", "मंगळ", "बुध", "गुरु", "शुक्र", "शनि" } }; + yield return new object[] { "ms-BN", new string[] { "Ahd", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab" } }; + yield return new object[] { "nb-NO", new string[] { "søn.", "man.", "tir.", "ons.", "tor.", "fre.", "lør." } }; + yield return new object[] { "nl-AW", new string[] { "zo", "ma", "di", "wo", "do", "vr", "za" } }; + yield return new object[] { "pl-PL", new string[] { "niedz.", "pon.", "wt.", "śr.", "czw.", "pt.", "sob." } }; + yield return new object[] { "pt-BR", new string[] { "dom.", "seg.", "ter.", "qua.", "qui.", "sex.", "sáb." } }; + yield return new object[] { "pt-PT", new string[] { "domingo", "segunda", "terça", "quarta", "quinta", "sexta", "sábado" } }; + yield return new object[] { "ro-RO", new string[] { "dum.", "lun.", "mar.", "mie.", "joi", "vin.", "sâm." } }; + yield return new object[] { "ru-RU", new string[] { "вс", "пн", "вт", "ср", "чт", "пт", "сб" } }; + yield return new object[] { "sk-SK", new string[] { "ne", "po", "ut", "st", "št", "pi", "so" } }; + yield return new object[] { "sl-SI", new string[] { "ned.", "pon.", "tor.", "sre.", "čet.", "pet.", "sob." } }; + yield return new object[] { "sr-Cyrl-RS", new string[] { "нед", "пон", "уто", "сре", "чет", "пет", "суб" } }; + yield return new object[] { "sr-Latn-RS", new string[] { "ned", "pon", "uto", "sre", "čet", "pet", "sub" } }; + yield return new object[] { "sv-AX", new string[] { "sön", "mån", "tis", "ons", "tors", "fre", "lör" } }; + yield return new object[] { "sv-SE", new string[] { "sön", "mån", "tis", "ons", "tors", "fre", "lör" } }; + yield return new object[] { "sw-CD", new string[] { "Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi" } }; + yield return new object[] { "ta-IN", new string[] { "ஞாயி.", "திங்.", "செவ்.", "புத.", "வியா.", "வெள்.", "சனி" } }; + yield return new object[] { "te-IN", new string[] { "ఆది", "సోమ", "మంగళ", "బుధ", "గురు", "శుక్ర", "శని" } }; + yield return new object[] { "th-TH", new string[] { "อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส." } }; + yield return new object[] { "tr-CY", new string[] { "Paz", "Pzt", "Sal", "Çar", "Per", "Cum", "Cmt" } }; + yield return new object[] { "uk-UA", new string[] { "нд", "пн", "вт", "ср", "чт", "пт", "сб" } }; + yield return new object[] { "vi-VN", new string[] { "CN", "Th 2", "Th 3", "Th 4", "Th 5", "Th 6", "Th 7" } }; + yield return new object[] { "zh-CN", new string[] { "周日", "周一", "周二", "周三", "周四", "周五", "周六" } }; } [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] [MemberData(nameof(AbbreviatedDayNames_Get_TestData_HybridGlobalization))] - public void AbbreviatedDayNames_Get_ReturnsExpected_HybridGlobalization(DateTimeFormatInfo format, string[] expected) + public void AbbreviatedDayNames_Get_ReturnsExpected_HybridGlobalization(string cultureName, string[] expected) { - Assert.Equal(expected, format.AbbreviatedDayNames); + var format = new CultureInfo(cultureName).DateTimeFormat; + int length = format.AbbreviatedDayNames.Length; + Assert.True(length == expected.Length, $"Length comparison failed for culture: {cultureName}. Expected: {expected.Length}, Actual: {length}"); + for (int i = 0; i AbbreviatedMonthGenitiveNames_Get_TestData_HybridGlobalization() { // see the comments on the right to check the non-Hybrid result, if it differs - yield return new object[] { new CultureInfo("ar-SA").DateTimeFormat, new string[] { "محرم", "صفر", "ربيع الأول", "ربيع الآخر", "جمادى الأولى", "جمادى الآخرة", "رجب", "شعبان", "رمضان", "شوال", "ذو القعدة", "ذو الحجة", "" } }; - yield return new object[] { new CultureInfo("am-ET").DateTimeFormat, new string[] { "ጃንዩ", "ፌብሩ", "ማርች", "ኤፕሪ", "ሜይ", "ጁን", "ጁላይ", "ኦገስ", "ሴፕቴ", "ኦክቶ", "ኖቬም", "ዲሴም", "" } }; - yield return new object[] { new CultureInfo("bg-BG").DateTimeFormat, new string[] { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "" } }; //"яну", "фев", "март", "апр", "май", "юни", "юли", "авг", "сеп", "окт", "ное", "дек", "" - yield return new object[] { new CultureInfo("bn-BD").DateTimeFormat, new string[] { "জানু", "ফেব", "মার্চ", "এপ্রি", "মে", "জুন", "জুল", "আগ", "সেপ", "অক্টো", "নভে", "ডিসে", "" } }; // "জানু", "ফেব", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর", "" - yield return new object[] { new CultureInfo("bn-IN").DateTimeFormat, new string[] { "জানু", "ফেব", "মার্চ", "এপ্রি", "মে", "জুন", "জুল", "আগ", "সেপ্টেঃ", "অক্টোঃ", "নভেঃ", "ডিসেঃ", "" } }; // "জানু", "ফেব", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর", "" - yield return new object[] { new CultureInfo("ca-AD").DateTimeFormat, new string[] { "gen.", "febr.", "març", "abr.", "maig", "juny", "jul.", "ag.", "set.", "oct.", "nov.", "des.", "" } }; // "de gen.", "de febr.", "de març", "d’abr.", "de maig", "de juny", "de jul.", "d’ag.", "de set.", "d’oct.", "de nov.", "de des.", "" - yield return new object[] { new CultureInfo("ca-ES").DateTimeFormat, new string[] { "gen.", "febr.", "març", "abr.", "maig", "juny", "jul.", "ag.", "set.", "oct.", "nov.", "des.", "" } }; - yield return new object[] { new CultureInfo("cs-CZ").DateTimeFormat, new string[] { "led", "úno", "bře", "dub", "kvě", "čvn", "čvc", "srp", "zář", "říj", "lis", "pro", "" } }; - yield return new object[] { new CultureInfo("da-DK").DateTimeFormat, new string[] { "jan.", "feb.", "mar.", "apr.", "maj", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("de-AT").DateTimeFormat, new string[] { "Jän.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Dez.", "" } }; - yield return new object[] { new CultureInfo("de-BE").DateTimeFormat, new string[] { "Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sept.", "Okt.", "Nov.", "Dez.", "" } }; - yield return new object[] { new CultureInfo("de-CH").DateTimeFormat, new string[] { "Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sept.", "Okt.", "Nov.", "Dez.", "" } }; - yield return new object[] { new CultureInfo("de-DE").DateTimeFormat, new string[] { "Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sept.", "Okt.", "Nov.", "Dez.", "" } }; - yield return new object[] { new CultureInfo("de-IT").DateTimeFormat, new string[] { "Jän.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Dez.", "" } }; - yield return new object[] { new CultureInfo("de-LI").DateTimeFormat, new string[] { "Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sept.", "Okt.", "Nov.", "Dez.", "" } }; - yield return new object[] { new CultureInfo("de-LU").DateTimeFormat, new string[] { "Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sept.", "Okt.", "Nov.", "Dez.", "" } }; - yield return new object[] { new CultureInfo("el-CY").DateTimeFormat, new string[] { "Ιαν", "Φεβ", "Μαρ", "Απρ", "Μαΐ", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ", "" } }; - yield return new object[] { new CultureInfo("el-GR").DateTimeFormat, new string[] { "Ιαν", "Φεβ", "Μαρ", "Απρ", "Μαΐ", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ", "" } }; - yield return new object[] { new CultureInfo("en-AE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-AG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-AI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-AS").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-AT").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-AU").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Jun", "Jul", .., "Sep" - yield return new object[] { new CultureInfo("en-BB").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-BE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-BI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-BM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-BS").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-BW").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-BZ").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-CA").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; // "Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec.", "" - yield return new object[] { new CultureInfo("en-CC").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-CH").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-CK").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-CM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-CX").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-CY").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-DE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-DK").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-DM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-ER").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-FI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-FJ").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-FK").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-FM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GB").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GD").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GH").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GU").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-GY").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-HK").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-IE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-IL").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-IM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-IN").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-IO").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-JE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-JM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-KE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-KI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-KN").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-KY").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-LC").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-LR").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-LS").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MH").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-MO").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MP").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-MS").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MT").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MU").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MW").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MY").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NA").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NF").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NL").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NR").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NU").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NZ").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-PG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-PH").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-PK").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-PN").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-PR").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-PW").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-RW").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SB").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SC").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SD").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SH").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SL").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SS").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SX").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SZ").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-TC").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-TK").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-TO").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-TT").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-TV").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-TZ").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-UG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-UM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-VC").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-VG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-VI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-VU").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-WS").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-ZA").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-ZM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-ZW").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("es-419").DateTimeFormat, new string[] { "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sept", "oct", "nov", "dic", "" } }; // "ene.", "feb.", "mar.", "abr.", "may.", "jun.", "jul.", "ago.", "sep.", "oct.", "nov.", "dic.", "" - yield return new object[] { new CultureInfo("es-ES").DateTimeFormat, new string[] { "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sept", "oct", "nov", "dic", "" } }; // "ene.", "feb.", "mar.", "abr.", "may.", "jun.", "jul.", "ago.", "sep.", "oct.", "nov.", "dic.", "" - yield return new object[] { new CultureInfo("es-MX").DateTimeFormat, new string[] { "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sept", "oct", "nov", "dic", "" } }; // "ene.", "feb.", "mar.", "abr.", "may.", "jun.", "jul.", "ago.", "sep.", "oct.", "nov.", "dic.", "" - yield return new object[] { new CultureInfo("et-EE").DateTimeFormat, new string[] { "jaan", "veebr", "märts", "apr", "mai", "juuni", "juuli", "aug", "sept", "okt", "nov", "dets", "" } }; - yield return new object[] { new CultureInfo("fa-IR").DateTimeFormat, new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" } }; - yield return new object[] { new CultureInfo("fi-FI").DateTimeFormat, new string[] { "tammik.", "helmik.", "maalisk.", "huhtik.", "toukok.", "kesäk.", "heinäk.", "elok.", "syysk.", "lokak.", "marrask.", "jouluk.", "" } }; - yield return new object[] { new CultureInfo("fil-PH").DateTimeFormat, new string[] { "Ene", "Peb", "Mar", "Abr", "May", "Hun", "Hul", "Ago", "Set", "Okt", "Nob", "Dis", "" } }; - yield return new object[] { new CultureInfo("fr-BE").DateTimeFormat, new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; - yield return new object[] { new CultureInfo("fr-CA").DateTimeFormat, new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juill.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; - yield return new object[] { new CultureInfo("fr-CH").DateTimeFormat, new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; - yield return new object[] { new CultureInfo("fr-FR").DateTimeFormat, new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; - yield return new object[] { new CultureInfo("gu-IN").DateTimeFormat, new string[] { "જાન્યુ", "ફેબ્રુ", "માર્ચ", "એપ્રિલ", "મે", "જૂન", "જુલાઈ", "ઑગસ્ટ", "સપ્ટે", "ઑક્ટો", "નવે", "ડિસે", "" } }; - yield return new object[] { new CultureInfo("he-IL").DateTimeFormat, new string[] { "ינו׳", "פבר׳", "מרץ", "אפר׳", "מאי", "יוני", "יולי", "אוג׳", "ספט׳", "אוק׳", "נוב׳", "דצמ׳", "" } }; - yield return new object[] { new CultureInfo("hi-IN").DateTimeFormat, new string[] { "जन॰", "फ़र॰", "मार्च", "अप्रैल", "मई", "जून", "जुल॰", "अग॰", "सित॰", "अक्तू॰", "नव॰", "दिस॰", "" } }; - yield return new object[] { new CultureInfo("hr-BA").DateTimeFormat, new string[] { "sij", "velj", "ožu", "tra", "svi", "lip", "srp", "kol", "ruj", "lis", "stu", "pro", "" } }; - yield return new object[] { new CultureInfo("hr-HR").DateTimeFormat, new string[] { "sij", "velj", "ožu", "tra", "svi", "lip", "srp", "kol", "ruj", "lis", "stu", "pro", "" } }; - yield return new object[] { new CultureInfo("hu-HU").DateTimeFormat, new string[] { "jan.", "febr.", "márc.", "ápr.", "máj.", "jún.", "júl.", "aug.", "szept.", "okt.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("id-ID").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des", "" } }; - yield return new object[] { new CultureInfo("it-CH").DateTimeFormat, new string[] { "gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic", "" } }; - yield return new object[] { new CultureInfo("it-IT").DateTimeFormat, new string[] { "gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic", "" } }; - yield return new object[] { new CultureInfo("ja-JP").DateTimeFormat, new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; - yield return new object[] { new CultureInfo("kn-IN").DateTimeFormat, new string[] { "ಜನವರಿ", "ಫೆಬ್ರವರಿ", "ಮಾರ್ಚ್", "ಏಪ್ರಿ", "ಮೇ", "ಜೂನ್", "ಜುಲೈ", "ಆಗಸ್ಟ್", "ಸೆಪ್ಟೆಂ", "ಅಕ್ಟೋ", "ನವೆಂ", "ಡಿಸೆಂ", "" } }; // "ಜನವರಿ", "ಫೆಬ್ರವರಿ", "ಮಾರ್ಚ್", "ಏಪ್ರಿ", "ಮೇ", "ಜೂನ್", "ಜುಲೈ", "ಆಗ", "ಸೆಪ್ಟೆಂ", "ಅಕ್ಟೋ", "ನವೆಂ", "ಡಿಸೆಂ", "" - yield return new object[] { new CultureInfo("ko-KR").DateTimeFormat, new string[] { "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월", "" } }; - yield return new object[] { new CultureInfo("lt-LT").DateTimeFormat, new string[] { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "" } }; // "saus.", "vas.", "kov.", "bal.", "geg.", "birž.", "liep.", "rugp.", "rugs.", "spal.", "lapkr.", "gruod." - yield return new object[] { new CultureInfo("lv-LV").DateTimeFormat, new string[] { "janv.", "febr.", "marts", "apr.", "maijs", "jūn.", "jūl.", "aug.", "sept.", "okt.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("ml-IN").DateTimeFormat, new string[] { "ജനു", "ഫെബ്രു", "മാർ", "ഏപ്രി", "മേയ്", "ജൂൺ", "ജൂലൈ", "ഓഗ", "സെപ്റ്റം", "ഒക്ടോ", "നവം", "ഡിസം", "" } }; - yield return new object[] { new CultureInfo("mr-IN").DateTimeFormat, new string[] { "जाने", "फेब्रु", "मार्च", "एप्रि", "मे", "जून", "जुलै", "ऑग", "सप्टें", "ऑक्टो", "नोव्हें", "डिसें", "" } }; - yield return new object[] { new CultureInfo("ms-BN").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis", "" } }; - yield return new object[] { new CultureInfo("ms-MY").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis", "" } }; - yield return new object[] { new CultureInfo("ms-SG").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis", "" } }; - string[] norwegianMonths = new string [] { "jan.", "feb.", "mars", "apr.", "mai", "juni", "juli", "aug.", "sep.", "okt.", "nov.", "des.", "" }; // "jan.", "feb.", "mar.", "apr.", "mai", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "des.", " - yield return new object[] { new CultureInfo("nb-NO").DateTimeFormat, norwegianMonths }; - yield return new object[] { new CultureInfo("no-NO").DateTimeFormat, norwegianMonths }; - string[] dutchMonths = new string[] { "jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec", "" }; // "jan.", "feb.", "mrt.", "apr.", "mei", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec.", "" - yield return new object[] { new CultureInfo("nl-AW").DateTimeFormat, dutchMonths }; - yield return new object[] { new CultureInfo("nl-BE").DateTimeFormat, dutchMonths }; - yield return new object[] { new CultureInfo("nl-NL").DateTimeFormat, dutchMonths }; - yield return new object[] { new CultureInfo("pl-PL").DateTimeFormat, new string[] { "sty", "lut", "mar", "kwi", "maj", "cze", "lip", "sie", "wrz", "paź", "lis", "gru", "" } }; - yield return new object[] { new CultureInfo("pt-BR").DateTimeFormat, new string[] { "jan.", "fev.", "mar.", "abr.", "mai.", "jun.", "jul.", "ago.", "set.", "out.", "nov.", "dez.", "" } }; - yield return new object[] { new CultureInfo("pt-PT").DateTimeFormat, new string[] { "jan.", "fev.", "mar.", "abr.", "mai.", "jun.", "jul.", "ago.", "set.", "out.", "nov.", "dez.", "" } }; - yield return new object[] { new CultureInfo("ro-RO").DateTimeFormat, new string[] { "ian.", "feb.", "mar.", "apr.", "mai", "iun.", "iul.", "aug.", "sept.", "oct.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("ru-RU").DateTimeFormat, new string[] { "янв.", "февр.", "мар.", "апр.", "мая", "июн.", "июл.", "авг.", "сент.", "окт.", "нояб.", "дек.", "" } }; - yield return new object[] { new CultureInfo("sk-SK").DateTimeFormat, new string[] { "jan", "feb", "mar", "apr", "máj", "jún", "júl", "aug", "sep", "okt", "nov", "dec", "" } }; - yield return new object[] { new CultureInfo("sl-SI").DateTimeFormat, new string[] { "jan.", "feb.", "mar.", "apr.", "maj", "jun.", "jul.", "avg.", "sep.", "okt.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("sr-Cyrl-RS").DateTimeFormat, new string[] { "јан", "феб", "мар", "апр", "мај", "јун", "јул", "авг", "сеп", "окт", "нов", "дец", "" } }; - yield return new object[] { new CultureInfo("sr-Latn-RS").DateTimeFormat, new string[] { "jan", "feb", "mar", "apr", "maj", "jun", "jul", "avg", "sep", "okt", "nov", "dec", "" } }; - yield return new object[] { new CultureInfo("sv-AX").DateTimeFormat, new string[] { "jan.", "feb.", "mars", "apr.", "maj", "juni", "juli", "aug.", "sep.", "okt.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("sv-SE").DateTimeFormat, new string[] { "jan.", "feb.", "mars", "apr.", "maj", "juni", "juli", "aug.", "sep.", "okt.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("sw-CD").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; - yield return new object[] { new CultureInfo("sw-KE").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; - yield return new object[] { new CultureInfo("sw-TZ").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; - yield return new object[] { new CultureInfo("sw-UG").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; - yield return new object[] { new CultureInfo("ta-IN").DateTimeFormat, new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; - yield return new object[] { new CultureInfo("ta-LK").DateTimeFormat, new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; - yield return new object[] { new CultureInfo("ta-MY").DateTimeFormat, new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; - yield return new object[] { new CultureInfo("ta-SG").DateTimeFormat, new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; - yield return new object[] { new CultureInfo("te-IN").DateTimeFormat, new string[] { "జన", "ఫిబ్ర", "మార్చి", "ఏప్రి", "మే", "జూన్", "జులై", "ఆగ", "సెప్టెం", "అక్టో", "నవం", "డిసెం", "" } }; - yield return new object[] { new CultureInfo("th-TH").DateTimeFormat, new string[] { "ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค.", "" } }; - yield return new object[] { new CultureInfo("tr-CY").DateTimeFormat, new string[] { "Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara", "" } }; - yield return new object[] { new CultureInfo("tr-TR").DateTimeFormat, new string[] { "Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara", "" } }; - yield return new object[] { new CultureInfo("uk-UA").DateTimeFormat, new string[] { "січ.", "лют.", "бер.", "квіт.", "трав.", "черв.", "лип.", "серп.", "вер.", "жовт.", "лист.", "груд.", "" } }; - yield return new object[] { new CultureInfo("vi-VN").DateTimeFormat, new string[] { "Thg 1", "Thg 2", "Thg 3", "Thg 4", "Thg 5", "Thg 6", "Thg 7", "Thg 8", "Thg 9", "Thg 10", "Thg 11", "Thg 12", "" } }; // thg - yield return new object[] { new CultureInfo("zh-CN").DateTimeFormat, new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; - yield return new object[] { new CultureInfo("zh-Hans-HK").DateTimeFormat, new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; - yield return new object[] { new CultureInfo("zh-SG").DateTimeFormat, new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; - yield return new object[] { new CultureInfo("zh-HK").DateTimeFormat, new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; - yield return new object[] { new CultureInfo("zh-TW").DateTimeFormat, new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; + yield return new object[] { "ar-SA", new string[] { "محرم", "صفر", "ربيع الأول", "ربيع الآخر", "جمادى الأولى", "جمادى الآخرة", "رجب", "شعبان", "رمضان", "شوال", "ذو القعدة", "ذو الحجة", "" } }; + yield return new object[] { "am-ET", new string[] { "ጃንዩ", "ፌብሩ", "ማርች", "ኤፕሪ", "ሜይ", "ጁን", "ጁላይ", "ኦገስ", "ሴፕቴ", "ኦክቶ", "ኖቬም", "ዲሴም", "" } }; + yield return new object[] { "bg-BG", new string[] { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "" } }; //"яну", "фев", "март", "апр", "май", "юни", "юли", "авг", "сеп", "окт", "ное", "дек", "" + var banglaMonths = PlatformDetection.IsNodeJSOnWindows ? + new string[] { "জানু", "ফেব", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর", "" } : // same as ICU + new string[] { "জানু", "ফেব", "মার্চ", "এপ্রি", "মে", "জুন", "জুল", "আগ", "সেপ", "অক্টো", "নভে", "ডিসে", "" }; + yield return new object[] { "bn-BD", banglaMonths }; + var bengaliMonths = PlatformDetection.IsNodeJSOnWindows ? + new string[] { "জানু", "ফেব", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর", "" } : // same as ICU + new string[] { "জানু", "ফেব", "মার্চ", "এপ্রি", "মে", "জুন", "জুল", "আগ", "সেপ্টেঃ", "অক্টোঃ", "নভেঃ", "ডিসেঃ", "" }; + yield return new object[] { "bn-IN", bengaliMonths }; // "জানু", "ফেব", "মার্চ", "এপ্রি", "মে", "জুন", "জুল", "আগ", "সেপ্টেঃ", "অক্টোঃ", "নভেঃ", "ডিসেঃ", "" } }; // "জানু", "ফেব", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর", "" + yield return new object[] { "ca-AD", new string[] { "gen.", "febr.", "març", "abr.", "maig", "juny", "jul.", "ag.", "set.", "oct.", "nov.", "des.", "" } }; // "de gen.", "de febr.", "de març", "d’abr.", "de maig", "de juny", "de jul.", "d’ag.", "de set.", "d’oct.", "de nov.", "de des.", "" + yield return new object[] { "ca-ES", new string[] { "gen.", "febr.", "març", "abr.", "maig", "juny", "jul.", "ag.", "set.", "oct.", "nov.", "des.", "" } }; + yield return new object[] { "cs-CZ", new string[] { "led", "úno", "bře", "dub", "kvě", "čvn", "čvc", "srp", "zář", "říj", "lis", "pro", "" } }; + yield return new object[] { "da-DK", new string[] { "jan.", "feb.", "mar.", "apr.", "maj", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec.", "" } }; + yield return new object[] { "de-AT", new string[] { "Jän.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Dez.", "" } }; + yield return new object[] { "de-BE", new string[] { "Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sept.", "Okt.", "Nov.", "Dez.", "" } }; + yield return new object[] { "de-CH", new string[] { "Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sept.", "Okt.", "Nov.", "Dez.", "" } }; + yield return new object[] { "de-DE", new string[] { "Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sept.", "Okt.", "Nov.", "Dez.", "" } }; + yield return new object[] { "de-IT", new string[] { "Jän.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Dez.", "" } }; + yield return new object[] { "de-LI", new string[] { "Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sept.", "Okt.", "Nov.", "Dez.", "" } }; + yield return new object[] { "de-LU", new string[] { "Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sept.", "Okt.", "Nov.", "Dez.", "" } }; + yield return new object[] { "el-CY", new string[] { "Ιαν", "Φεβ", "Μαρ", "Απρ", "Μαΐ", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ", "" } }; + yield return new object[] { "el-GR", new string[] { "Ιαν", "Φεβ", "Μαρ", "Απρ", "Μαΐ", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ", "" } }; + yield return new object[] { "en-AE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-AG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-AI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-AS", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-AT", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-AU", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Jun", "Jul", .., "Sep" + yield return new object[] { "en-BB", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-BE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-BI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-BM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-BS", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-BW", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-BZ", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + var canadianMonths = PlatformDetection.IsNodeJSOnWindows ? + new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } : + new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" }; + yield return new object[] { "en-CA", canadianMonths }; // "Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec.", "" + yield return new object[] { "en-CC", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-CH", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-CK", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-CM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-CX", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-CY", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-DE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-DK", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-DM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-ER", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-FI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-FJ", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-FK", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-FM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GB", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GD", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GH", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GU", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-GY", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-HK", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-IE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-IL", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-IM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-IN", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-IO", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-JE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-JM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-KE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-KI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-KN", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-KY", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-LC", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-LR", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-LS", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MH", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-MO", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MP", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-MS", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MT", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MU", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MW", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MY", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NA", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NF", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NL", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NR", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NU", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NZ", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-PG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-PH", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-PK", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-PN", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-PR", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-PW", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-RW", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SB", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SC", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SD", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SH", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SL", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SS", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SX", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SZ", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-TC", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-TK", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-TO", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-TT", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-TV", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-TZ", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-UG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-UM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-US", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-VC", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-VG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-VI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-VU", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-WS", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-ZA", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-ZM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-ZW", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "es-419", new string[] { "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sept", "oct", "nov", "dic", "" } }; // "ene.", "feb.", "mar.", "abr.", "may.", "jun.", "jul.", "ago.", "sep.", "oct.", "nov.", "dic.", "" + yield return new object[] { "es-ES", new string[] { "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sept", "oct", "nov", "dic", "" } }; // "ene.", "feb.", "mar.", "abr.", "may.", "jun.", "jul.", "ago.", "sep.", "oct.", "nov.", "dic.", "" + yield return new object[] { "es-MX", new string[] { "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sept", "oct", "nov", "dic", "" } }; // "ene.", "feb.", "mar.", "abr.", "may.", "jun.", "jul.", "ago.", "sep.", "oct.", "nov.", "dic.", "" + yield return new object[] { "et-EE", new string[] { "jaan", "veebr", "märts", "apr", "mai", "juuni", "juuli", "aug", "sept", "okt", "nov", "dets", "" } }; + yield return new object[] { "fa-IR", new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" } }; + yield return new object[] { "fi-FI", new string[] { "tammik.", "helmik.", "maalisk.", "huhtik.", "toukok.", "kesäk.", "heinäk.", "elok.", "syysk.", "lokak.", "marrask.", "jouluk.", "" } }; + yield return new object[] { "fil-PH", new string[] { "Ene", "Peb", "Mar", "Abr", "May", "Hun", "Hul", "Ago", "Set", "Okt", "Nob", "Dis", "" } }; + yield return new object[] { "fr-BE", new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; + yield return new object[] { "fr-CA", new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juill.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; + yield return new object[] { "fr-CH", new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; + yield return new object[] { "fr-FR", new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; + yield return new object[] { "gu-IN", new string[] { "જાન્યુ", "ફેબ્રુ", "માર્ચ", "એપ્રિલ", "મે", "જૂન", "જુલાઈ", "ઑગસ્ટ", "સપ્ટે", "ઑક્ટો", "નવે", "ડિસે", "" } }; + yield return new object[] { "he-IL", new string[] { "ינו׳", "פבר׳", "מרץ", "אפר׳", "מאי", "יוני", "יולי", "אוג׳", "ספט׳", "אוק׳", "נוב׳", "דצמ׳", "" } }; + yield return new object[] { "hi-IN", new string[] { "जन॰", "फ़र॰", "मार्च", "अप्रैल", "मई", "जून", "जुल॰", "अग॰", "सित॰", "अक्तू॰", "नव॰", "दिस॰", "" } }; + yield return new object[] { "hr-BA", new string[] { "sij", "velj", "ožu", "tra", "svi", "lip", "srp", "kol", "ruj", "lis", "stu", "pro", "" } }; + yield return new object[] { "hr-HR", new string[] { "sij", "velj", "ožu", "tra", "svi", "lip", "srp", "kol", "ruj", "lis", "stu", "pro", "" } }; + yield return new object[] { "hu-HU", new string[] { "jan.", "febr.", "márc.", "ápr.", "máj.", "jún.", "júl.", "aug.", "szept.", "okt.", "nov.", "dec.", "" } }; + yield return new object[] { "id-ID", new string[] { "Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des", "" } }; + yield return new object[] { "it-CH", new string[] { "gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic", "" } }; + yield return new object[] { "it-IT", new string[] { "gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic", "" } }; + yield return new object[] { "ja-JP", new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; + var kannadaMonths = PlatformDetection.IsNodeJSOnWindows ? + new string[] { "ಜನವರಿ", "ಫೆಬ್ರವರಿ", "ಮಾರ್ಚ್", "ಏಪ್ರಿ", "ಮೇ", "ಜೂನ್", "ಜುಲೈ", "ಆಗ", "ಸೆಪ್ಟೆಂ", "ಅಕ್ಟೋ", "ನವೆಂ", "ಡಿಸೆಂ", "" } : // same as ICU + new string[] { "ಜನವರಿ", "ಫೆಬ್ರವರಿ", "ಮಾರ್ಚ್", "ಏಪ್ರಿ", "ಮೇ", "ಜೂನ್", "ಜುಲೈ", "ಆಗಸ್ಟ್", "ಸೆಪ್ಟೆಂ", "ಅಕ್ಟೋ", "ನವೆಂ", "ಡಿಸೆಂ", "" }; + yield return new object[] { "kn-IN", kannadaMonths }; + yield return new object[] { "ko-KR", new string[] { "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월", "" } }; + yield return new object[] { "lt-LT", new string[] { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "" } }; // "saus.", "vas.", "kov.", "bal.", "geg.", "birž.", "liep.", "rugp.", "rugs.", "spal.", "lapkr.", "gruod." + yield return new object[] { "lv-LV", new string[] { "janv.", "febr.", "marts", "apr.", "maijs", "jūn.", "jūl.", "aug.", "sept.", "okt.", "nov.", "dec.", "" } }; + yield return new object[] { "ml-IN", new string[] { "ജനു", "ഫെബ്രു", "മാർ", "ഏപ്രി", "മേയ്", "ജൂൺ", "ജൂലൈ", "ഓഗ", "സെപ്റ്റം", "ഒക്ടോ", "നവം", "ഡിസം", "" } }; + yield return new object[] { "mr-IN", new string[] { "जाने", "फेब्रु", "मार्च", "एप्रि", "मे", "जून", "जुलै", "ऑग", "सप्टें", "ऑक्टो", "नोव्हें", "डिसें", "" } }; + yield return new object[] { "ms-BN", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis", "" } }; + yield return new object[] { "ms-MY", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis", "" } }; + yield return new object[] { "ms-SG", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis", "" } }; + string[] norwegianMonths = PlatformDetection.IsNodeJSOnWindows ? + new string [] { "jan.", "feb.", "mar.", "apr.", "mai", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "des.", "" } : // same as ICU + new string [] { "jan.", "feb.", "mars", "apr.", "mai", "juni", "juli", "aug.", "sep.", "okt.", "nov.", "des.", "" }; + yield return new object[] { "nb-NO", norwegianMonths }; + yield return new object[] { "no-NO", norwegianMonths }; + string[] dutchMonths = PlatformDetection.IsNodeJSOnWindows ? + new string[] { "jan.", "feb.", "mrt.", "apr.", "mei", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec.", "" } : // same as ICU + new string[] { "jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec", "" }; + yield return new object[] { "nl-AW", dutchMonths }; + yield return new object[] { "nl-BE", dutchMonths }; + yield return new object[] { "nl-NL", dutchMonths }; + yield return new object[] { "pl-PL", new string[] { "sty", "lut", "mar", "kwi", "maj", "cze", "lip", "sie", "wrz", "paź", "lis", "gru", "" } }; + yield return new object[] { "pt-BR", new string[] { "jan.", "fev.", "mar.", "abr.", "mai.", "jun.", "jul.", "ago.", "set.", "out.", "nov.", "dez.", "" } }; + yield return new object[] { "pt-PT", new string[] { "jan.", "fev.", "mar.", "abr.", "mai.", "jun.", "jul.", "ago.", "set.", "out.", "nov.", "dez.", "" } }; + yield return new object[] { "ro-RO", new string[] { "ian.", "feb.", "mar.", "apr.", "mai", "iun.", "iul.", "aug.", "sept.", "oct.", "nov.", "dec.", "" } }; + yield return new object[] { "ru-RU", new string[] { "янв.", "февр.", "мар.", "апр.", "мая", "июн.", "июл.", "авг.", "сент.", "окт.", "нояб.", "дек.", "" } }; + yield return new object[] { "sk-SK", new string[] { "jan", "feb", "mar", "apr", "máj", "jún", "júl", "aug", "sep", "okt", "nov", "dec", "" } }; + yield return new object[] { "sl-SI", new string[] { "jan.", "feb.", "mar.", "apr.", "maj", "jun.", "jul.", "avg.", "sep.", "okt.", "nov.", "dec.", "" } }; + yield return new object[] { "sr-Cyrl-RS", new string[] { "јан", "феб", "мар", "апр", "мај", "јун", "јул", "авг", "сеп", "окт", "нов", "дец", "" } }; + yield return new object[] { "sr-Latn-RS", new string[] { "jan", "feb", "mar", "apr", "maj", "jun", "jul", "avg", "sep", "okt", "nov", "dec", "" } }; + yield return new object[] { "sv-AX", new string[] { "jan.", "feb.", "mars", "apr.", "maj", "juni", "juli", "aug.", "sep.", "okt.", "nov.", "dec.", "" } }; + yield return new object[] { "sv-SE", new string[] { "jan.", "feb.", "mars", "apr.", "maj", "juni", "juli", "aug.", "sep.", "okt.", "nov.", "dec.", "" } }; + yield return new object[] { "sw-CD", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; + yield return new object[] { "sw-KE", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; + yield return new object[] { "sw-TZ", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; + yield return new object[] { "sw-UG", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; + yield return new object[] { "ta-IN", new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; + yield return new object[] { "ta-LK", new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; + yield return new object[] { "ta-MY", new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; + yield return new object[] { "ta-SG", new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; + yield return new object[] { "te-IN", new string[] { "జన", "ఫిబ్ర", "మార్చి", "ఏప్రి", "మే", "జూన్", "జులై", "ఆగ", "సెప్టెం", "అక్టో", "నవం", "డిసెం", "" } }; + yield return new object[] { "th-TH", new string[] { "ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค.", "" } }; + yield return new object[] { "tr-CY", new string[] { "Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara", "" } }; + yield return new object[] { "tr-TR", new string[] { "Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara", "" } }; + yield return new object[] { "uk-UA", new string[] { "січ.", "лют.", "бер.", "квіт.", "трав.", "черв.", "лип.", "серп.", "вер.", "жовт.", "лист.", "груд.", "" } }; + yield return new object[] { "vi-VN", new string[] { "Thg 1", "Thg 2", "Thg 3", "Thg 4", "Thg 5", "Thg 6", "Thg 7", "Thg 8", "Thg 9", "Thg 10", "Thg 11", "Thg 12", "" } }; // thg + yield return new object[] { "zh-CN", new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; + yield return new object[] { "zh-Hans-HK", new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; + yield return new object[] { "zh-SG", new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; + yield return new object[] { "zh-HK", new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; + yield return new object[] { "zh-TW", new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; } [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] [MemberData(nameof(AbbreviatedMonthGenitiveNames_Get_TestData_HybridGlobalization))] - public void AbbreviatedMonthGenitiveNames_Get_ReturnsExpected_HybridGlobalization(DateTimeFormatInfo format, string[] expected) + public void AbbreviatedMonthGenitiveNames_Get_ReturnsExpected_HybridGlobalization(string cultureName, string[] expected) { - Assert.Equal(expected, format.AbbreviatedMonthGenitiveNames); + var format = new CultureInfo(cultureName).DateTimeFormat; + int length = format.AbbreviatedMonthGenitiveNames.Length; + Assert.True(length == expected.Length, $"Length comparison failed for culture: {cultureName}. Expected: {expected.Length}, Actual: {length}"); + for (int i = 0; i AbbreviatedMonthNames_Set_TestData() public static IEnumerable AbbreviatedMonthNames_Get_TestData_HybridGlobalization() { // see the comments on the right to check the non-Hybrid result, if it differs - yield return new object[] { new CultureInfo("ar-SA").DateTimeFormat, new string[] { "محرم", "صفر", "ربيع الأول", "ربيع الآخر", "جمادى الأولى", "جمادى الآخرة", "رجب", "شعبان", "رمضان", "شوال", "ذو القعدة", "ذو الحجة", "" } }; - yield return new object[] { new CultureInfo("am-ET").DateTimeFormat, new string[] { "ጃንዩ", "ፌብሩ", "ማርች", "ኤፕሪ", "ሜይ", "ጁን", "ጁላይ", "ኦገስ", "ሴፕቴ", "ኦክቶ", "ኖቬም", "ዲሴም", "" } }; - yield return new object[] { new CultureInfo("bg-BG").DateTimeFormat, new string[] { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "" } }; // "яну", "фев", "март", "апр", "май", "юни", "юли", "авг", "сеп", "окт", "ное", "дек", "" - yield return new object[] { new CultureInfo("bn-BD").DateTimeFormat, new string[] { "জানু", "ফেব", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর", "" } }; // "জানুয়ারী", "ফেব্রুয়ারী", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর", "" - yield return new object[] { new CultureInfo("bn-IN").DateTimeFormat, new string[] { "জানু", "ফেব", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেঃ", "অক্টোঃ", "নভেঃ", "ডিসেঃ", "" } }; // BUG. JS returns Genitive even though we expect Nominative; "জানু", "ফেব", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর", "" - yield return new object[] { new CultureInfo("ca-AD").DateTimeFormat, new string[] { "gen.", "febr.", "març", "abr.", "maig", "juny", "jul.", "ag.", "set.", "oct.", "nov.", "des.", "" } }; - yield return new object[] { new CultureInfo("ca-ES").DateTimeFormat, new string[] { "gen.", "febr.", "març", "abr.", "maig", "juny", "jul.", "ag.", "set.", "oct.", "nov.", "des.", "" } }; - yield return new object[] { new CultureInfo("cs-CZ").DateTimeFormat, new string[] { "led", "úno", "bře", "dub", "kvě", "čvn", "čvc", "srp", "zář", "říj", "lis", "pro", "" } }; - yield return new object[] { new CultureInfo("da-DK").DateTimeFormat, new string[] { "jan.", "feb.", "mar.", "apr.", "maj", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("de-AT").DateTimeFormat, new string[] { "Jän", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; - yield return new object[] { new CultureInfo("de-BE").DateTimeFormat, new string[] { "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; - yield return new object[] { new CultureInfo("de-CH").DateTimeFormat, new string[] { "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; - yield return new object[] { new CultureInfo("de-DE").DateTimeFormat, new string[] { "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; - yield return new object[] { new CultureInfo("de-IT").DateTimeFormat, new string[] { "Jän", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; - yield return new object[] { new CultureInfo("de-LI").DateTimeFormat, new string[] { "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; - yield return new object[] { new CultureInfo("de-LU").DateTimeFormat, new string[] { "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; - yield return new object[] { new CultureInfo("el-CY").DateTimeFormat, new string[] { "Ιαν", "Φεβ", "Μαρ", "Απρ", "Μαΐ", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ", "" } }; // BUG. JS returns Genitive for Greek even though we expect Nominative; "Ιαν", "Φεβ", "Μάρ", "Απρ", "Μάι", "Ιούν", "Ιούλ", "Αύγ", "Σεπ", "Οκτ", "Νοέ", "Δεκ", "" - yield return new object[] { new CultureInfo("el-GR").DateTimeFormat, new string[] { "Ιαν", "Φεβ", "Μαρ", "Απρ", "Μαΐ", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ", "" } }; // BUG. - yield return new object[] { new CultureInfo("en-AE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-AG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-AI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-AS").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-AT").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-AU").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-BB").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-BE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-BI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-BM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-BS").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-BW").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-BZ").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-CA").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; // "Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec.", "" - yield return new object[] { new CultureInfo("en-CC").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-CH").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-CK").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-CM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-CX").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-CY").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-DE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-DK").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-DM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-ER").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-FI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-FJ").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-FK").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-FM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GB").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GD").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GH").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-GU").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-GY").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-HK").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-IE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-IL").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-IM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-IN").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-IO").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-JE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-JM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-KE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-KI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-KN").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-KY").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-LC").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-LR").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-LS").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MH").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-MO").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MP").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-MS").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MT").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MU").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MW").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-MY").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NA").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NF").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NL").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NR").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NU").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-NZ").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-PG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-PH").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-PK").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-PN").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-PR").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-PW").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-RW").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SB").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SC").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SD").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SE").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SH").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SL").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SS").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SX").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-SZ").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-TC").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-TK").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-TO").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-TT").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-TV").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-TZ").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-UG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-UM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-VC").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-VG").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-VI").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; - yield return new object[] { new CultureInfo("en-VU").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-WS").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-ZA").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-ZM").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("en-ZW").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" - yield return new object[] { new CultureInfo("es-419").DateTimeFormat, new string[] { "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sept", "oct", "nov", "dic", "" } }; // "ene.", "feb.", "mar.", "abr.", "may.", "jun.", "jul.", "ago.", "sep.", "oct.", "nov.", "dic.", "" - yield return new object[] { new CultureInfo("es-ES").DateTimeFormat, new string[] { "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sept", "oct", "nov", "dic", "" } }; // "ene.", "feb.", "mar.", "abr.", "may.", "jun.", "jul.", "ago.", "sep.", "oct.", "nov.", "dic.", "" - yield return new object[] { new CultureInfo("es-MX").DateTimeFormat, new string[] { "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sept", "oct", "nov", "dic", "" } }; // "ene.", "feb.", "mar.", "abr.", "may.", "jun.", "jul.", "ago.", "sep.", "oct.", "nov.", "dic.", "" - yield return new object[] { new CultureInfo("et-EE").DateTimeFormat, new string[] { "jaanuar", "veebruar", "märts", "aprill", "mai", "juuni", "juuli", "august", "september", "oktoober", "november", "detsember", "" } }; // "jaan", "veebr", "märts", "apr", "mai", "juuni", "juuli", "aug", "sept", "okt", "nov", "dets", "" - yield return new object[] { new CultureInfo("fa-IR").DateTimeFormat, new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" } }; - yield return new object[] { new CultureInfo("fi-FI").DateTimeFormat, new string[] { "tammi", "helmi", "maalis", "huhti", "touko", "kesä", "heinä", "elo", "syys", "loka", "marras", "joulu", "" } }; - yield return new object[] { new CultureInfo("fil-PH").DateTimeFormat, new string[] { "Ene", "Peb", "Mar", "Abr", "May", "Hun", "Hul", "Ago", "Set", "Okt", "Nob", "Dis", "" } }; - yield return new object[] { new CultureInfo("fr-BE").DateTimeFormat, new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; - yield return new object[] { new CultureInfo("fr-CA").DateTimeFormat, new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juill.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; - yield return new object[] { new CultureInfo("fr-CH").DateTimeFormat, new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; - yield return new object[] { new CultureInfo("fr-FR").DateTimeFormat, new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; - yield return new object[] { new CultureInfo("gu-IN").DateTimeFormat, new string[] { "જાન્યુ", "ફેબ્રુ", "માર્ચ", "એપ્રિલ", "મે", "જૂન", "જુલાઈ", "ઑગસ્ટ", "સપ્ટે", "ઑક્ટો", "નવે", "ડિસે", "" } }; - yield return new object[] { new CultureInfo("he-IL").DateTimeFormat, new string[] { "ינו׳", "פבר׳", "מרץ", "אפר׳", "מאי", "יוני", "יולי", "אוג׳", "ספט׳", "אוק׳", "נוב׳", "דצמ׳", "" } }; - yield return new object[] { new CultureInfo("hi-IN").DateTimeFormat, new string[] { "जन॰", "फ़र॰", "मार्च", "अप्रैल", "मई", "जून", "जुल॰", "अग॰", "सित॰", "अक्तू॰", "नव॰", "दिस॰", "" } }; - yield return new object[] { new CultureInfo("hr-BA").DateTimeFormat, new string[] { "sij", "velj", "ožu", "tra", "svi", "lip", "srp", "kol", "ruj", "lis", "stu", "pro", "" } }; - yield return new object[] { new CultureInfo("hr-HR").DateTimeFormat, new string[] { "sij", "velj", "ožu", "tra", "svi", "lip", "srp", "kol", "ruj", "lis", "stu", "pro", "" } }; - yield return new object[] { new CultureInfo("hu-HU").DateTimeFormat, new string[] { "jan.", "febr.", "márc.", "ápr.", "máj.", "jún.", "júl.", "aug.", "szept.", "okt.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("id-ID").DateTimeFormat, new string[] { "Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des", "" } }; - yield return new object[] { new CultureInfo("it-CH").DateTimeFormat, new string[] { "gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic", "" } }; - yield return new object[] { new CultureInfo("it-IT").DateTimeFormat, new string[] { "gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic", "" } }; - yield return new object[] { new CultureInfo("ja-JP").DateTimeFormat, new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; - yield return new object[] { new CultureInfo("kn-IN").DateTimeFormat, new string[] { "ಜನ", "ಫೆಬ್ರ", "ಮಾರ್ಚ್", "ಏಪ್ರಿ", "ಮೇ", "ಜೂನ್", "ಜುಲೈ", "ಆಗ", "ಸೆಪ್ಟೆಂ", "ಅಕ್ಟೋ", "ನವೆಂ", "ಡಿಸೆಂ", "" } }; - yield return new object[] { new CultureInfo("ko-KR").DateTimeFormat, new string[] { "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월", "" } }; - yield return new object[] { new CultureInfo("lt-LT").DateTimeFormat, new string[] { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "" } }; // "saus.", "vas.", "kov.", "bal.", "geg.", "birž.", "liep.", "rugp.", "rugs.", "spal.", "lapkr.", "gruod." - yield return new object[] { new CultureInfo("lv-LV").DateTimeFormat, new string[] { "janv.", "febr.", "marts", "apr.", "maijs", "jūn.", "jūl.", "aug.", "sept.", "okt.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("ml-IN").DateTimeFormat, new string[] { "ജനു", "ഫെബ്രു", "മാർ", "ഏപ്രി", "മേയ്", "ജൂൺ", "ജൂലൈ", "ഓഗ", "സെപ്റ്റം", "ഒക്ടോ", "നവം", "ഡിസം", "" } }; - yield return new object[] { new CultureInfo("mr-IN").DateTimeFormat, new string[] { "जाने", "फेब्रु", "मार्च", "एप्रि", "मे", "जून", "जुलै", "ऑग", "सप्टें", "ऑक्टो", "नोव्हें", "डिसें", "" } }; - yield return new object[] { new CultureInfo("ms-BN").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis", "" } }; - yield return new object[] { new CultureInfo("ms-MY").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis", "" } }; - yield return new object[] { new CultureInfo("ms-SG").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis", "" } }; - yield return new object[] { new CultureInfo("nb-NO").DateTimeFormat, new string[] { "jan", "feb", "mar", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "des", "" } }; - yield return new object[] { new CultureInfo("no").DateTimeFormat, new string[] { "jan", "feb", "mar", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "des", "" } }; - yield return new object[] { new CultureInfo("no-NO").DateTimeFormat, new string[] { "jan", "feb", "mar", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "des", "" } }; - yield return new object[] { new CultureInfo("nl-AW").DateTimeFormat, new string[] { "jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec", "" } }; // "jan.", "feb.", "mrt.", "apr.", "mei", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec.", "" - yield return new object[] { new CultureInfo("nl-BE").DateTimeFormat, new string[] { "jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec", "" } }; // "jan.", "feb.", "mrt.", "apr.", "mei", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec.", "" - yield return new object[] { new CultureInfo("nl-NL").DateTimeFormat, new string[] { "jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec", "" } }; // "jan.", "feb.", "mrt.", "apr.", "mei", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec.", "" - yield return new object[] { new CultureInfo("pl-PL").DateTimeFormat, new string[] { "sty", "lut", "mar", "kwi", "maj", "cze", "lip", "sie", "wrz", "paź", "lis", "gru", "" } }; - yield return new object[] { new CultureInfo("pt-BR").DateTimeFormat, new string[] { "jan.", "fev.", "mar.", "abr.", "mai.", "jun.", "jul.", "ago.", "set.", "out.", "nov.", "dez.", "" } }; - yield return new object[] { new CultureInfo("pt-PT").DateTimeFormat, new string[] { "jan.", "fev.", "mar.", "abr.", "mai.", "jun.", "jul.", "ago.", "set.", "out.", "nov.", "dez.", "" } }; - yield return new object[] { new CultureInfo("ro-RO").DateTimeFormat, new string[] { "ian.", "feb.", "mar.", "apr.", "mai", "iun.", "iul.", "aug.", "sept.", "oct.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("ru-RU").DateTimeFormat, new string[] { "янв.", "февр.", "март", "апр.", "май", "июнь", "июль", "авг.", "сент.", "окт.", "нояб.", "дек.", "" } }; - yield return new object[] { new CultureInfo("sk-SK").DateTimeFormat, new string[] { "jan", "feb", "mar", "apr", "máj", "jún", "júl", "aug", "sep", "okt", "nov", "dec", "" } }; - yield return new object[] { new CultureInfo("sl-SI").DateTimeFormat, new string[] { "jan.", "feb.", "mar.", "apr.", "maj", "jun.", "jul.", "avg.", "sep.", "okt.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("sr-Cyrl-RS").DateTimeFormat, new string[] { "јан", "феб", "мар", "апр", "мај", "јун", "јул", "авг", "сеп", "окт", "нов", "дец", "" } }; - yield return new object[] { new CultureInfo("sr-Latn-RS").DateTimeFormat, new string[] { "jan", "feb", "mar", "apr", "maj", "jun", "jul", "avg", "sep", "okt", "nov", "dec", "" } }; - yield return new object[] { new CultureInfo("sv-AX").DateTimeFormat, new string[] { "jan.", "feb.", "mars", "apr.", "maj", "juni", "juli", "aug.", "sep.", "okt.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("sv-SE").DateTimeFormat, new string[] { "jan.", "feb.", "mars", "apr.", "maj", "juni", "juli", "aug.", "sep.", "okt.", "nov.", "dec.", "" } }; - yield return new object[] { new CultureInfo("sw-CD").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; - yield return new object[] { new CultureInfo("sw-KE").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; - yield return new object[] { new CultureInfo("sw-TZ").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; - yield return new object[] { new CultureInfo("sw-UG").DateTimeFormat, new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; - yield return new object[] { new CultureInfo("ta-IN").DateTimeFormat, new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; - yield return new object[] { new CultureInfo("ta-LK").DateTimeFormat, new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; - yield return new object[] { new CultureInfo("ta-MY").DateTimeFormat, new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; - yield return new object[] { new CultureInfo("ta-SG").DateTimeFormat, new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; - yield return new object[] { new CultureInfo("te-IN").DateTimeFormat, new string[] { "జన", "ఫిబ్ర", "మార్చి", "ఏప్రి", "మే", "జూన్", "జులై", "ఆగ", "సెప్టెం", "అక్టో", "నవం", "డిసెం", "" } }; - yield return new object[] { new CultureInfo("th-TH").DateTimeFormat, new string[] { "ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค.", "" } }; - yield return new object[] { new CultureInfo("tr-CY").DateTimeFormat, new string[] { "Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara", "" } }; - yield return new object[] { new CultureInfo("tr-TR").DateTimeFormat, new string[] { "Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara", "" } }; - yield return new object[] { new CultureInfo("uk-UA").DateTimeFormat, new string[] { "січ", "лют", "бер", "кві", "тра", "чер", "лип", "сер", "вер", "жов", "лис", "гру", "" } }; - yield return new object[] { new CultureInfo("vi-VN").DateTimeFormat, new string[] { "Thg 1", "Thg 2", "Thg 3", "Thg 4", "Thg 5", "Thg 6", "Thg 7", "Thg 8", "Thg 9", "Thg 10", "Thg 11", "Thg 12", "" } }; - yield return new object[] { new CultureInfo("zh-CN").DateTimeFormat, new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; - yield return new object[] { new CultureInfo("zh-Hans-HK").DateTimeFormat, new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; - yield return new object[] { new CultureInfo("zh-SG").DateTimeFormat, new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; - yield return new object[] { new CultureInfo("zh-HK").DateTimeFormat, new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; - yield return new object[] { new CultureInfo("zh-TW").DateTimeFormat, new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; + yield return new object[] { "ar-SA", new string[] { "محرم", "صفر", "ربيع الأول", "ربيع الآخر", "جمادى الأولى", "جمادى الآخرة", "رجب", "شعبان", "رمضان", "شوال", "ذو القعدة", "ذو الحجة", "" } }; + yield return new object[] { "am-ET", new string[] { "ጃንዩ", "ፌብሩ", "ማርች", "ኤፕሪ", "ሜይ", "ጁን", "ጁላይ", "ኦገስ", "ሴፕቴ", "ኦክቶ", "ኖቬም", "ዲሴም", "" } }; + yield return new object[] { "bg-BG", new string[] { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "" } }; // "яну", "фев", "март", "апр", "май", "юни", "юли", "авг", "сеп", "окт", "ное", "дек", "" + var banglaMonths = PlatformDetection.IsNodeJSOnWindows ? + new string[] { "জানুয়ারী", "ফেব্রুয়ারী", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর", "" } : // same as ICU + new string[] { "জানু", "ফেব", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর", "" }; + yield return new object[] { "bn-BD", banglaMonths }; + var bengaliMonths = PlatformDetection.IsNodeJSOnWindows ? + new string[] { "জানুয়ারী", "ফেব্রুয়ারী", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর", "" } : // same as ICU + new string[] { "জানু", "ফেব", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেঃ", "অক্টোঃ", "নভেঃ", "ডিসেঃ", "" }; // BUG. this response is Genitive even though we expect Nominative; "জানু", "ফেব", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর", "" + yield return new object[] { "bn-IN", bengaliMonths }; + yield return new object[] { "ca-AD", new string[] { "gen.", "febr.", "març", "abr.", "maig", "juny", "jul.", "ag.", "set.", "oct.", "nov.", "des.", "" } }; + yield return new object[] { "ca-ES", new string[] { "gen.", "febr.", "març", "abr.", "maig", "juny", "jul.", "ag.", "set.", "oct.", "nov.", "des.", "" } }; + yield return new object[] { "cs-CZ", new string[] { "led", "úno", "bře", "dub", "kvě", "čvn", "čvc", "srp", "zář", "říj", "lis", "pro", "" } }; + yield return new object[] { "da-DK", new string[] { "jan.", "feb.", "mar.", "apr.", "maj", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec.", "" } }; + yield return new object[] { "de-AT", new string[] { "Jän", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; + yield return new object[] { "de-BE", new string[] { "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; + yield return new object[] { "de-CH", new string[] { "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; + yield return new object[] { "de-DE", new string[] { "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; + yield return new object[] { "de-IT", new string[] { "Jän", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; + yield return new object[] { "de-LI", new string[] { "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; + yield return new object[] { "de-LU", new string[] { "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "" } }; + yield return new object[] { "el-CY", new string[] { "Ιαν", "Φεβ", "Μαρ", "Απρ", "Μαΐ", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ", "" } }; // BUG. JS returns Genitive for Greek even though we expect Nominative; "Ιαν", "Φεβ", "Μάρ", "Απρ", "Μάι", "Ιούν", "Ιούλ", "Αύγ", "Σεπ", "Οκτ", "Νοέ", "Δεκ", "" + yield return new object[] { "el-GR", new string[] { "Ιαν", "Φεβ", "Μαρ", "Απρ", "Μαΐ", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ", "" } }; // BUG. + yield return new object[] { "en-AE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-AG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-AI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-AS", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-AT", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + var australianMonths = PlatformDetection.IsNodeJSOnWindows ? + new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } : + new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" }; // same as ICU + yield return new object[] { "en-AU", australianMonths }; + yield return new object[] { "en-BB", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-BE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-BI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-BM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-BS", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-BW", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-BZ", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + var canadianMonths = PlatformDetection.IsNodeJSOnWindows ? + new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } : + new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" }; + yield return new object[] { "en-CA", canadianMonths }; // "Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec.", "" + yield return new object[] { "en-CC", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-CH", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-CK", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-CM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-CX", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-CY", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-DE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-DK", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-DM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-ER", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-FI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-FJ", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-FK", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-FM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GB", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GD", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GH", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-GU", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-GY", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-HK", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-IE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-IL", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-IM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-IN", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-IO", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-JE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-JM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-KE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-KI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-KN", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-KY", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-LC", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-LR", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-LS", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MH", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-MO", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MP", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-MS", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MT", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MU", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MW", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-MY", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NA", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NF", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NL", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NR", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NU", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-NZ", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-PG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-PH", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-PK", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-PN", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-PR", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-PW", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-RW", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SB", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SC", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SD", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SE", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SH", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SL", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SS", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SX", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-SZ", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-TC", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-TK", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-TO", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-TT", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-TV", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-TZ", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-UG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-UM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-US", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-VC", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-VG", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-VI", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" } }; + yield return new object[] { "en-VU", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-WS", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-ZA", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-ZM", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "en-ZW", new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "" } }; // "Sep" + yield return new object[] { "es-419", new string[] { "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sept", "oct", "nov", "dic", "" } }; // "ene.", "feb.", "mar.", "abr.", "may.", "jun.", "jul.", "ago.", "sep.", "oct.", "nov.", "dic.", "" + yield return new object[] { "es-ES", new string[] { "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sept", "oct", "nov", "dic", "" } }; // "ene.", "feb.", "mar.", "abr.", "may.", "jun.", "jul.", "ago.", "sep.", "oct.", "nov.", "dic.", "" + yield return new object[] { "es-MX", new string[] { "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sept", "oct", "nov", "dic", "" } }; // "ene.", "feb.", "mar.", "abr.", "may.", "jun.", "jul.", "ago.", "sep.", "oct.", "nov.", "dic.", "" + yield return new object[] { "et-EE", new string[] { "jaanuar", "veebruar", "märts", "aprill", "mai", "juuni", "juuli", "august", "september", "oktoober", "november", "detsember", "" } }; // "jaan", "veebr", "märts", "apr", "mai", "juuni", "juuli", "aug", "sept", "okt", "nov", "dets", "" + yield return new object[] { "fa-IR", new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" } }; + yield return new object[] { "fi-FI", new string[] { "tammi", "helmi", "maalis", "huhti", "touko", "kesä", "heinä", "elo", "syys", "loka", "marras", "joulu", "" } }; + yield return new object[] { "fil-PH", new string[] { "Ene", "Peb", "Mar", "Abr", "May", "Hun", "Hul", "Ago", "Set", "Okt", "Nob", "Dis", "" } }; + yield return new object[] { "fr-BE", new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; + yield return new object[] { "fr-CA", new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juill.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; + yield return new object[] { "fr-CH", new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; + yield return new object[] { "fr-FR", new string[] { "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc.", "" } }; + yield return new object[] { "gu-IN", new string[] { "જાન્યુ", "ફેબ્રુ", "માર્ચ", "એપ્રિલ", "મે", "જૂન", "જુલાઈ", "ઑગસ્ટ", "સપ્ટે", "ઑક્ટો", "નવે", "ડિસે", "" } }; + yield return new object[] { "he-IL", new string[] { "ינו׳", "פבר׳", "מרץ", "אפר׳", "מאי", "יוני", "יולי", "אוג׳", "ספט׳", "אוק׳", "נוב׳", "דצמ׳", "" } }; + yield return new object[] { "hi-IN", new string[] { "जन॰", "फ़र॰", "मार्च", "अप्रैल", "मई", "जून", "जुल॰", "अग॰", "सित॰", "अक्तू॰", "नव॰", "दिस॰", "" } }; + yield return new object[] { "hr-BA", new string[] { "sij", "velj", "ožu", "tra", "svi", "lip", "srp", "kol", "ruj", "lis", "stu", "pro", "" } }; + yield return new object[] { "hr-HR", new string[] { "sij", "velj", "ožu", "tra", "svi", "lip", "srp", "kol", "ruj", "lis", "stu", "pro", "" } }; + yield return new object[] { "hu-HU", new string[] { "jan.", "febr.", "márc.", "ápr.", "máj.", "jún.", "júl.", "aug.", "szept.", "okt.", "nov.", "dec.", "" } }; + yield return new object[] { "id-ID", new string[] { "Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des", "" } }; + yield return new object[] { "it-CH", new string[] { "gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic", "" } }; + yield return new object[] { "it-IT", new string[] { "gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic", "" } }; + yield return new object[] { "ja-JP", new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; + yield return new object[] { "kn-IN", new string[] { "ಜನ", "ಫೆಬ್ರ", "ಮಾರ್ಚ್", "ಏಪ್ರಿ", "ಮೇ", "ಜೂನ್", "ಜುಲೈ", "ಆಗ", "ಸೆಪ್ಟೆಂ", "ಅಕ್ಟೋ", "ನವೆಂ", "ಡಿಸೆಂ", "" } }; + yield return new object[] { "ko-KR", new string[] { "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월", "" } }; + yield return new object[] { "lt-LT", new string[] { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "" } }; // "saus.", "vas.", "kov.", "bal.", "geg.", "birž.", "liep.", "rugp.", "rugs.", "spal.", "lapkr.", "gruod." + yield return new object[] { "lv-LV", new string[] { "janv.", "febr.", "marts", "apr.", "maijs", "jūn.", "jūl.", "aug.", "sept.", "okt.", "nov.", "dec.", "" } }; + yield return new object[] { "ml-IN", new string[] { "ജനു", "ഫെബ്രു", "മാർ", "ഏപ്രി", "മേയ്", "ജൂൺ", "ജൂലൈ", "ഓഗ", "സെപ്റ്റം", "ഒക്ടോ", "നവം", "ഡിസം", "" } }; + yield return new object[] { "mr-IN", new string[] { "जाने", "फेब्रु", "मार्च", "एप्रि", "मे", "जून", "जुलै", "ऑग", "सप्टें", "ऑक्टो", "नोव्हें", "डिसें", "" } }; + yield return new object[] { "ms-BN", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis", "" } }; + yield return new object[] { "ms-MY", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis", "" } }; + yield return new object[] { "ms-SG", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis", "" } }; + yield return new object[] { "nb-NO", new string[] { "jan", "feb", "mar", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "des", "" } }; + yield return new object[] { "no", new string[] { "jan", "feb", "mar", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "des", "" } }; + yield return new object[] { "no-NO", new string[] { "jan", "feb", "mar", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "des", "" } }; + var dutchMonths = PlatformDetection.IsNodeJSOnWindows ? + new string[] { "jan.", "feb.", "mrt.", "apr.", "mei", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec.", "" } : // same as ICU + new string[] { "jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec", "" }; + yield return new object[] { "nl-AW", dutchMonths }; + yield return new object[] { "nl-BE", dutchMonths }; + yield return new object[] { "nl-NL", dutchMonths }; + yield return new object[] { "pl-PL", new string[] { "sty", "lut", "mar", "kwi", "maj", "cze", "lip", "sie", "wrz", "paź", "lis", "gru", "" } }; + yield return new object[] { "pt-BR", new string[] { "jan.", "fev.", "mar.", "abr.", "mai.", "jun.", "jul.", "ago.", "set.", "out.", "nov.", "dez.", "" } }; + yield return new object[] { "pt-PT", new string[] { "jan.", "fev.", "mar.", "abr.", "mai.", "jun.", "jul.", "ago.", "set.", "out.", "nov.", "dez.", "" } }; + yield return new object[] { "ro-RO", new string[] { "ian.", "feb.", "mar.", "apr.", "mai", "iun.", "iul.", "aug.", "sept.", "oct.", "nov.", "dec.", "" } }; + yield return new object[] { "ru-RU", new string[] { "янв.", "февр.", "март", "апр.", "май", "июнь", "июль", "авг.", "сент.", "окт.", "нояб.", "дек.", "" } }; + yield return new object[] { "sk-SK", new string[] { "jan", "feb", "mar", "apr", "máj", "jún", "júl", "aug", "sep", "okt", "nov", "dec", "" } }; + yield return new object[] { "sl-SI", new string[] { "jan.", "feb.", "mar.", "apr.", "maj", "jun.", "jul.", "avg.", "sep.", "okt.", "nov.", "dec.", "" } }; + yield return new object[] { "sr-Cyrl-RS", new string[] { "јан", "феб", "мар", "апр", "мај", "јун", "јул", "авг", "сеп", "окт", "нов", "дец", "" } }; + yield return new object[] { "sr-Latn-RS", new string[] { "jan", "feb", "mar", "apr", "maj", "jun", "jul", "avg", "sep", "okt", "nov", "dec", "" } }; + yield return new object[] { "sv-AX", new string[] { "jan.", "feb.", "mars", "apr.", "maj", "juni", "juli", "aug.", "sep.", "okt.", "nov.", "dec.", "" } }; + yield return new object[] { "sv-SE", new string[] { "jan.", "feb.", "mars", "apr.", "maj", "juni", "juli", "aug.", "sep.", "okt.", "nov.", "dec.", "" } }; + yield return new object[] { "sw-CD", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; + yield return new object[] { "sw-KE", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; + yield return new object[] { "sw-TZ", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; + yield return new object[] { "sw-UG", new string[] { "Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des", "" } }; + yield return new object[] { "ta-IN", new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; + yield return new object[] { "ta-LK", new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; + yield return new object[] { "ta-MY", new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; + yield return new object[] { "ta-SG", new string[] { "ஜன.", "பிப்.", "மார்.", "ஏப்.", "மே", "ஜூன்", "ஜூலை", "ஆக.", "செப்.", "அக்.", "நவ.", "டிச.", "" } }; + yield return new object[] { "te-IN", new string[] { "జన", "ఫిబ్ర", "మార్చి", "ఏప్రి", "మే", "జూన్", "జులై", "ఆగ", "సెప్టెం", "అక్టో", "నవం", "డిసెం", "" } }; + yield return new object[] { "th-TH", new string[] { "ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค.", "" } }; + yield return new object[] { "tr-CY", new string[] { "Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara", "" } }; + yield return new object[] { "tr-TR", new string[] { "Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara", "" } }; + yield return new object[] { "uk-UA", new string[] { "січ", "лют", "бер", "кві", "тра", "чер", "лип", "сер", "вер", "жов", "лис", "гру", "" } }; + yield return new object[] { "vi-VN", new string[] { "Thg 1", "Thg 2", "Thg 3", "Thg 4", "Thg 5", "Thg 6", "Thg 7", "Thg 8", "Thg 9", "Thg 10", "Thg 11", "Thg 12", "" } }; + yield return new object[] { "zh-CN", new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; + yield return new object[] { "zh-Hans-HK", new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; + yield return new object[] { "zh-SG", new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; + yield return new object[] { "zh-HK", new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; + yield return new object[] { "zh-TW", new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "" } }; } [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] [MemberData(nameof(AbbreviatedMonthNames_Get_TestData_HybridGlobalization))] - public void AbbreviatedMonthNames_Get_ReturnsExpected_HybridGlobalization(DateTimeFormatInfo format, string[] expected) + public void AbbreviatedMonthNames_Get_ReturnsExpected_HybridGlobalization(string cultureName, string[] expected) { - Assert.Equal(expected, format.AbbreviatedMonthNames); + var format = new CultureInfo(cultureName).DateTimeFormat; + int length = format.AbbreviatedMonthNames.Length; + Assert.True(length == expected.Length, $"Length comparison failed for culture: {cultureName}. Expected: {expected.Length}, Actual: {length}"); + for (int i = 0; i CalendarWeekRule_Get_TestData() { - yield return new object[] { DateTimeFormatInfo.InvariantInfo, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, CalendarWeekRule.FirstDay }; + yield return new object[] { "invariant", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-US", CalendarWeekRule.FirstDay }; if (PlatformDetection.IsNotBrowser) { - yield return new object[] { new CultureInfo("br-FR").DateTimeFormat, DateTimeFormatInfoData.BrFRCalendarWeekRule() }; + yield return new object[] { "br-FR", DateTimeFormatInfoData.BrFRCalendarWeekRule() }; } else { // "br-FR" is not presented in Browser's ICU. Let's test ru-RU instead. - yield return new object[] { new CultureInfo("ru-RU").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "ru-RU", CalendarWeekRule.FirstFourDayWeek }; } if (PlatformDetection.IsHybridGlobalizationOnBrowser) { - yield return new object[] { new CultureInfo("ar-SA").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("am-ET").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("bg-BG").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("bn-BD").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("bn-IN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("ca-AD").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("ca-ES").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("cs-CZ").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("da-DK").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("de-AT").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("de-BE").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("de-CH").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("de-DE").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("de-IT").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("de-LI").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("de-LU").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("el-CY").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("el-GR").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-AE").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-AG").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-AI").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-AS").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-AT").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-AU").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-BB").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-BE").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-BI").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-BM").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-BS").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-BW").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-BZ").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-CA").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-CC").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-CH").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-CK").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-CM").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-CX").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-CY").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-DE").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-DK").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-DM").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-ER").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-FI").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-FJ").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-FK").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-FM").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-GB").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-GD").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-GG").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-GH").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-GI").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-GM").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-GU").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-GY").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-HK").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-IE").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-IL").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-IM").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-IN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-IO").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-JE").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-JM").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-KE").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-KI").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-KN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-KY").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-LC").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-LR").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-LS").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-MG").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-MH").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-MO").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-MP").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-MS").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-MT").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-MU").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-MW").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-MY").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-NA").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-NF").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-NG").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-NL").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-NR").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-NU").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-NZ").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-PG").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-PH").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-PK").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-PN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-PR").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-PW").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-RW").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-SB").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-SC").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-SD").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-SE").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("en-SG").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-SH").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-SI").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-SL").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-SS").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-SX").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-SZ").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-TC").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-TK").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-TO").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-TT").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-TV").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-TZ").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-UG").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-UM").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-VC").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-VG").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-VI").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-VU").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-WS").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-ZA").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-ZM").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-ZW").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("es-419").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("es-ES").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("es-MX").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("et-EE").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("fa-IR").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("fi-FI").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("fil-PH").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("fr-BE").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("fr-CA").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("fr-CH").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("fr-FR").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("gu-IN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("he-IL").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("hi-IN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("hr-BA").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("hr-HR").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("hu-HU").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("id-ID").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("it-CH").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("it-IT").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("ja-JP").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("kn-IN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("ko-KR").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("lt-LT").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("lv-LV").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("ml-IN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("mr-IN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("ms-BN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("ms-MY").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("ms-SG").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("nb-NO").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("no-NO").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("nl-AW").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("nl-BE").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("nl-NL").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("pl-PL").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("pt-BR").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("pt-PT").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("ro-RO").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("ru-RU").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("sk-SK").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("sl-SI").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("sr-Cyrl-RS").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("sr-Latn-RS").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("sv-AX").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("sv-SE").DateTimeFormat, CalendarWeekRule.FirstFourDayWeek }; - yield return new object[] { new CultureInfo("sw-CD").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("sw-KE").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("sw-TZ").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("sw-UG").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("ta-IN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("ta-LK").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("ta-MY").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("ta-SG").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("te-IN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("th-TH").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("tr-CY").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("tr-TR").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("uk-UA").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("vi-VN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("zh-CN").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("zh-Hans-HK").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("zh-SG").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("zh-HK").DateTimeFormat, CalendarWeekRule.FirstDay }; - yield return new object[] { new CultureInfo("zh-TW").DateTimeFormat, CalendarWeekRule.FirstDay }; + yield return new object[] { "ar-SA", CalendarWeekRule.FirstDay }; + yield return new object[] { "am-ET", CalendarWeekRule.FirstDay }; + yield return new object[] { "bg-BG", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "bn-BD", CalendarWeekRule.FirstDay }; + yield return new object[] { "bn-IN", CalendarWeekRule.FirstDay }; + yield return new object[] { "ca-AD", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "ca-ES", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "cs-CZ", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "da-DK", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "de-AT", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "de-BE", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "de-CH", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "de-DE", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "de-IT", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "de-LI", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "de-LU", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "el-CY", CalendarWeekRule.FirstDay }; + yield return new object[] { "el-GR", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-AE", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-AG", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-AI", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-AS", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-AT", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-AU", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-BB", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-BE", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-BI", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-BM", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-BS", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-BW", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-BZ", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-CA", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-CC", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-CH", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-CK", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-CM", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-CX", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-CY", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-DE", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-DK", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-DM", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-ER", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-FI", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-FJ", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-FK", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-FM", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-GB", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-GD", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-GG", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-GH", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-GI", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-GM", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-GU", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-GY", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-HK", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-IE", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-IL", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-IM", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-IN", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-IO", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-JE", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-JM", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-KE", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-KI", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-KN", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-KY", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-LC", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-LR", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-LS", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-MG", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-MH", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-MO", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-MP", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-MS", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-MT", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-MU", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-MW", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-MY", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-NA", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-NF", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-NG", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-NL", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-NR", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-NU", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-NZ", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-PG", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-PH", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-PK", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-PN", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-PR", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-PW", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-RW", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-SB", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-SC", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-SD", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-SE", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "en-SG", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-SH", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-SI", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-SL", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-SS", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-SX", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-SZ", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-TC", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-TK", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-TO", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-TT", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-TV", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-TZ", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-UG", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-UM", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-US", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-VC", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-VG", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-VI", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-VU", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-WS", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-ZA", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-ZM", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-ZW", CalendarWeekRule.FirstDay }; + yield return new object[] { "en-US", CalendarWeekRule.FirstDay }; + yield return new object[] { "es-419", CalendarWeekRule.FirstDay }; + yield return new object[] { "es-ES", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "es-MX", CalendarWeekRule.FirstDay }; + yield return new object[] { "et-EE", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "fa-IR", CalendarWeekRule.FirstDay }; + yield return new object[] { "fi-FI", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "fil-PH", CalendarWeekRule.FirstDay }; + yield return new object[] { "fr-BE", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "fr-CA", CalendarWeekRule.FirstDay }; + yield return new object[] { "fr-CH", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "fr-FR", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "gu-IN", CalendarWeekRule.FirstDay }; + yield return new object[] { "he-IL", CalendarWeekRule.FirstDay }; + yield return new object[] { "hi-IN", CalendarWeekRule.FirstDay }; + yield return new object[] { "hr-BA", CalendarWeekRule.FirstDay }; + yield return new object[] { "hr-HR", CalendarWeekRule.FirstDay }; + yield return new object[] { "hu-HU", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "id-ID", CalendarWeekRule.FirstDay }; + yield return new object[] { "it-CH", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "it-IT", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "ja-JP", CalendarWeekRule.FirstDay }; + yield return new object[] { "kn-IN", CalendarWeekRule.FirstDay }; + yield return new object[] { "ko-KR", CalendarWeekRule.FirstDay }; + yield return new object[] { "lt-LT", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "lv-LV", CalendarWeekRule.FirstDay }; + yield return new object[] { "ml-IN", CalendarWeekRule.FirstDay }; + yield return new object[] { "mr-IN", CalendarWeekRule.FirstDay }; + yield return new object[] { "ms-BN", CalendarWeekRule.FirstDay }; + yield return new object[] { "ms-MY", CalendarWeekRule.FirstDay }; + yield return new object[] { "ms-SG", CalendarWeekRule.FirstDay }; + yield return new object[] { "nb-NO", PlatformDetection.IsNodeJSOnWindows ? CalendarWeekRule.FirstDay : CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "no-NO", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "nl-AW", PlatformDetection.IsNodeJSOnWindows ? CalendarWeekRule.FirstFourDayWeek : CalendarWeekRule.FirstDay }; + yield return new object[] { "nl-BE", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "nl-NL", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "pl-PL", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "pt-BR", CalendarWeekRule.FirstDay }; + yield return new object[] { "pt-PT", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "ro-RO", CalendarWeekRule.FirstDay }; + yield return new object[] { "ru-RU", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "sk-SK", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "sl-SI", CalendarWeekRule.FirstDay }; + yield return new object[] { "sr-Cyrl-RS", CalendarWeekRule.FirstDay }; + yield return new object[] { "sr-Latn-RS", CalendarWeekRule.FirstDay }; + yield return new object[] { "sv-AX", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "sv-SE", CalendarWeekRule.FirstFourDayWeek }; + yield return new object[] { "sw-CD", CalendarWeekRule.FirstDay }; + yield return new object[] { "sw-KE", CalendarWeekRule.FirstDay }; + yield return new object[] { "sw-TZ", CalendarWeekRule.FirstDay }; + yield return new object[] { "sw-UG", CalendarWeekRule.FirstDay }; + yield return new object[] { "ta-IN", CalendarWeekRule.FirstDay }; + yield return new object[] { "ta-LK", CalendarWeekRule.FirstDay }; + yield return new object[] { "ta-MY", CalendarWeekRule.FirstDay }; + yield return new object[] { "ta-SG", CalendarWeekRule.FirstDay }; + yield return new object[] { "te-IN", CalendarWeekRule.FirstDay }; + yield return new object[] { "th-TH", CalendarWeekRule.FirstDay }; + yield return new object[] { "tr-CY", CalendarWeekRule.FirstDay }; + yield return new object[] { "tr-TR", CalendarWeekRule.FirstDay }; + yield return new object[] { "uk-UA", CalendarWeekRule.FirstDay }; + yield return new object[] { "vi-VN", CalendarWeekRule.FirstDay }; + yield return new object[] { "zh-CN", CalendarWeekRule.FirstDay }; + yield return new object[] { "zh-Hans-HK", CalendarWeekRule.FirstDay }; + yield return new object[] { "zh-SG", CalendarWeekRule.FirstDay }; + yield return new object[] { "zh-HK", CalendarWeekRule.FirstDay }; + yield return new object[] { "zh-TW", CalendarWeekRule.FirstDay }; } } [Theory] [MemberData(nameof(CalendarWeekRule_Get_TestData))] - public void CalendarWeekRuleTest(DateTimeFormatInfo format, CalendarWeekRule expected) + public void CalendarWeekRuleTest(string cultureName, CalendarWeekRule expected) { - Assert.Equal(expected, format.CalendarWeekRule); + var format = cultureName == "invariant" ? DateTimeFormatInfo.InvariantInfo : new CultureInfo(cultureName).DateTimeFormat; + Assert.True(expected == format.CalendarWeekRule, $"Failed for culture: {cultureName}. Expected: {expected}, Actual: {format.CalendarWeekRule}"); } [Theory] diff --git a/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoDayNames.cs b/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoDayNames.cs index 85a88238e5ad5..55882acd9fc14 100644 --- a/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoDayNames.cs +++ b/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoDayNames.cs @@ -30,59 +30,66 @@ public static IEnumerable DayNames_Set_TestData() public static IEnumerable DayNames_Get_TestData_HybridGlobalization() { - yield return new object[] { new CultureInfo("ar-SA").DateTimeFormat, new string[] { "الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت" } }; - yield return new object[] { new CultureInfo("am-ET").DateTimeFormat, new string[] { "እሑድ", "ሰኞ", "ማክሰኞ", "ረቡዕ", "ሐሙስ", "ዓርብ", "ቅዳሜ" } }; - yield return new object[] { new CultureInfo("bg-BG").DateTimeFormat, new string[] { "неделя", "понеделник", "вторник", "сряда", "четвъртък", "петък", "събота" } }; - yield return new object[] { new CultureInfo("bn-BD").DateTimeFormat, new string[] { "রবিবার", "সোমবার", "মঙ্গলবার", "বুধবার", "বৃহস্পতিবার", "শুক্রবার", "শনিবার" } }; - yield return new object[] { new CultureInfo("ca-ES").DateTimeFormat, new string[] { "diumenge", "dilluns", "dimarts", "dimecres", "dijous", "divendres", "dissabte" } }; - yield return new object[] { new CultureInfo("cs-CZ").DateTimeFormat, new string[] { "neděle", "pondělí", "úterý", "středa", "čtvrtek", "pátek", "sobota" } }; - yield return new object[] { new CultureInfo("de-AT").DateTimeFormat, new string[] { "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" } }; - yield return new object[] { new CultureInfo("el-GR").DateTimeFormat, new string[] { "Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο" } }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, new string[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" } }; - yield return new object[] { new CultureInfo("es-419").DateTimeFormat, new string[] { "domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado" } }; - yield return new object[] { new CultureInfo("es-ES").DateTimeFormat, new string[] { "domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado" } }; - yield return new object[] { new CultureInfo("es-MX").DateTimeFormat, new string[] { "domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado" } }; - yield return new object[] { new CultureInfo("et-EE").DateTimeFormat, new string[] { "pühapäev", "esmaspäev", "teisipäev", "kolmapäev", "neljapäev", "reede", "laupäev" } }; - yield return new object[] { new CultureInfo("fa-IR").DateTimeFormat, new string[] { "یکشنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" } }; - yield return new object[] { new CultureInfo("fi-FI").DateTimeFormat, new string[] { "sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai" } }; - yield return new object[] { new CultureInfo("fil-PH").DateTimeFormat, new string[] { "Linggo", "Lunes", "Martes", "Miyerkules", "Huwebes", "Biyernes", "Sabado" } }; - yield return new object[] { new CultureInfo("fr-FR").DateTimeFormat, new string[] { "dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi" } }; - yield return new object[] { new CultureInfo("gu-IN").DateTimeFormat, new string[] { "રવિવાર", "સોમવાર", "મંગળવાર", "બુધવાર", "ગુરુવાર", "શુક્રવાર", "શનિવાર" } }; - yield return new object[] { new CultureInfo("he-IL").DateTimeFormat, new string[] { "יום ראשון", "יום שני", "יום שלישי", "יום רביעי", "יום חמישי", "יום שישי", "יום שבת" } }; - yield return new object[] { new CultureInfo("hi-IN").DateTimeFormat, new string[] { "रविवार", "सोमवार", "मंगलवार", "बुधवार", "गुरुवार", "शुक्रवार", "शनिवार" } }; - yield return new object[] { new CultureInfo("hr-HR").DateTimeFormat, new string[] { "nedjelja", "ponedjeljak", "utorak", "srijeda", "četvrtak", "petak", "subota" } }; - yield return new object[] { new CultureInfo("hu-HU").DateTimeFormat, new string[] { "vasárnap", "hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat" } }; - yield return new object[] { new CultureInfo("id-ID").DateTimeFormat, new string[] { "Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu" } }; - yield return new object[] { new CultureInfo("it-IT").DateTimeFormat, new string[] { "domenica", "lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato" } }; - yield return new object[] { new CultureInfo("ja-JP").DateTimeFormat, new string[] { "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日" } }; - yield return new object[] { new CultureInfo("kn-IN").DateTimeFormat, new string[] { "ಭಾನುವಾರ", "ಸೋಮವಾರ", "ಮಂಗಳವಾರ", "ಬುಧವಾರ", "ಗುರುವಾರ", "ಶುಕ್ರವಾರ", "ಶನಿವಾರ" } }; - yield return new object[] { new CultureInfo("ko-KR").DateTimeFormat, new string[] { "일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일" } }; - yield return new object[] { new CultureInfo("lt-LT").DateTimeFormat, new string[] { "sekmadienis", "pirmadienis", "antradienis", "trečiadienis", "ketvirtadienis", "penktadienis", "šeštadienis" } }; - yield return new object[] { new CultureInfo("lv-LV").DateTimeFormat, new string[] { "Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena" } }; - yield return new object[] { new CultureInfo("ml-IN").DateTimeFormat, new string[] { "ഞായറാഴ്‌ച", "തിങ്കളാഴ്‌ച", "ചൊവ്വാഴ്‌ച", "ബുധനാഴ്‌ച", "വ്യാഴാഴ്‌ച", "വെള്ളിയാഴ്‌ച", "ശനിയാഴ്‌ച" } }; - yield return new object[] { new CultureInfo("ms-BN").DateTimeFormat, new string[] { "Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu" } }; - yield return new object[] { new CultureInfo("no-NO").DateTimeFormat, new string[] { "søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag" } }; - yield return new object[] { new CultureInfo("nl-AW").DateTimeFormat, new string[] { "zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag" } }; - yield return new object[] { new CultureInfo("pl-PL").DateTimeFormat, new string[] { "niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota" } }; - yield return new object[] { new CultureInfo("pt-PT").DateTimeFormat, new string[] { "domingo", "segunda-feira", "terça-feira", "quarta-feira", "quinta-feira", "sexta-feira", "sábado" } }; - yield return new object[] { new CultureInfo("ro-RO").DateTimeFormat, new string[] { "duminică", "luni", "marți", "miercuri", "joi", "vineri", "sâmbătă" } }; - yield return new object[] { new CultureInfo("sk-SK").DateTimeFormat, new string[] { "nedeľa", "pondelok", "utorok", "streda", "štvrtok", "piatok", "sobota" } }; - yield return new object[] { new CultureInfo("sv-AX").DateTimeFormat, new string[] { "söndag", "måndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag" } }; - yield return new object[] { new CultureInfo("sw-CD").DateTimeFormat, new string[] { "Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi" } }; - yield return new object[] { new CultureInfo("ta-IN").DateTimeFormat, new string[] { "ஞாயிறு", "திங்கள்", "செவ்வாய்", "புதன்", "வியாழன்", "வெள்ளி", "சனி" } }; - yield return new object[] { new CultureInfo("te-IN").DateTimeFormat, new string[] { "ఆదివారం", "సోమవారం", "మంగళవారం", "బుధవారం", "గురువారం", "శుక్రవారం", "శనివారం" } }; - yield return new object[] { new CultureInfo("th-TH").DateTimeFormat, new string[] { "วันอาทิตย์", "วันจันทร์", "วันอังคาร", "วันพุธ", "วันพฤหัสบดี", "วันศุกร์", "วันเสาร์" } }; - yield return new object[] { new CultureInfo("tr-CY").DateTimeFormat, new string[] { "Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi" } }; - yield return new object[] { new CultureInfo("uk-UA").DateTimeFormat, new string[] { "неділя", "понеділок", "вівторок", "середа", "четвер", "пʼятниця", "субота" } }; - yield return new object[] { new CultureInfo("vi-VN").DateTimeFormat, new string[] { "Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy" } }; - yield return new object[] { new CultureInfo("zh-TW").DateTimeFormat, new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" } }; + yield return new object[] { "ar-SA", new string[] { "الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت" } }; + yield return new object[] { "am-ET", new string[] { "እሑድ", "ሰኞ", "ማክሰኞ", "ረቡዕ", "ሐሙስ", "ዓርብ", "ቅዳሜ" } }; + yield return new object[] { "bg-BG", new string[] { "неделя", "понеделник", "вторник", "сряда", "четвъртък", "петък", "събота" } }; + yield return new object[] { "bn-BD", new string[] { "রবিবার", "সোমবার", "মঙ্গলবার", "বুধবার", "বৃহস্পতিবার", "শুক্রবার", "শনিবার" } }; + yield return new object[] { "ca-ES", new string[] { "diumenge", "dilluns", "dimarts", "dimecres", "dijous", "divendres", "dissabte" } }; + yield return new object[] { "cs-CZ", new string[] { "neděle", "pondělí", "úterý", "středa", "čtvrtek", "pátek", "sobota" } }; + yield return new object[] { "de-AT", new string[] { "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" } }; + yield return new object[] { "el-GR", new string[] { "Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο" } }; + yield return new object[] { "en-US", new string[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" } }; + yield return new object[] { "es-419", new string[] { "domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado" } }; + yield return new object[] { "es-ES", new string[] { "domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado" } }; + yield return new object[] { "es-MX", new string[] { "domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado" } }; + var estonianDays = PlatformDetection.IsNodeJSOnWindows ? + new string[] { "Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev" } : + new string[] { "pühapäev", "esmaspäev", "teisipäev", "kolmapäev", "neljapäev", "reede", "laupäev" }; // same as ICU + yield return new object[] { "et-EE", estonianDays }; + yield return new object[] { "fa-IR", new string[] { "یکشنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" } }; + yield return new object[] { "fi-FI", new string[] { "sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai" } }; + yield return new object[] { "fil-PH", new string[] { "Linggo", "Lunes", "Martes", "Miyerkules", "Huwebes", "Biyernes", "Sabado" } }; + yield return new object[] { "fr-FR", new string[] { "dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi" } }; + yield return new object[] { "gu-IN", new string[] { "રવિવાર", "સોમવાર", "મંગળવાર", "બુધવાર", "ગુરુવાર", "શુક્રવાર", "શનિવાર" } }; + yield return new object[] { "he-IL", new string[] { "יום ראשון", "יום שני", "יום שלישי", "יום רביעי", "יום חמישי", "יום שישי", "יום שבת" } }; + yield return new object[] { "hi-IN", new string[] { "रविवार", "सोमवार", "मंगलवार", "बुधवार", "गुरुवार", "शुक्रवार", "शनिवार" } }; + yield return new object[] { "hr-HR", new string[] { "nedjelja", "ponedjeljak", "utorak", "srijeda", "četvrtak", "petak", "subota" } }; + yield return new object[] { "hu-HU", new string[] { "vasárnap", "hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat" } }; + yield return new object[] { "id-ID", new string[] { "Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu" } }; + yield return new object[] { "it-IT", new string[] { "domenica", "lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato" } }; + yield return new object[] { "ja-JP", new string[] { "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日" } }; + yield return new object[] { "kn-IN", new string[] { "ಭಾನುವಾರ", "ಸೋಮವಾರ", "ಮಂಗಳವಾರ", "ಬುಧವಾರ", "ಗುರುವಾರ", "ಶುಕ್ರವಾರ", "ಶನಿವಾರ" } }; + yield return new object[] { "ko-KR", new string[] { "일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일" } }; + yield return new object[] { "lt-LT", new string[] { "sekmadienis", "pirmadienis", "antradienis", "trečiadienis", "ketvirtadienis", "penktadienis", "šeštadienis" } }; + yield return new object[] { "lv-LV", new string[] { "Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena" } }; + yield return new object[] { "ml-IN", new string[] { "ഞായറാഴ്‌ച", "തിങ്കളാഴ്‌ച", "ചൊവ്വാഴ്‌ച", "ബുധനാഴ്‌ച", "വ്യാഴാഴ്‌ച", "വെള്ളിയാഴ്‌ച", "ശനിയാഴ്‌ച" } }; + yield return new object[] { "ms-BN", new string[] { "Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu" } }; + yield return new object[] { "no-NO", new string[] { "søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag" } }; + yield return new object[] { "nl-AW", new string[] { "zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag" } }; + yield return new object[] { "pl-PL", new string[] { "niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota" } }; + yield return new object[] { "pt-PT", new string[] { "domingo", "segunda-feira", "terça-feira", "quarta-feira", "quinta-feira", "sexta-feira", "sábado" } }; + yield return new object[] { "ro-RO", new string[] { "duminică", "luni", "marți", "miercuri", "joi", "vineri", "sâmbătă" } }; + yield return new object[] { "sk-SK", new string[] { "nedeľa", "pondelok", "utorok", "streda", "štvrtok", "piatok", "sobota" } }; + yield return new object[] { "sv-AX", new string[] { "söndag", "måndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag" } }; + yield return new object[] { "sw-CD", new string[] { "Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi" } }; + yield return new object[] { "ta-IN", new string[] { "ஞாயிறு", "திங்கள்", "செவ்வாய்", "புதன்", "வியாழன்", "வெள்ளி", "சனி" } }; + yield return new object[] { "te-IN", new string[] { "ఆదివారం", "సోమవారం", "మంగళవారం", "బుధవారం", "గురువారం", "శుక్రవారం", "శనివారం" } }; + yield return new object[] { "th-TH", new string[] { "วันอาทิตย์", "วันจันทร์", "วันอังคาร", "วันพุธ", "วันพฤหัสบดี", "วันศุกร์", "วันเสาร์" } }; + yield return new object[] { "tr-CY", new string[] { "Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi" } }; + yield return new object[] { "uk-UA", new string[] { "неділя", "понеділок", "вівторок", "середа", "четвер", "пʼятниця", "субота" } }; + yield return new object[] { "vi-VN", new string[] { "Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy" } }; + yield return new object[] { "zh-TW", new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" } }; } [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] [MemberData(nameof(DayNames_Get_TestData_HybridGlobalization))] - public void DayNames_Get_ReturnsExpected_HybridGlobalization(DateTimeFormatInfo format, string[] expected) + public void DayNames_Get_ReturnsExpected_HybridGlobalization(string cultureName, string[] expected) { - Assert.Equal(expected, format.DayNames); + var format = new CultureInfo(cultureName).DateTimeFormat; + int length = format.DayNames.Length; + Assert.True(length == expected.Length, $"Length comparison failed for culture: {cultureName}. Expected: {expected.Length}, Actual: {length}"); + for (int i = 0; i FirstDayOfWeek_Get_TestData_HybridGlobalizat yield return new object[] { "en-AI", DayOfWeek.Monday }; yield return new object[] { "en-AS", DayOfWeek.Sunday }; yield return new object[] { "en-AT", DayOfWeek.Monday }; - yield return new object[] { "en-AU", DayOfWeek.Monday }; // originally in ICU: Sunday, even though ISO 8601 states: Monday + yield return new object[] { "en-AU", PlatformDetection.IsNodeJSOnWindows ? DayOfWeek.Sunday : DayOfWeek.Monday }; // originally in ICU: Sunday, even though ISO 8601 states: Monday yield return new object[] { "en-BB", DayOfWeek.Monday }; yield return new object[] { "en-BE", DayOfWeek.Monday }; yield return new object[] { "en-BI", DayOfWeek.Monday }; @@ -193,13 +193,13 @@ public static IEnumerable FirstDayOfWeek_Get_TestData_HybridGlobalizat yield return new object[] { "ta-LK", DayOfWeek.Monday }; yield return new object[] { "ta-MY", DayOfWeek.Monday }; yield return new object[] { "ta-SG", DayOfWeek.Sunday }; - yield return new object[] { "te-IN", DayOfWeek.Sunday }; + yield return new object[] { "te-IN", PlatformDetection.IsNodeJSOnWindows ? DayOfWeek.Monday : DayOfWeek.Sunday }; yield return new object[] { "th-TH", DayOfWeek.Sunday }; yield return new object[] { "tr-CY", DayOfWeek.Monday }; yield return new object[] { "tr-TR", DayOfWeek.Monday }; yield return new object[] { "uk-UA", DayOfWeek.Monday }; yield return new object[] { "vi-VN", DayOfWeek.Monday }; - yield return new object[] { "zh-CN", DayOfWeek.Monday }; + yield return new object[] { "zh-CN", PlatformDetection.IsNodeJSOnWindows ? DayOfWeek.Sunday : DayOfWeek.Monday }; yield return new object[] { "zh-Hans-HK", DayOfWeek.Sunday }; yield return new object[] { "zh-SG", DayOfWeek.Sunday }; yield return new object[] { "zh-HK", DayOfWeek.Sunday }; diff --git a/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedEraName.cs b/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedEraName.cs index 8dd07f32a85bc..71d286cf1553f 100644 --- a/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedEraName.cs +++ b/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoGetAbbreviatedEraName.cs @@ -10,209 +10,211 @@ public class DateTimeFormatInfoGetAbbreviatedEraName { public static IEnumerable GetAbbreviatedEraName_TestData() { - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, 0, DateTimeFormatInfoData.EnUSAbbreviatedEraName() }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, 1, DateTimeFormatInfoData.EnUSAbbreviatedEraName() }; - yield return new object[] { new DateTimeFormatInfo(), 0, "AD" }; - yield return new object[] { new DateTimeFormatInfo(), 1, "AD" }; - yield return new object[] { new CultureInfo("ja-JP").DateTimeFormat, 1, DateTimeFormatInfoData.JaJPAbbreviatedEraName() }; + yield return new object[] { "en-US", 0, DateTimeFormatInfoData.EnUSAbbreviatedEraName() }; + yield return new object[] { "en-US", 1, DateTimeFormatInfoData.EnUSAbbreviatedEraName() }; + yield return new object[] { "invariant", 0, "AD" }; + yield return new object[] { "invariant", 1, "AD" }; + yield return new object[] { "ja-JP", 1, DateTimeFormatInfoData.JaJPAbbreviatedEraName() }; if (PlatformDetection.IsHybridGlobalizationOnBrowser) { // see the comments on the right to check the non-Hybrid result, if it differs - yield return new object[] { new CultureInfo("ar-SA").DateTimeFormat, 1, "هـ" }; - yield return new object[] { new CultureInfo("am-ET").DateTimeFormat, 1, "ዓ/ም" }; - yield return new object[] { new CultureInfo("bg-BG").DateTimeFormat, 1, "сл.Хр." }; - yield return new object[] { new CultureInfo("bn-BD").DateTimeFormat, 1, "খৃষ্টাব্দ" }; - yield return new object[] { new CultureInfo("bn-IN").DateTimeFormat, 1, "খ্রিঃ" }; // "খৃষ্টাব্দ" - yield return new object[] { new CultureInfo("ca-AD").DateTimeFormat, 1, "dC" }; - yield return new object[] { new CultureInfo("ca-ES").DateTimeFormat, 1, "dC" }; - yield return new object[] { new CultureInfo("cs-CZ").DateTimeFormat, 1, "n.l." }; - yield return new object[] { new CultureInfo("da-DK").DateTimeFormat, 1, "eKr" }; - yield return new object[] { new CultureInfo("de-AT").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("de-BE").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("de-CH").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("de-DE").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("de-IT").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("de-LI").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("de-LU").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("el-CY").DateTimeFormat, 1, "μ.Χ." }; - yield return new object[] { new CultureInfo("el-GR").DateTimeFormat, 1, "μ.Χ." }; - yield return new object[] { new CultureInfo("en-AE").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-AG").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-AI").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-AS").DateTimeFormat, 1, "A" }; - yield return new object[] { new CultureInfo("en-AT").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-AU").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-BB").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-BE").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-BI").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-BM").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-BS").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-BW").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-BZ").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-CA").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-CC").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-CH").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-CK").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-CM").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-CX").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-CY").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-DE").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-DK").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-DM").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-ER").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-FI").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-FJ").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-FK").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-FM").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-GB").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-GD").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-GG").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-GH").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-GI").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-GM").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-GU").DateTimeFormat, 1, "A" }; - yield return new object[] { new CultureInfo("en-GY").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-HK").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-IE").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-IL").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-IM").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-IN").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-IO").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-JE").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-JM").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-KE").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-KI").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-KN").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-KY").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-LC").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-LR").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-LS").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-MG").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-MH").DateTimeFormat, 1, "A" }; - yield return new object[] { new CultureInfo("en-MO").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-MP").DateTimeFormat, 1, "A" }; - yield return new object[] { new CultureInfo("en-MS").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-MT").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-MU").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-MW").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-MY").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-NA").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-NF").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-NG").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-NL").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-NR").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-NU").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-NZ").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-PG").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-PH").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-PK").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-PN").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-PR").DateTimeFormat, 1, "A" }; - yield return new object[] { new CultureInfo("en-PW").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-RW").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-SB").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-SC").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-SD").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-SE").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-SG").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-SH").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-SI").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-SL").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-SS").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-SX").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-SZ").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-TC").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-TK").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-TO").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-TT").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-TV").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-TZ").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-UG").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-UM").DateTimeFormat, 1, "A" }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, 1, "A" }; - yield return new object[] { new CultureInfo("en-VC").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-VG").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-VI").DateTimeFormat, 1, "A" }; - yield return new object[] { new CultureInfo("en-VU").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-WS").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-ZA").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-ZM").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("en-ZW").DateTimeFormat, 1, "A" }; // AD - yield return new object[] { new CultureInfo("es-ES").DateTimeFormat, 1, "d. C." }; - yield return new object[] { new CultureInfo("es-419").DateTimeFormat, 1, "d.C." }; // "d. C." - yield return new object[] { new CultureInfo("es-MX").DateTimeFormat, 1, "d.C." }; // "d. C." - yield return new object[] { new CultureInfo("et-EE").DateTimeFormat, 1, "pKr" }; - yield return new object[] { new CultureInfo("fa-IR").DateTimeFormat, 1, "ه.ش" }; // ه‍.ش. - yield return new object[] { new CultureInfo("fi-FI").DateTimeFormat, 1, "jKr" }; - yield return new object[] { new CultureInfo("fil-PH").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("fr-BE").DateTimeFormat, 1, "ap. J.-C." }; - yield return new object[] { new CultureInfo("fr-CA").DateTimeFormat, 1, "ap. J.-C." }; - yield return new object[] { new CultureInfo("fr-CH").DateTimeFormat, 1, "ap. J.-C." }; - yield return new object[] { new CultureInfo("fr-FR").DateTimeFormat, 1, "ap. J.-C." }; - yield return new object[] { new CultureInfo("gu-IN").DateTimeFormat, 1, "ઇસ" }; - yield return new object[] { new CultureInfo("he-IL").DateTimeFormat, 1, "אחריי" }; // לספירה - yield return new object[] { new CultureInfo("hi-IN").DateTimeFormat, 1, "ईस्वी" }; - yield return new object[] { new CultureInfo("hr-BA").DateTimeFormat, 1, "AD" }; // po. Kr. - yield return new object[] { new CultureInfo("hr-HR").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("hu-HU").DateTimeFormat, 1, "isz." }; - yield return new object[] { new CultureInfo("id-ID").DateTimeFormat, 1, "M" }; - yield return new object[] { new CultureInfo("it-CH").DateTimeFormat, 1, "dC" }; // d.C. - yield return new object[] { new CultureInfo("it-IT").DateTimeFormat, 1, "dC" }; - yield return new object[] { new CultureInfo("ja-JP").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("kn-IN").DateTimeFormat, 1, "ಕ್ರಿ.ಶ" }; - yield return new object[] { new CultureInfo("ko-KR").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("lt-LT").DateTimeFormat, 1, "po Kr." }; - yield return new object[] { new CultureInfo("lv-LV").DateTimeFormat, 1, "m.ē." }; - yield return new object[] { new CultureInfo("ml-IN").DateTimeFormat, 1, "എഡി" }; - yield return new object[] { new CultureInfo("mr-IN").DateTimeFormat, 1, "इ. स." }; - yield return new object[] { new CultureInfo("ms-BN").DateTimeFormat, 1, "TM" }; - yield return new object[] { new CultureInfo("ms-MY").DateTimeFormat, 1, "TM" }; - yield return new object[] { new CultureInfo("ms-SG").DateTimeFormat, 1, "TM" }; - yield return new object[] { new CultureInfo("nb-NO").DateTimeFormat, 1, "e.Kr." }; - yield return new object[] { new CultureInfo("no").DateTimeFormat, 1, "e.Kr." }; - yield return new object[] { new CultureInfo("no-NO").DateTimeFormat, 1, "e.Kr." }; - yield return new object[] { new CultureInfo("nl-AW").DateTimeFormat, 1, "n.C." }; - yield return new object[] { new CultureInfo("nl-BE").DateTimeFormat, 1, "n.C." }; // n.Chr. - yield return new object[] { new CultureInfo("nl-NL").DateTimeFormat, 1, "n.C." }; - yield return new object[] { new CultureInfo("pl-PL").DateTimeFormat, 1, "n.e." }; - yield return new object[] { new CultureInfo("pt-BR").DateTimeFormat, 1, "d.C." }; - yield return new object[] { new CultureInfo("pt-PT").DateTimeFormat, 1, "d.C." }; - yield return new object[] { new CultureInfo("ro-RO").DateTimeFormat, 1, "d.Hr." }; - yield return new object[] { new CultureInfo("ru-RU").DateTimeFormat, 1, "н.э." }; - yield return new object[] { new CultureInfo("sk-SK").DateTimeFormat, 1, "po Kr." }; - yield return new object[] { new CultureInfo("sl-SI").DateTimeFormat, 1, "po Kr." }; - yield return new object[] { new CultureInfo("sr-Cyrl-RS").DateTimeFormat, 1, "н.е." }; - yield return new object[] { new CultureInfo("sr-Latn-RS").DateTimeFormat, 1, "n.e." }; - yield return new object[] { new CultureInfo("sv-AX").DateTimeFormat, 1, "e.Kr." }; - yield return new object[] { new CultureInfo("sv-SE").DateTimeFormat, 1, "e.Kr." }; - yield return new object[] { new CultureInfo("sw-CD").DateTimeFormat, 1, "BK" }; - yield return new object[] { new CultureInfo("sw-KE").DateTimeFormat, 1, "BK" }; - yield return new object[] { new CultureInfo("sw-TZ").DateTimeFormat, 1, "BK" }; - yield return new object[] { new CultureInfo("sw-UG").DateTimeFormat, 1, "BK" }; - yield return new object[] { new CultureInfo("ta-IN").DateTimeFormat, 1, "கி.பி." }; - yield return new object[] { new CultureInfo("ta-LK").DateTimeFormat, 1, "கி.பி." }; - yield return new object[] { new CultureInfo("ta-MY").DateTimeFormat, 1, "கி.பி." }; - yield return new object[] { new CultureInfo("ta-SG").DateTimeFormat, 1, "கி.பி." }; - yield return new object[] { new CultureInfo("te-IN").DateTimeFormat, 1, "క్రీశ" }; - yield return new object[] { new CultureInfo("th-TH").DateTimeFormat, 1, "พ.ศ." }; - yield return new object[] { new CultureInfo("tr-CY").DateTimeFormat, 1, "MS" }; - yield return new object[] { new CultureInfo("tr-TR").DateTimeFormat, 1, "MS" }; - yield return new object[] { new CultureInfo("uk-UA").DateTimeFormat, 1, "н.е." }; - yield return new object[] { new CultureInfo("vi-VN").DateTimeFormat, 1, "sau CN" }; - yield return new object[] { new CultureInfo("zh-CN").DateTimeFormat, 1, "公元" }; - yield return new object[] { new CultureInfo("zh-Hans-HK").DateTimeFormat, 1, "公元" }; - yield return new object[] { new CultureInfo("zh-SG").DateTimeFormat, 1, "公元" }; - yield return new object[] { new CultureInfo("zh-HK").DateTimeFormat, 1, "公元" }; - yield return new object[] { new CultureInfo("zh-TW").DateTimeFormat, 1, "西元" }; + yield return new object[] { "ar-SA", 1, "هـ" }; + yield return new object[] { "am-ET", 1, "ዓ/ም" }; + yield return new object[] { "bg-BG", 1, "сл.Хр." }; + yield return new object[] { "bn-BD", 1, "খৃষ্টাব্দ" }; + yield return new object[] { "bn-IN", 1, PlatformDetection.IsNodeJSOnWindows ? "খৃষ্টাব্দ" : "খ্রিঃ" }; // "খৃষ্টাব্দ" + yield return new object[] { "ca-AD", 1, "dC" }; + yield return new object[] { "ca-ES", 1, "dC" }; + yield return new object[] { "cs-CZ", 1, "n.l." }; + yield return new object[] { "da-DK", 1, "eKr" }; + yield return new object[] { "de-AT", 1, "n. Chr." }; + yield return new object[] { "de-BE", 1, "n. Chr." }; + yield return new object[] { "de-CH", 1, "n. Chr." }; + yield return new object[] { "de-DE", 1, "n. Chr." }; + yield return new object[] { "de-IT", 1, "n. Chr." }; + yield return new object[] { "de-LI", 1, "n. Chr." }; + yield return new object[] { "de-LU", 1, "n. Chr." }; + yield return new object[] { "el-CY", 1, "μ.Χ." }; + yield return new object[] { "el-GR", 1, "μ.Χ." }; + yield return new object[] { "en-AE", 1, "A" }; // AD + yield return new object[] { "en-AG", 1, "A" }; // AD + yield return new object[] { "en-AI", 1, "A" }; // AD + yield return new object[] { "en-AS", 1, "A" }; + yield return new object[] { "en-AT", 1, "A" }; // AD + yield return new object[] { "en-AU", 1, "A" }; // AD + yield return new object[] { "en-BB", 1, "A" }; // AD + yield return new object[] { "en-BE", 1, "A" }; // AD + yield return new object[] { "en-BI", 1, "A" }; // AD + yield return new object[] { "en-BM", 1, "A" }; // AD + yield return new object[] { "en-BS", 1, "A" }; // AD + yield return new object[] { "en-BW", 1, "A" }; // AD + yield return new object[] { "en-BZ", 1, "A" }; // AD + yield return new object[] { "en-CA", 1, "A" }; // AD + yield return new object[] { "en-CC", 1, "A" }; // AD + yield return new object[] { "en-CH", 1, "A" }; // AD + yield return new object[] { "en-CK", 1, "A" }; // AD + yield return new object[] { "en-CM", 1, "A" }; // AD + yield return new object[] { "en-CX", 1, "A" }; // AD + yield return new object[] { "en-CY", 1, "A" }; // AD + yield return new object[] { "en-DE", 1, "A" }; // AD + yield return new object[] { "en-DK", 1, "A" }; // AD + yield return new object[] { "en-DM", 1, "A" }; // AD + yield return new object[] { "en-ER", 1, "A" }; // AD + yield return new object[] { "en-FI", 1, "A" }; // AD + yield return new object[] { "en-FJ", 1, "A" }; // AD + yield return new object[] { "en-FK", 1, "A" }; // AD + yield return new object[] { "en-FM", 1, "A" }; // AD + yield return new object[] { "en-GB", 1, "A" }; // AD + yield return new object[] { "en-GD", 1, "A" }; // AD + yield return new object[] { "en-GG", 1, "A" }; // AD + yield return new object[] { "en-GH", 1, "A" }; // AD + yield return new object[] { "en-GI", 1, "A" }; // AD + yield return new object[] { "en-GM", 1, "A" }; // AD + yield return new object[] { "en-GU", 1, "A" }; + yield return new object[] { "en-GY", 1, "A" }; // AD + yield return new object[] { "en-HK", 1, "A" }; // AD + yield return new object[] { "en-IE", 1, "A" }; // AD + yield return new object[] { "en-IL", 1, "A" }; // AD + yield return new object[] { "en-IM", 1, "A" }; // AD + yield return new object[] { "en-IN", 1, "A" }; // AD + yield return new object[] { "en-IO", 1, "A" }; // AD + yield return new object[] { "en-JE", 1, "A" }; // AD + yield return new object[] { "en-JM", 1, "A" }; // AD + yield return new object[] { "en-KE", 1, "A" }; // AD + yield return new object[] { "en-KI", 1, "A" }; // AD + yield return new object[] { "en-KN", 1, "A" }; // AD + yield return new object[] { "en-KY", 1, "A" }; // AD + yield return new object[] { "en-LC", 1, "A" }; // AD + yield return new object[] { "en-LR", 1, "A" }; // AD + yield return new object[] { "en-LS", 1, "A" }; // AD + yield return new object[] { "en-MG", 1, "A" }; // AD + yield return new object[] { "en-MH", 1, "A" }; + yield return new object[] { "en-MO", 1, "A" }; // AD + yield return new object[] { "en-MP", 1, "A" }; + yield return new object[] { "en-MS", 1, "A" }; // AD + yield return new object[] { "en-MT", 1, "A" }; // AD + yield return new object[] { "en-MU", 1, "A" }; // AD + yield return new object[] { "en-MW", 1, "A" }; // AD + yield return new object[] { "en-MY", 1, "A" }; // AD + yield return new object[] { "en-NA", 1, "A" }; // AD + yield return new object[] { "en-NF", 1, "A" }; // AD + yield return new object[] { "en-NG", 1, "A" }; // AD + yield return new object[] { "en-NL", 1, "A" }; // AD + yield return new object[] { "en-NR", 1, "A" }; // AD + yield return new object[] { "en-NU", 1, "A" }; // AD + yield return new object[] { "en-NZ", 1, "A" }; // AD + yield return new object[] { "en-PG", 1, "A" }; // AD + yield return new object[] { "en-PH", 1, "A" }; // AD + yield return new object[] { "en-PK", 1, "A" }; // AD + yield return new object[] { "en-PN", 1, "A" }; // AD + yield return new object[] { "en-PR", 1, "A" }; + yield return new object[] { "en-PW", 1, "A" }; // AD + yield return new object[] { "en-RW", 1, "A" }; // AD + yield return new object[] { "en-SB", 1, "A" }; // AD + yield return new object[] { "en-SC", 1, "A" }; // AD + yield return new object[] { "en-SD", 1, "A" }; // AD + yield return new object[] { "en-SE", 1, "A" }; // AD + yield return new object[] { "en-SG", 1, "A" }; // AD + yield return new object[] { "en-SH", 1, "A" }; // AD + yield return new object[] { "en-SI", 1, "A" }; // AD + yield return new object[] { "en-SL", 1, "A" }; // AD + yield return new object[] { "en-SS", 1, "A" }; // AD + yield return new object[] { "en-SX", 1, "A" }; // AD + yield return new object[] { "en-SZ", 1, "A" }; // AD + yield return new object[] { "en-TC", 1, "A" }; // AD + yield return new object[] { "en-TK", 1, "A" }; // AD + yield return new object[] { "en-TO", 1, "A" }; // AD + yield return new object[] { "en-TT", 1, "A" }; // AD + yield return new object[] { "en-TV", 1, "A" }; // AD + yield return new object[] { "en-TZ", 1, "A" }; // AD + yield return new object[] { "en-UG", 1, "A" }; // AD + yield return new object[] { "en-UM", 1, "A" }; + yield return new object[] { "en-US", 1, "A" }; + yield return new object[] { "en-VC", 1, "A" }; // AD + yield return new object[] { "en-VG", 1, "A" }; // AD + yield return new object[] { "en-VI", 1, "A" }; + yield return new object[] { "en-VU", 1, "A" }; // AD + yield return new object[] { "en-WS", 1, "A" }; // AD + yield return new object[] { "en-ZA", 1, "A" }; // AD + yield return new object[] { "en-ZM", 1, "A" }; // AD + yield return new object[] { "en-ZW", 1, "A" }; // AD + yield return new object[] { "es-ES", 1, "d. C." }; + yield return new object[] { "es-419", 1, PlatformDetection.IsNodeJSOnWindows ? "d. C." : "d.C." }; // "d. C." + yield return new object[] { "es-MX", 1, PlatformDetection.IsNodeJSOnWindows ? "d. C." : "d.C." }; // "d. C." + yield return new object[] { "et-EE", 1, "pKr" }; + yield return new object[] { "fa-IR", 1, "ه.ش" }; // ه‍.ش. + yield return new object[] { "fi-FI", 1, "jKr" }; + yield return new object[] { "fil-PH", 1, "AD" }; + yield return new object[] { "fr-BE", 1, "ap. J.-C." }; + yield return new object[] { "fr-CA", 1, "ap. J.-C." }; + yield return new object[] { "fr-CH", 1, "ap. J.-C." }; + yield return new object[] { "fr-FR", 1, "ap. J.-C." }; + yield return new object[] { "gu-IN", 1, "ઇસ" }; + yield return new object[] { "he-IL", 1, "אחריי" }; // לספירה + yield return new object[] { "hi-IN", 1, "ईस्वी" }; + yield return new object[] { "hr-BA", 1, "AD" }; // po. Kr. + yield return new object[] { "hr-HR", 1, "AD" }; + yield return new object[] { "hu-HU", 1, "isz." }; + yield return new object[] { "id-ID", 1, "M" }; + yield return new object[] { "it-CH", 1, "dC" }; // d.C. + yield return new object[] { "it-IT", 1, "dC" }; + yield return new object[] { "ja-JP", 1, "AD" }; + yield return new object[] { "kn-IN", 1, "ಕ್ರಿ.ಶ" }; + yield return new object[] { "ko-KR", 1, "AD" }; + yield return new object[] { "lt-LT", 1, "po Kr." }; + yield return new object[] { "lv-LV", 1, "m.ē." }; + yield return new object[] { "ml-IN", 1, "എഡി" }; + yield return new object[] { "mr-IN", 1, "इ. स." }; + yield return new object[] { "ms-BN", 1, "TM" }; + yield return new object[] { "ms-MY", 1, "TM" }; + yield return new object[] { "ms-SG", 1, "TM" }; + yield return new object[] { "nb-NO", 1, "e.Kr." }; + yield return new object[] { "no", 1, "e.Kr." }; + yield return new object[] { "no-NO", 1, "e.Kr." }; + yield return new object[] { "nl-AW", 1, "n.C." }; + yield return new object[] { "nl-BE", 1, "n.C." }; // n.Chr. + yield return new object[] { "nl-NL", 1, "n.C." }; + yield return new object[] { "pl-PL", 1, "n.e." }; + yield return new object[] { "pt-BR", 1, "d.C." }; + yield return new object[] { "pt-PT", 1, "d.C." }; + yield return new object[] { "ro-RO", 1, "d.Hr." }; + yield return new object[] { "ru-RU", 1, "н.э." }; + yield return new object[] { "sk-SK", 1, "po Kr." }; + yield return new object[] { "sl-SI", 1, "po Kr." }; + yield return new object[] { "sr-Cyrl-RS", 1, "н.е." }; + yield return new object[] { "sr-Latn-RS", 1, "n.e." }; + yield return new object[] { "sv-AX", 1, "e.Kr." }; + yield return new object[] { "sv-SE", 1, "e.Kr." }; + yield return new object[] { "sw-CD", 1, "BK" }; + yield return new object[] { "sw-KE", 1, "BK" }; + yield return new object[] { "sw-TZ", 1, "BK" }; + yield return new object[] { "sw-UG", 1, "BK" }; + yield return new object[] { "ta-IN", 1, "கி.பி." }; + yield return new object[] { "ta-LK", 1, "கி.பி." }; + yield return new object[] { "ta-MY", 1, "கி.பி." }; + yield return new object[] { "ta-SG", 1, "கி.பி." }; + yield return new object[] { "te-IN", 1, "క్రీశ" }; + yield return new object[] { "th-TH", 1, "พ.ศ." }; + yield return new object[] { "tr-CY", 1, "MS" }; + yield return new object[] { "tr-TR", 1, "MS" }; + yield return new object[] { "uk-UA", 1, "н.е." }; + yield return new object[] { "vi-VN", 1, "sau CN" }; + yield return new object[] { "zh-CN", 1, "公元" }; + yield return new object[] { "zh-Hans-HK", 1, "公元" }; + yield return new object[] { "zh-SG", 1, "公元" }; + yield return new object[] { "zh-HK", 1, "公元" }; + yield return new object[] { "zh-TW", 1, "西元" }; } } [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnOSX))] [MemberData(nameof(GetAbbreviatedEraName_TestData))] - public void GetAbbreviatedEraName_Invoke_ReturnsExpected(DateTimeFormatInfo format, int era, string expected) + public void GetAbbreviatedEraName_Invoke_ReturnsExpected(string cultureName, int era, string expected) { - Assert.Equal(expected, format.GetAbbreviatedEraName(era)); + var format = cultureName == "invariant" ? new DateTimeFormatInfo() : new CultureInfo(cultureName).DateTimeFormat; + var eraName = format.GetAbbreviatedEraName(era); + Assert.True(expected == eraName, $"Failed for culture: {cultureName}. Expected: {expected}, Actual: {eraName}"); } [Theory] diff --git a/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoGetEraName.cs b/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoGetEraName.cs index 054ab01f72619..93dda71911fe3 100644 --- a/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoGetEraName.cs +++ b/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoGetEraName.cs @@ -10,403 +10,405 @@ public class DateTimeFormatInfoGetEraName { public static IEnumerable GetEraName_TestData() { - yield return new object[] { DateTimeFormatInfo.InvariantInfo, 1, "A.D." }; - yield return new object[] { DateTimeFormatInfo.InvariantInfo, 0, "A.D." }; + yield return new object[] { "invariant", 1, "A.D." }; + yield return new object[] { "invariant", 0, "A.D." }; if (!PlatformDetection.IsHybridGlobalizationOnBrowser) { - var enUSFormat = new CultureInfo("en-US").DateTimeFormat; - yield return new object[] { enUSFormat, 1, DateTimeFormatInfoData.EnUSEraName() }; - yield return new object[] { enUSFormat, 0, DateTimeFormatInfoData.EnUSEraName() }; + var enUS = "en-US"; + yield return new object[] { enUS, 1, DateTimeFormatInfoData.EnUSEraName() }; + yield return new object[] { enUS, 0, DateTimeFormatInfoData.EnUSEraName() }; - var frRFormat = new CultureInfo("fr-FR").DateTimeFormat; - yield return new object[] { frRFormat, 1, "ap. J.-C." }; - yield return new object[] { frRFormat, 0, "ap. J.-C." }; + var frFR = "fr-FR"; + yield return new object[] { frFR, 1, "ap. J.-C." }; + yield return new object[] { frFR, 0, "ap. J.-C." }; } else { - yield return new object[] { new CultureInfo("ar-SA").DateTimeFormat, 0, "بعد الهجرة" }; - yield return new object[] { new CultureInfo("ar-SA").DateTimeFormat, 1, "بعد الهجرة" }; - yield return new object[] { new CultureInfo("am-ET").DateTimeFormat, 0, "ዓ/ም" }; - yield return new object[] { new CultureInfo("am-ET").DateTimeFormat, 1, "ዓ/ም" }; - yield return new object[] { new CultureInfo("bg-BG").DateTimeFormat, 0, "сл.Хр." }; - yield return new object[] { new CultureInfo("bg-BG").DateTimeFormat, 1, "сл.Хр." }; - yield return new object[] { new CultureInfo("bn-BD").DateTimeFormat, 0, "খৃষ্টাব্দ" }; - yield return new object[] { new CultureInfo("bn-BD").DateTimeFormat, 1, "খৃষ্টাব্দ" }; - yield return new object[] { new CultureInfo("bn-IN").DateTimeFormat, 0, "খ্রিঃ" }; - yield return new object[] { new CultureInfo("bn-IN").DateTimeFormat, 1, "খ্রিঃ" }; - yield return new object[] { new CultureInfo("ca-AD").DateTimeFormat, 0, "dC" }; - yield return new object[] { new CultureInfo("ca-AD").DateTimeFormat, 1, "dC" }; - yield return new object[] { new CultureInfo("ca-ES").DateTimeFormat, 0, "dC" }; - yield return new object[] { new CultureInfo("ca-ES").DateTimeFormat, 1, "dC" }; - yield return new object[] { new CultureInfo("cs-CZ").DateTimeFormat, 0, "n. l." }; - yield return new object[] { new CultureInfo("cs-CZ").DateTimeFormat, 1, "n. l." }; - yield return new object[] { new CultureInfo("da-DK").DateTimeFormat, 0, "e.Kr." }; - yield return new object[] { new CultureInfo("da-DK").DateTimeFormat, 1, "e.Kr." }; - yield return new object[] { new CultureInfo("de-AT").DateTimeFormat, 0, "n. Chr." }; - yield return new object[] { new CultureInfo("de-AT").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("de-BE").DateTimeFormat, 0, "n. Chr." }; - yield return new object[] { new CultureInfo("de-BE").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("de-CH").DateTimeFormat, 0, "n. Chr." }; - yield return new object[] { new CultureInfo("de-CH").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("de-DE").DateTimeFormat, 0, "n. Chr." }; - yield return new object[] { new CultureInfo("de-DE").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("de-IT").DateTimeFormat, 0, "n. Chr." }; - yield return new object[] { new CultureInfo("de-IT").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("de-LI").DateTimeFormat, 0, "n. Chr." }; - yield return new object[] { new CultureInfo("de-LI").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("de-LU").DateTimeFormat, 0, "n. Chr." }; - yield return new object[] { new CultureInfo("de-LU").DateTimeFormat, 1, "n. Chr." }; - yield return new object[] { new CultureInfo("el-CY").DateTimeFormat, 0, "μ.Χ." }; - yield return new object[] { new CultureInfo("el-CY").DateTimeFormat, 1, "μ.Χ." }; - yield return new object[] { new CultureInfo("el-GR").DateTimeFormat, 0, "μ.Χ." }; - yield return new object[] { new CultureInfo("el-GR").DateTimeFormat, 1, "μ.Χ." }; - yield return new object[] { new CultureInfo("en-AE").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-AE").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-AG").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-AG").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-AI").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-AI").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-AS").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-AS").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-AT").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-AT").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-AU").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-AU").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-BB").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-BB").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-BE").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-BE").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-BI").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-BI").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-BM").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-BM").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-BS").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-BS").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-BW").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-BW").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-BZ").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-BZ").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-CA").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-CA").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-CC").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-CC").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-CH").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-CH").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-CK").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-CK").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-CM").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-CM").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-CX").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-CX").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-CY").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-CY").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-DE").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-DE").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-DK").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-DK").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-DM").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-DM").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-ER").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-ER").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-FI").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-FI").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-FJ").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-FJ").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-FK").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-FK").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-FM").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-FM").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-GB").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-GB").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-GD").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-GD").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-GG").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-GG").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-GH").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-GH").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-GI").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-GI").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-GM").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-GM").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-GU").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-GU").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-GY").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-GY").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-HK").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-HK").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-IE").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-IE").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-IL").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-IL").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-IM").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-IM").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-IN").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-IN").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-IO").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-IO").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-JE").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-JE").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-JM").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-JM").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-KE").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-KE").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-KI").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-KI").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-KN").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-KN").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-KY").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-KY").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-LC").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-LC").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-LR").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-LR").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-LS").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-LS").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-MG").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-MG").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-MH").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-MH").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-MO").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-MO").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-MP").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-MP").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-MS").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-MS").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-MT").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-MT").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-MU").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-MU").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-MW").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-MW").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-MY").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-MY").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-NA").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-NA").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-NF").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-NF").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-NG").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-NG").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-NL").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-NL").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-NR").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-NR").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-NU").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-NU").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-NZ").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-NZ").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-PG").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-PG").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-PH").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-PH").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-PK").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-PK").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-PN").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-PN").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-PR").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-PR").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-PW").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-PW").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-RW").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-RW").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-SB").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-SB").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-SC").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-SC").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-SD").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-SD").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-SE").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-SE").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-SG").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-SG").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-SH").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-SH").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-SI").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-SI").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-SL").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-SL").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-SS").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-SS").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-SX").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-SX").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-SZ").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-SZ").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-TC").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-TC").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-TK").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-TK").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-TO").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-TO").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-TT").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-TT").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-TV").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-TV").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-TZ").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-TZ").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-UG").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-UG").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-UM").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-UM").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-VC").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-VC").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-VG").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-VG").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-VI").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-VI").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-VU").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-VU").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-WS").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-WS").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-ZA").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-ZA").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-ZM").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-ZM").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-ZW").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-ZW").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("es-ES").DateTimeFormat, 0, "d. C." }; - yield return new object[] { new CultureInfo("es-ES").DateTimeFormat, 1, "d. C." }; - yield return new object[] { new CultureInfo("es-419").DateTimeFormat, 0, "d.C." }; - yield return new object[] { new CultureInfo("es-419").DateTimeFormat, 1, "d.C."}; - yield return new object[] { new CultureInfo("es-MX").DateTimeFormat, 0, "d.C." }; - yield return new object[] { new CultureInfo("es-MX").DateTimeFormat, 1, "d.C." }; - yield return new object[] { new CultureInfo("et-EE").DateTimeFormat, 0, "pKr" }; - yield return new object[] { new CultureInfo("et-EE").DateTimeFormat, 1, "pKr" }; - yield return new object[] { new CultureInfo("fa-IR").DateTimeFormat, 0, "ه.ش" }; // ه‍.ش. - yield return new object[] { new CultureInfo("fa-IR").DateTimeFormat, 1, "ه.ش" }; - yield return new object[] { new CultureInfo("fi-FI").DateTimeFormat, 0, "jKr." }; - yield return new object[] { new CultureInfo("fi-FI").DateTimeFormat, 1, "jKr." }; - yield return new object[] { new CultureInfo("fil-PH").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("fil-PH").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("fr-BE").DateTimeFormat, 0, "ap. J.-C." }; - yield return new object[] { new CultureInfo("fr-BE").DateTimeFormat, 1, "ap. J.-C." }; - yield return new object[] { new CultureInfo("fr-CA").DateTimeFormat, 0, "ap. J.-C." }; - yield return new object[] { new CultureInfo("fr-CA").DateTimeFormat, 1, "ap. J.-C." }; - yield return new object[] { new CultureInfo("fr-CH").DateTimeFormat, 0, "ap. J.-C." }; - yield return new object[] { new CultureInfo("fr-CH").DateTimeFormat, 1, "ap. J.-C." }; - yield return new object[] { new CultureInfo("fr-FR").DateTimeFormat, 0, "ap. J.-C." }; - yield return new object[] { new CultureInfo("fr-FR").DateTimeFormat, 1, "ap. J.-C." }; - yield return new object[] { new CultureInfo("gu-IN").DateTimeFormat, 0, "ઈ.સ." }; - yield return new object[] { new CultureInfo("gu-IN").DateTimeFormat, 1, "ઈ.સ." }; - yield return new object[] { new CultureInfo("he-IL").DateTimeFormat, 0, "לספירה" }; - yield return new object[] { new CultureInfo("he-IL").DateTimeFormat, 1, "לספירה" }; - yield return new object[] { new CultureInfo("hi-IN").DateTimeFormat, 0, "ईस्वी" }; - yield return new object[] { new CultureInfo("hi-IN").DateTimeFormat, 1, "ईस्वी" }; - yield return new object[] { new CultureInfo("hr-BA").DateTimeFormat, 0, "po. Kr." }; - yield return new object[] { new CultureInfo("hr-BA").DateTimeFormat, 1, "po. Kr." }; - yield return new object[] { new CultureInfo("hr-HR").DateTimeFormat, 0, "po. Kr." }; - yield return new object[] { new CultureInfo("hr-HR").DateTimeFormat, 1, "po. Kr." }; - yield return new object[] { new CultureInfo("hu-HU").DateTimeFormat, 0, "i. sz." }; - yield return new object[] { new CultureInfo("hu-HU").DateTimeFormat, 1, "i. sz." }; - yield return new object[] { new CultureInfo("id-ID").DateTimeFormat, 0, "M" }; - yield return new object[] { new CultureInfo("id-ID").DateTimeFormat, 1, "M" }; - yield return new object[] { new CultureInfo("it-CH").DateTimeFormat, 0, "d.C." }; - yield return new object[] { new CultureInfo("it-CH").DateTimeFormat, 1, "d.C." }; - yield return new object[] { new CultureInfo("it-IT").DateTimeFormat, 0, "d.C." }; - yield return new object[] { new CultureInfo("it-IT").DateTimeFormat, 1, "d.C." }; - yield return new object[] { new CultureInfo("ja-JP").DateTimeFormat, 0, "西暦" }; - yield return new object[] { new CultureInfo("ja-JP").DateTimeFormat, 1, "西暦" }; - yield return new object[] { new CultureInfo("kn-IN").DateTimeFormat, 0, "ಕ್ರಿ.ಶ" }; - yield return new object[] { new CultureInfo("kn-IN").DateTimeFormat, 1, "ಕ್ರಿ.ಶ" }; - yield return new object[] { new CultureInfo("ko-KR").DateTimeFormat, 0, "AD" }; - yield return new object[] { new CultureInfo("ko-KR").DateTimeFormat, 1, "AD" }; - yield return new object[] { new CultureInfo("lt-LT").DateTimeFormat, 0, "po Kr." }; - yield return new object[] { new CultureInfo("lt-LT").DateTimeFormat, 1, "po Kr." }; - yield return new object[] { new CultureInfo("lv-LV").DateTimeFormat, 0, "m.ē." }; - yield return new object[] { new CultureInfo("lv-LV").DateTimeFormat, 1, "m.ē." }; - yield return new object[] { new CultureInfo("ml-IN").DateTimeFormat, 0, "എഡി" }; - yield return new object[] { new CultureInfo("ml-IN").DateTimeFormat, 1, "എഡി" }; - yield return new object[] { new CultureInfo("mr-IN").DateTimeFormat, 0, "इ. स." }; - yield return new object[] { new CultureInfo("mr-IN").DateTimeFormat, 1, "इ. स." }; - yield return new object[] { new CultureInfo("ms-BN").DateTimeFormat, 0, "TM" }; - yield return new object[] { new CultureInfo("ms-BN").DateTimeFormat, 1, "TM" }; - yield return new object[] { new CultureInfo("ms-MY").DateTimeFormat, 0, "TM" }; - yield return new object[] { new CultureInfo("ms-MY").DateTimeFormat, 1, "TM" }; - yield return new object[] { new CultureInfo("ms-SG").DateTimeFormat, 0, "TM" }; - yield return new object[] { new CultureInfo("ms-SG").DateTimeFormat, 1, "TM" }; - yield return new object[] { new CultureInfo("nb-NO").DateTimeFormat, 0, "e.Kr." }; - yield return new object[] { new CultureInfo("nb-NO").DateTimeFormat, 1, "e.Kr." }; - yield return new object[] { new CultureInfo("no").DateTimeFormat, 0, "e.Kr." }; - yield return new object[] { new CultureInfo("no").DateTimeFormat, 1, "e.Kr." }; - yield return new object[] { new CultureInfo("no-NO").DateTimeFormat, 0, "e.Kr." }; - yield return new object[] { new CultureInfo("no-NO").DateTimeFormat, 1, "e.Kr." }; - yield return new object[] { new CultureInfo("nl-AW").DateTimeFormat, 0, "n.Chr." }; - yield return new object[] { new CultureInfo("nl-AW").DateTimeFormat, 1, "n.Chr." }; - yield return new object[] { new CultureInfo("nl-BE").DateTimeFormat, 0, "n.Chr." }; - yield return new object[] { new CultureInfo("nl-BE").DateTimeFormat, 1, "n.Chr." }; - yield return new object[] { new CultureInfo("nl-NL").DateTimeFormat, 0, "n.Chr." }; - yield return new object[] { new CultureInfo("nl-NL").DateTimeFormat, 1, "n.Chr." }; - yield return new object[] { new CultureInfo("pl-PL").DateTimeFormat, 0, "n.e." }; - yield return new object[] { new CultureInfo("pl-PL").DateTimeFormat, 1, "n.e." }; - yield return new object[] { new CultureInfo("pt-BR").DateTimeFormat, 0, "d.C." }; - yield return new object[] { new CultureInfo("pt-BR").DateTimeFormat, 1, "d.C." }; - yield return new object[] { new CultureInfo("pt-PT").DateTimeFormat, 0, "d.C." }; - yield return new object[] { new CultureInfo("pt-PT").DateTimeFormat, 1, "d.C." }; - yield return new object[] { new CultureInfo("ro-RO").DateTimeFormat, 0, "d.Hr." }; - yield return new object[] { new CultureInfo("ro-RO").DateTimeFormat, 1, "d.Hr." }; - yield return new object[] { new CultureInfo("ru-RU").DateTimeFormat, 0, "н. э." }; - yield return new object[] { new CultureInfo("ru-RU").DateTimeFormat, 1, "н. э." }; - yield return new object[] { new CultureInfo("sk-SK").DateTimeFormat, 0, "po Kr." }; - yield return new object[] { new CultureInfo("sk-SK").DateTimeFormat, 1, "po Kr." }; - yield return new object[] { new CultureInfo("sl-SI").DateTimeFormat, 0, "po Kr." }; - yield return new object[] { new CultureInfo("sl-SI").DateTimeFormat, 1, "po Kr." }; - yield return new object[] { new CultureInfo("sr-Cyrl-RS").DateTimeFormat, 0, "н. е." }; - yield return new object[] { new CultureInfo("sr-Cyrl-RS").DateTimeFormat, 1, "н. е." }; - yield return new object[] { new CultureInfo("sr-Latn-RS").DateTimeFormat, 0, "n. e." }; - yield return new object[] { new CultureInfo("sr-Latn-RS").DateTimeFormat, 1, "n. e." }; - yield return new object[] { new CultureInfo("sv-AX").DateTimeFormat, 0, "e.Kr." }; - yield return new object[] { new CultureInfo("sv-AX").DateTimeFormat, 1, "e.Kr." }; - yield return new object[] { new CultureInfo("sv-SE").DateTimeFormat, 0, "e.Kr." }; - yield return new object[] { new CultureInfo("sv-SE").DateTimeFormat, 1, "e.Kr." }; - yield return new object[] { new CultureInfo("sw-CD").DateTimeFormat, 0, "BK" }; - yield return new object[] { new CultureInfo("sw-CD").DateTimeFormat, 1, "BK" }; - yield return new object[] { new CultureInfo("sw-KE").DateTimeFormat, 0, "BK" }; - yield return new object[] { new CultureInfo("sw-KE").DateTimeFormat, 1, "BK" }; - yield return new object[] { new CultureInfo("sw-TZ").DateTimeFormat, 0, "BK" }; - yield return new object[] { new CultureInfo("sw-TZ").DateTimeFormat, 1, "BK" }; - yield return new object[] { new CultureInfo("sw-UG").DateTimeFormat, 0, "BK" }; - yield return new object[] { new CultureInfo("sw-UG").DateTimeFormat, 1, "BK" }; - yield return new object[] { new CultureInfo("ta-IN").DateTimeFormat, 0, "கி.பி." }; - yield return new object[] { new CultureInfo("ta-IN").DateTimeFormat, 1, "கி.பி." }; - yield return new object[] { new CultureInfo("ta-LK").DateTimeFormat, 0, "கி.பி." }; - yield return new object[] { new CultureInfo("ta-LK").DateTimeFormat, 1, "கி.பி." }; - yield return new object[] { new CultureInfo("ta-MY").DateTimeFormat, 0, "கி.பி." }; - yield return new object[] { new CultureInfo("ta-MY").DateTimeFormat, 1, "கி.பி." }; - yield return new object[] { new CultureInfo("ta-SG").DateTimeFormat, 0, "கி.பி." }; - yield return new object[] { new CultureInfo("ta-SG").DateTimeFormat, 1, "கி.பி." }; - yield return new object[] { new CultureInfo("te-IN").DateTimeFormat, 0, "క్రీశ" }; - yield return new object[] { new CultureInfo("te-IN").DateTimeFormat, 1, "క్రీశ" }; - yield return new object[] { new CultureInfo("th-TH").DateTimeFormat, 0, "พ.ศ." }; - yield return new object[] { new CultureInfo("th-TH").DateTimeFormat, 1, "พ.ศ." }; - yield return new object[] { new CultureInfo("tr-CY").DateTimeFormat, 0, "MS" }; - yield return new object[] { new CultureInfo("tr-CY").DateTimeFormat, 1, "MS" }; - yield return new object[] { new CultureInfo("tr-TR").DateTimeFormat, 0, "MS" }; - yield return new object[] { new CultureInfo("tr-TR").DateTimeFormat, 1, "MS" }; - yield return new object[] { new CultureInfo("uk-UA").DateTimeFormat, 0, "н. е." }; - yield return new object[] { new CultureInfo("uk-UA").DateTimeFormat, 1, "н. е." }; - yield return new object[] { new CultureInfo("vi-VN").DateTimeFormat, 0, "CN" }; // sau CN - yield return new object[] { new CultureInfo("vi-VN").DateTimeFormat, 1, "CN" }; // sau CN - yield return new object[] { new CultureInfo("zh-CN").DateTimeFormat, 0, "公元" }; - yield return new object[] { new CultureInfo("zh-CN").DateTimeFormat, 1, "公元" }; - yield return new object[] { new CultureInfo("zh-Hans-HK").DateTimeFormat, 0, "公元" }; - yield return new object[] { new CultureInfo("zh-Hans-HK").DateTimeFormat, 1, "公元" }; - yield return new object[] { new CultureInfo("zh-SG").DateTimeFormat, 0, "公元" }; - yield return new object[] { new CultureInfo("zh-SG").DateTimeFormat, 1, "公元" }; - yield return new object[] { new CultureInfo("zh-HK").DateTimeFormat, 0, "公元" }; - yield return new object[] { new CultureInfo("zh-HK").DateTimeFormat, 1, "公元" }; - yield return new object[] { new CultureInfo("zh-TW").DateTimeFormat, 0, "西元" }; - yield return new object[] { new CultureInfo("zh-TW").DateTimeFormat, 1, "西元" }; + yield return new object[] { "ar-SA", 0, "بعد الهجرة" }; + yield return new object[] { "ar-SA", 1, "بعد الهجرة" }; + yield return new object[] { "am-ET", 0, "ዓ/ም" }; + yield return new object[] { "am-ET", 1, "ዓ/ም" }; + yield return new object[] { "bg-BG", 0, "сл.Хр." }; + yield return new object[] { "bg-BG", 1, "сл.Хр." }; + yield return new object[] { "bn-BD", 0, "খৃষ্টাব্দ" }; + yield return new object[] { "bn-BD", 1, "খৃষ্টাব্দ" }; + yield return new object[] { "bn-IN", 0, PlatformDetection.IsNodeJSOnWindows ? "খৃষ্টাব্দ" : "খ্রিঃ" }; + yield return new object[] { "bn-IN", 1, PlatformDetection.IsNodeJSOnWindows ? "খৃষ্টাব্দ" : "খ্রিঃ" }; + yield return new object[] { "ca-AD", 0, "dC" }; + yield return new object[] { "ca-AD", 1, "dC" }; + yield return new object[] { "ca-ES", 0, "dC" }; + yield return new object[] { "ca-ES", 1, "dC" }; + yield return new object[] { "cs-CZ", 0, "n. l." }; + yield return new object[] { "cs-CZ", 1, "n. l." }; + yield return new object[] { "da-DK", 0, "e.Kr." }; + yield return new object[] { "da-DK", 1, "e.Kr." }; + yield return new object[] { "de-AT", 0, "n. Chr." }; + yield return new object[] { "de-AT", 1, "n. Chr." }; + yield return new object[] { "de-BE", 0, "n. Chr." }; + yield return new object[] { "de-BE", 1, "n. Chr." }; + yield return new object[] { "de-CH", 0, "n. Chr." }; + yield return new object[] { "de-CH", 1, "n. Chr." }; + yield return new object[] { "de-DE", 0, "n. Chr." }; + yield return new object[] { "de-DE", 1, "n. Chr." }; + yield return new object[] { "de-IT", 0, "n. Chr." }; + yield return new object[] { "de-IT", 1, "n. Chr." }; + yield return new object[] { "de-LI", 0, "n. Chr." }; + yield return new object[] { "de-LI", 1, "n. Chr." }; + yield return new object[] { "de-LU", 0, "n. Chr." }; + yield return new object[] { "de-LU", 1, "n. Chr." }; + yield return new object[] { "el-CY", 0, "μ.Χ." }; + yield return new object[] { "el-CY", 1, "μ.Χ." }; + yield return new object[] { "el-GR", 0, "μ.Χ." }; + yield return new object[] { "el-GR", 1, "μ.Χ." }; + yield return new object[] { "en-AE", 0, "AD" }; + yield return new object[] { "en-AE", 1, "AD" }; + yield return new object[] { "en-AG", 0, "AD" }; + yield return new object[] { "en-AG", 1, "AD" }; + yield return new object[] { "en-AI", 0, "AD" }; + yield return new object[] { "en-AI", 1, "AD" }; + yield return new object[] { "en-AS", 0, "AD" }; + yield return new object[] { "en-AS", 1, "AD" }; + yield return new object[] { "en-AT", 0, "AD" }; + yield return new object[] { "en-AT", 1, "AD" }; + yield return new object[] { "en-AU", 0, "AD" }; + yield return new object[] { "en-AU", 1, "AD" }; + yield return new object[] { "en-BB", 0, "AD" }; + yield return new object[] { "en-BB", 1, "AD" }; + yield return new object[] { "en-BE", 0, "AD" }; + yield return new object[] { "en-BE", 1, "AD" }; + yield return new object[] { "en-BI", 0, "AD" }; + yield return new object[] { "en-BI", 1, "AD" }; + yield return new object[] { "en-BM", 0, "AD" }; + yield return new object[] { "en-BM", 1, "AD" }; + yield return new object[] { "en-BS", 0, "AD" }; + yield return new object[] { "en-BS", 1, "AD" }; + yield return new object[] { "en-BW", 0, "AD" }; + yield return new object[] { "en-BW", 1, "AD" }; + yield return new object[] { "en-BZ", 0, "AD" }; + yield return new object[] { "en-BZ", 1, "AD" }; + yield return new object[] { "en-CA", 0, "AD" }; + yield return new object[] { "en-CA", 1, "AD" }; + yield return new object[] { "en-CC", 0, "AD" }; + yield return new object[] { "en-CC", 1, "AD" }; + yield return new object[] { "en-CH", 0, "AD" }; + yield return new object[] { "en-CH", 1, "AD" }; + yield return new object[] { "en-CK", 0, "AD" }; + yield return new object[] { "en-CK", 1, "AD" }; + yield return new object[] { "en-CM", 0, "AD" }; + yield return new object[] { "en-CM", 1, "AD" }; + yield return new object[] { "en-CX", 0, "AD" }; + yield return new object[] { "en-CX", 1, "AD" }; + yield return new object[] { "en-CY", 0, "AD" }; + yield return new object[] { "en-CY", 1, "AD" }; + yield return new object[] { "en-DE", 0, "AD" }; + yield return new object[] { "en-DE", 1, "AD" }; + yield return new object[] { "en-DK", 0, "AD" }; + yield return new object[] { "en-DK", 1, "AD" }; + yield return new object[] { "en-DM", 0, "AD" }; + yield return new object[] { "en-DM", 1, "AD" }; + yield return new object[] { "en-ER", 0, "AD" }; + yield return new object[] { "en-ER", 1, "AD" }; + yield return new object[] { "en-FI", 0, "AD" }; + yield return new object[] { "en-FI", 1, "AD" }; + yield return new object[] { "en-FJ", 0, "AD" }; + yield return new object[] { "en-FJ", 1, "AD" }; + yield return new object[] { "en-FK", 0, "AD" }; + yield return new object[] { "en-FK", 1, "AD" }; + yield return new object[] { "en-FM", 0, "AD" }; + yield return new object[] { "en-FM", 1, "AD" }; + yield return new object[] { "en-GB", 0, "AD" }; + yield return new object[] { "en-GB", 1, "AD" }; + yield return new object[] { "en-GD", 0, "AD" }; + yield return new object[] { "en-GD", 1, "AD" }; + yield return new object[] { "en-GG", 0, "AD" }; + yield return new object[] { "en-GG", 1, "AD" }; + yield return new object[] { "en-GH", 0, "AD" }; + yield return new object[] { "en-GH", 1, "AD" }; + yield return new object[] { "en-GI", 0, "AD" }; + yield return new object[] { "en-GI", 1, "AD" }; + yield return new object[] { "en-GM", 0, "AD" }; + yield return new object[] { "en-GM", 1, "AD" }; + yield return new object[] { "en-GU", 0, "AD" }; + yield return new object[] { "en-GU", 1, "AD" }; + yield return new object[] { "en-GY", 0, "AD" }; + yield return new object[] { "en-GY", 1, "AD" }; + yield return new object[] { "en-HK", 0, "AD" }; + yield return new object[] { "en-HK", 1, "AD" }; + yield return new object[] { "en-IE", 0, "AD" }; + yield return new object[] { "en-IE", 1, "AD" }; + yield return new object[] { "en-IL", 0, "AD" }; + yield return new object[] { "en-IL", 1, "AD" }; + yield return new object[] { "en-IM", 0, "AD" }; + yield return new object[] { "en-IM", 1, "AD" }; + yield return new object[] { "en-IN", 0, "AD" }; + yield return new object[] { "en-IN", 1, "AD" }; + yield return new object[] { "en-IO", 0, "AD" }; + yield return new object[] { "en-IO", 1, "AD" }; + yield return new object[] { "en-JE", 0, "AD" }; + yield return new object[] { "en-JE", 1, "AD" }; + yield return new object[] { "en-JM", 0, "AD" }; + yield return new object[] { "en-JM", 1, "AD" }; + yield return new object[] { "en-KE", 0, "AD" }; + yield return new object[] { "en-KE", 1, "AD" }; + yield return new object[] { "en-KI", 0, "AD" }; + yield return new object[] { "en-KI", 1, "AD" }; + yield return new object[] { "en-KN", 0, "AD" }; + yield return new object[] { "en-KN", 1, "AD" }; + yield return new object[] { "en-KY", 0, "AD" }; + yield return new object[] { "en-KY", 1, "AD" }; + yield return new object[] { "en-LC", 0, "AD" }; + yield return new object[] { "en-LC", 1, "AD" }; + yield return new object[] { "en-LR", 0, "AD" }; + yield return new object[] { "en-LR", 1, "AD" }; + yield return new object[] { "en-LS", 0, "AD" }; + yield return new object[] { "en-LS", 1, "AD" }; + yield return new object[] { "en-MG", 0, "AD" }; + yield return new object[] { "en-MG", 1, "AD" }; + yield return new object[] { "en-MH", 0, "AD" }; + yield return new object[] { "en-MH", 1, "AD" }; + yield return new object[] { "en-MO", 0, "AD" }; + yield return new object[] { "en-MO", 1, "AD" }; + yield return new object[] { "en-MP", 0, "AD" }; + yield return new object[] { "en-MP", 1, "AD" }; + yield return new object[] { "en-MS", 0, "AD" }; + yield return new object[] { "en-MS", 1, "AD" }; + yield return new object[] { "en-MT", 0, "AD" }; + yield return new object[] { "en-MT", 1, "AD" }; + yield return new object[] { "en-MU", 0, "AD" }; + yield return new object[] { "en-MU", 1, "AD" }; + yield return new object[] { "en-MW", 0, "AD" }; + yield return new object[] { "en-MW", 1, "AD" }; + yield return new object[] { "en-MY", 0, "AD" }; + yield return new object[] { "en-MY", 1, "AD" }; + yield return new object[] { "en-NA", 0, "AD" }; + yield return new object[] { "en-NA", 1, "AD" }; + yield return new object[] { "en-NF", 0, "AD" }; + yield return new object[] { "en-NF", 1, "AD" }; + yield return new object[] { "en-NG", 0, "AD" }; + yield return new object[] { "en-NG", 1, "AD" }; + yield return new object[] { "en-NL", 0, "AD" }; + yield return new object[] { "en-NL", 1, "AD" }; + yield return new object[] { "en-NR", 0, "AD" }; + yield return new object[] { "en-NR", 1, "AD" }; + yield return new object[] { "en-NU", 0, "AD" }; + yield return new object[] { "en-NU", 1, "AD" }; + yield return new object[] { "en-NZ", 0, "AD" }; + yield return new object[] { "en-NZ", 1, "AD" }; + yield return new object[] { "en-PG", 0, "AD" }; + yield return new object[] { "en-PG", 1, "AD" }; + yield return new object[] { "en-PH", 0, "AD" }; + yield return new object[] { "en-PH", 1, "AD" }; + yield return new object[] { "en-PK", 0, "AD" }; + yield return new object[] { "en-PK", 1, "AD" }; + yield return new object[] { "en-PN", 0, "AD" }; + yield return new object[] { "en-PN", 1, "AD" }; + yield return new object[] { "en-PR", 0, "AD" }; + yield return new object[] { "en-PR", 1, "AD" }; + yield return new object[] { "en-PW", 0, "AD" }; + yield return new object[] { "en-PW", 1, "AD" }; + yield return new object[] { "en-RW", 0, "AD" }; + yield return new object[] { "en-RW", 1, "AD" }; + yield return new object[] { "en-SB", 0, "AD" }; + yield return new object[] { "en-SB", 1, "AD" }; + yield return new object[] { "en-SC", 0, "AD" }; + yield return new object[] { "en-SC", 1, "AD" }; + yield return new object[] { "en-SD", 0, "AD" }; + yield return new object[] { "en-SD", 1, "AD" }; + yield return new object[] { "en-SE", 0, "AD" }; + yield return new object[] { "en-SE", 1, "AD" }; + yield return new object[] { "en-SG", 0, "AD" }; + yield return new object[] { "en-SG", 1, "AD" }; + yield return new object[] { "en-SH", 0, "AD" }; + yield return new object[] { "en-SH", 1, "AD" }; + yield return new object[] { "en-SI", 0, "AD" }; + yield return new object[] { "en-SI", 1, "AD" }; + yield return new object[] { "en-SL", 0, "AD" }; + yield return new object[] { "en-SL", 1, "AD" }; + yield return new object[] { "en-SS", 0, "AD" }; + yield return new object[] { "en-SS", 1, "AD" }; + yield return new object[] { "en-SX", 0, "AD" }; + yield return new object[] { "en-SX", 1, "AD" }; + yield return new object[] { "en-SZ", 0, "AD" }; + yield return new object[] { "en-SZ", 1, "AD" }; + yield return new object[] { "en-TC", 0, "AD" }; + yield return new object[] { "en-TC", 1, "AD" }; + yield return new object[] { "en-TK", 0, "AD" }; + yield return new object[] { "en-TK", 1, "AD" }; + yield return new object[] { "en-TO", 0, "AD" }; + yield return new object[] { "en-TO", 1, "AD" }; + yield return new object[] { "en-TT", 0, "AD" }; + yield return new object[] { "en-TT", 1, "AD" }; + yield return new object[] { "en-TV", 0, "AD" }; + yield return new object[] { "en-TV", 1, "AD" }; + yield return new object[] { "en-TZ", 0, "AD" }; + yield return new object[] { "en-TZ", 1, "AD" }; + yield return new object[] { "en-UG", 0, "AD" }; + yield return new object[] { "en-UG", 1, "AD" }; + yield return new object[] { "en-UM", 0, "AD" }; + yield return new object[] { "en-UM", 1, "AD" }; + yield return new object[] { "en-US", 0, "AD" }; + yield return new object[] { "en-US", 1, "AD" }; + yield return new object[] { "en-VC", 0, "AD" }; + yield return new object[] { "en-VC", 1, "AD" }; + yield return new object[] { "en-VG", 0, "AD" }; + yield return new object[] { "en-VG", 1, "AD" }; + yield return new object[] { "en-VI", 0, "AD" }; + yield return new object[] { "en-VI", 1, "AD" }; + yield return new object[] { "en-VU", 0, "AD" }; + yield return new object[] { "en-VU", 1, "AD" }; + yield return new object[] { "en-WS", 0, "AD" }; + yield return new object[] { "en-WS", 1, "AD" }; + yield return new object[] { "en-ZA", 0, "AD" }; + yield return new object[] { "en-ZA", 1, "AD" }; + yield return new object[] { "en-ZM", 0, "AD" }; + yield return new object[] { "en-ZM", 1, "AD" }; + yield return new object[] { "en-ZW", 0, "AD" }; + yield return new object[] { "en-ZW", 1, "AD" }; + yield return new object[] { "en-US", 0, "AD" }; + yield return new object[] { "en-US", 1, "AD" }; + yield return new object[] { "es-ES", 0, "d. C." }; + yield return new object[] { "es-ES", 1, "d. C." }; + yield return new object[] { "es-419", 0, PlatformDetection.IsNodeJSOnWindows ? "d. C." : "d.C." }; + yield return new object[] { "es-419", 1, PlatformDetection.IsNodeJSOnWindows ? "d. C." : "d.C." }; + yield return new object[] { "es-MX", 0, PlatformDetection.IsNodeJSOnWindows ? "d. C." : "d.C." }; + yield return new object[] { "es-MX", 1, PlatformDetection.IsNodeJSOnWindows ? "d. C." : "d.C." }; + yield return new object[] { "et-EE", 0, "pKr" }; + yield return new object[] { "et-EE", 1, "pKr" }; + yield return new object[] { "fa-IR", 0, "ه.ش" }; // ه‍.ش. + yield return new object[] { "fa-IR", 1, "ه.ش" }; + yield return new object[] { "fi-FI", 0, "jKr." }; + yield return new object[] { "fi-FI", 1, "jKr." }; + yield return new object[] { "fil-PH", 0, "AD" }; + yield return new object[] { "fil-PH", 1, "AD" }; + yield return new object[] { "fr-BE", 0, "ap. J.-C." }; + yield return new object[] { "fr-BE", 1, "ap. J.-C." }; + yield return new object[] { "fr-CA", 0, "ap. J.-C." }; + yield return new object[] { "fr-CA", 1, "ap. J.-C." }; + yield return new object[] { "fr-CH", 0, "ap. J.-C." }; + yield return new object[] { "fr-CH", 1, "ap. J.-C." }; + yield return new object[] { "fr-FR", 0, "ap. J.-C." }; + yield return new object[] { "fr-FR", 1, "ap. J.-C." }; + yield return new object[] { "gu-IN", 0, "ઈ.સ." }; + yield return new object[] { "gu-IN", 1, "ઈ.સ." }; + yield return new object[] { "he-IL", 0, "לספירה" }; + yield return new object[] { "he-IL", 1, "לספירה" }; + yield return new object[] { "hi-IN", 0, "ईस्वी" }; + yield return new object[] { "hi-IN", 1, "ईस्वी" }; + yield return new object[] { "hr-BA", 0, "po. Kr." }; + yield return new object[] { "hr-BA", 1, "po. Kr." }; + yield return new object[] { "hr-HR", 0, "po. Kr." }; + yield return new object[] { "hr-HR", 1, "po. Kr." }; + yield return new object[] { "hu-HU", 0, "i. sz." }; + yield return new object[] { "hu-HU", 1, "i. sz." }; + yield return new object[] { "id-ID", 0, "M" }; + yield return new object[] { "id-ID", 1, "M" }; + yield return new object[] { "it-CH", 0, "d.C." }; + yield return new object[] { "it-CH", 1, "d.C." }; + yield return new object[] { "it-IT", 0, "d.C." }; + yield return new object[] { "it-IT", 1, "d.C." }; + yield return new object[] { "ja-JP", 0, "西暦" }; + yield return new object[] { "ja-JP", 1, "西暦" }; + yield return new object[] { "kn-IN", 0, "ಕ್ರಿ.ಶ" }; + yield return new object[] { "kn-IN", 1, "ಕ್ರಿ.ಶ" }; + yield return new object[] { "ko-KR", 0, "AD" }; + yield return new object[] { "ko-KR", 1, "AD" }; + yield return new object[] { "lt-LT", 0, "po Kr." }; + yield return new object[] { "lt-LT", 1, "po Kr." }; + yield return new object[] { "lv-LV", 0, "m.ē." }; + yield return new object[] { "lv-LV", 1, "m.ē." }; + yield return new object[] { "ml-IN", 0, "എഡി" }; + yield return new object[] { "ml-IN", 1, "എഡി" }; + yield return new object[] { "mr-IN", 0, "इ. स." }; + yield return new object[] { "mr-IN", 1, "इ. स." }; + yield return new object[] { "ms-BN", 0, "TM" }; + yield return new object[] { "ms-BN", 1, "TM" }; + yield return new object[] { "ms-MY", 0, "TM" }; + yield return new object[] { "ms-MY", 1, "TM" }; + yield return new object[] { "ms-SG", 0, "TM" }; + yield return new object[] { "ms-SG", 1, "TM" }; + yield return new object[] { "nb-NO", 0, "e.Kr." }; + yield return new object[] { "nb-NO", 1, "e.Kr." }; + yield return new object[] { "no", 0, "e.Kr." }; + yield return new object[] { "no", 1, "e.Kr." }; + yield return new object[] { "no-NO", 0, "e.Kr." }; + yield return new object[] { "no-NO", 1, "e.Kr." }; + yield return new object[] { "nl-AW", 0, "n.Chr." }; + yield return new object[] { "nl-AW", 1, "n.Chr." }; + yield return new object[] { "nl-BE", 0, "n.Chr." }; + yield return new object[] { "nl-BE", 1, "n.Chr." }; + yield return new object[] { "nl-NL", 0, "n.Chr." }; + yield return new object[] { "nl-NL", 1, "n.Chr." }; + yield return new object[] { "pl-PL", 0, "n.e." }; + yield return new object[] { "pl-PL", 1, "n.e." }; + yield return new object[] { "pt-BR", 0, "d.C." }; + yield return new object[] { "pt-BR", 1, "d.C." }; + yield return new object[] { "pt-PT", 0, "d.C." }; + yield return new object[] { "pt-PT", 1, "d.C." }; + yield return new object[] { "ro-RO", 0, "d.Hr." }; + yield return new object[] { "ro-RO", 1, "d.Hr." }; + yield return new object[] { "ru-RU", 0, "н. э." }; + yield return new object[] { "ru-RU", 1, "н. э." }; + yield return new object[] { "sk-SK", 0, "po Kr." }; + yield return new object[] { "sk-SK", 1, "po Kr." }; + yield return new object[] { "sl-SI", 0, "po Kr." }; + yield return new object[] { "sl-SI", 1, "po Kr." }; + yield return new object[] { "sr-Cyrl-RS", 0, "н. е." }; + yield return new object[] { "sr-Cyrl-RS", 1, "н. е." }; + yield return new object[] { "sr-Latn-RS", 0, "n. e." }; + yield return new object[] { "sr-Latn-RS", 1, "n. e." }; + yield return new object[] { "sv-AX", 0, "e.Kr." }; + yield return new object[] { "sv-AX", 1, "e.Kr." }; + yield return new object[] { "sv-SE", 0, "e.Kr." }; + yield return new object[] { "sv-SE", 1, "e.Kr." }; + yield return new object[] { "sw-CD", 0, "BK" }; + yield return new object[] { "sw-CD", 1, "BK" }; + yield return new object[] { "sw-KE", 0, "BK" }; + yield return new object[] { "sw-KE", 1, "BK" }; + yield return new object[] { "sw-TZ", 0, "BK" }; + yield return new object[] { "sw-TZ", 1, "BK" }; + yield return new object[] { "sw-UG", 0, "BK" }; + yield return new object[] { "sw-UG", 1, "BK" }; + yield return new object[] { "ta-IN", 0, "கி.பி." }; + yield return new object[] { "ta-IN", 1, "கி.பி." }; + yield return new object[] { "ta-LK", 0, "கி.பி." }; + yield return new object[] { "ta-LK", 1, "கி.பி." }; + yield return new object[] { "ta-MY", 0, "கி.பி." }; + yield return new object[] { "ta-MY", 1, "கி.பி." }; + yield return new object[] { "ta-SG", 0, "கி.பி." }; + yield return new object[] { "ta-SG", 1, "கி.பி." }; + yield return new object[] { "te-IN", 0, "క్రీశ" }; + yield return new object[] { "te-IN", 1, "క్రీశ" }; + yield return new object[] { "th-TH", 0, "พ.ศ." }; + yield return new object[] { "th-TH", 1, "พ.ศ." }; + yield return new object[] { "tr-CY", 0, "MS" }; + yield return new object[] { "tr-CY", 1, "MS" }; + yield return new object[] { "tr-TR", 0, "MS" }; + yield return new object[] { "tr-TR", 1, "MS" }; + yield return new object[] { "uk-UA", 0, "н. е." }; + yield return new object[] { "uk-UA", 1, "н. е." }; + yield return new object[] { "vi-VN", 0, PlatformDetection.IsNodeJSOnWindows ? "Sau CN" : "CN" }; // sau CN + yield return new object[] { "vi-VN", 1, PlatformDetection.IsNodeJSOnWindows ? "Sau CN" : "CN" }; // sau CN + yield return new object[] { "zh-CN", 0, "公元" }; + yield return new object[] { "zh-CN", 1, "公元" }; + yield return new object[] { "zh-Hans-HK", 0, "公元" }; + yield return new object[] { "zh-Hans-HK", 1, "公元" }; + yield return new object[] { "zh-SG", 0, "公元" }; + yield return new object[] { "zh-SG", 1, "公元" }; + yield return new object[] { "zh-HK", 0, "公元" }; + yield return new object[] { "zh-HK", 1, "公元" }; + yield return new object[] { "zh-TW", 0, "西元" }; + yield return new object[] { "zh-TW", 1, "西元" }; } } [Theory] [MemberData(nameof(GetEraName_TestData))] - public void GetEraName_Invoke_ReturnsExpected(DateTimeFormatInfo format, int era, string expected) + public void GetEraName_Invoke_ReturnsExpected(string cultureName, int era, string expected) { - Assert.Equal(expected, format.GetEraName(era)); + var format = cultureName == "invariant" ? DateTimeFormatInfo.InvariantInfo : new CultureInfo(cultureName).DateTimeFormat; + var eraName = format.GetEraName(era); + Assert.True(expected == eraName, $"Failed for culture: {cultureName}. Expected: {expected}, Actual: {eraName}"); } [Theory] diff --git a/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoNativeCalendarName.cs b/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoNativeCalendarName.cs index 86507dc1308f1..a554b89fb1c30 100644 --- a/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoNativeCalendarName.cs +++ b/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoNativeCalendarName.cs @@ -11,10 +11,10 @@ public class DateTimeFormatInfoNativeCalendarName public static IEnumerable NativeCalendarName_Get_TestData_HybridGlobalization() { // see the comments on the right to check the non-Hybrid result, in this collection it always differs - string islamicName = "islamic-umalqura"; - string gregorianName = "gregory"; - string persianName = "persian"; - string bhuddistName = "buddhist"; + string islamicName = PlatformDetection.IsNodeJSOnWindows ? "UMALQURA" : "islamic-umalqura"; + string gregorianName = PlatformDetection.IsNodeJSOnWindows ? "GREGORIAN" : "gregory"; + string persianName = PlatformDetection.IsNodeJSOnWindows ? "PERSIAN" : "persian"; + string bhuddistName = PlatformDetection.IsNodeJSOnWindows ? "THAI" : "buddhist"; yield return new object[] { new CultureInfo("ar-SA").DateTimeFormat, islamicName }; // التقويم الإسلامي (أم القرى) yield return new object[] { new CultureInfo("am-ET").DateTimeFormat, gregorianName }; // የግሪጎሪያን የቀን አቆጣጠር yield return new object[] { new CultureInfo("bg-BG").DateTimeFormat, gregorianName }; // григориански календар diff --git a/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoShortDatePattern.cs b/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoShortDatePattern.cs index f594130a3bff2..6b18885611d80 100644 --- a/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoShortDatePattern.cs +++ b/src/libraries/System.Runtime/tests/System.Globalization.Tests/DateTimeFormatInfo/DateTimeFormatInfoShortDatePattern.cs @@ -11,200 +11,201 @@ public class DateTimeFormatInfoShortDatePattern public static IEnumerable ShortDatePattern_Get_TestData_HybridGlobalization() { // see the comments on the right to check the non-Hybrid result, if it differs - yield return new object[] { new CultureInfo("ar-SA").DateTimeFormat, "d\u200f/M\u200f/yyyy" }; // "d\u200f/M\u200f/yyyy g" - yield return new object[] { new CultureInfo("am-ET").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("bg-BG").DateTimeFormat, "d.MM.yyyy г." }; // "d.MM.yyyy 'г'." - yield return new object[] { new CultureInfo("bn-BD").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("bn-IN").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("ca-AD").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("ca-ES").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("cs-CZ").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("da-DK").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("de-AT").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("de-BE").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("de-CH").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("de-DE").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("de-IT").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("de-LI").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("de-LU").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("el-CY").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("el-GR").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("en-AE").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-AG").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-AI").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-AS").DateTimeFormat, "M/d/yyyy" }; - yield return new object[] { new CultureInfo("en-AT").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-AU").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("en-BB").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-BE").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-BI").DateTimeFormat, "M/d/yyyy" }; - yield return new object[] { new CultureInfo("en-BM").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-BS").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-BW").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-BZ").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-CA").DateTimeFormat, "yyyy-MM-dd" }; - yield return new object[] { new CultureInfo("en-CC").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-CH").DateTimeFormat, "dd.MM.yyyy" }; // "dd/MM/yyyy" - yield return new object[] { new CultureInfo("en-CK").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-CM").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-CX").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-CY").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-DE").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-DK").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-DM").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-ER").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-FI").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-FJ").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-FK").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-FM").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-GB").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-GD").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-GG").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-GH").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-GI").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-GM").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-GU").DateTimeFormat, "M/d/yyyy" }; - yield return new object[] { new CultureInfo("en-GY").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-HK").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("en-IE").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-IL").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-IM").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-IN").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-IO").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-JE").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-JM").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-KE").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-KI").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-KN").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-KY").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-LC").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-LR").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-LS").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-MG").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-MH").DateTimeFormat, "M/d/yyyy" }; - yield return new object[] { new CultureInfo("en-MO").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-MP").DateTimeFormat, "M/d/yyyy" }; - yield return new object[] { new CultureInfo("en-MS").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-MT").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-MU").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-MW").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-MY").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-NA").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-NF").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-NG").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-NL").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-NR").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-NU").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-NZ").DateTimeFormat, "d/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-PG").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-PH").DateTimeFormat, "M/d/yyyy" }; // "dd/MM/yyyy" - yield return new object[] { new CultureInfo("en-PK").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-PN").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-PR").DateTimeFormat, "M/d/yyyy" }; - yield return new object[] { new CultureInfo("en-PW").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-RW").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-SB").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-SC").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-SD").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-SE").DateTimeFormat, "yyyy-MM-dd" }; - yield return new object[] { new CultureInfo("en-SG").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("en-SH").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-SI").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-SL").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-SS").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-SX").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-SZ").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-TC").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-TK").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-TO").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-TT").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-TV").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-TZ").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-UG").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-UM").DateTimeFormat, "M/d/yyyy" }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, "M/d/yyyy" }; - yield return new object[] { new CultureInfo("en-VC").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-VG").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-VI").DateTimeFormat, "M/d/yyyy" }; - yield return new object[] { new CultureInfo("en-VU").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-WS").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-ZA").DateTimeFormat, "yyyy/MM/dd" }; - yield return new object[] { new CultureInfo("en-ZM").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("en-ZW").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("en-US").DateTimeFormat, "M/d/yyyy" }; - yield return new object[] { new CultureInfo("es-419").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("es-ES").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("es-MX").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("et-EE").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("fa-IR").DateTimeFormat, "yyyy/M/d" }; // "yyyy/M/d" - yield return new object[] { new CultureInfo("fi-FI").DateTimeFormat, "d.M.yyyy" }; - yield return new object[] { new CultureInfo("fil-PH").DateTimeFormat, "M/d/yyyy" }; - yield return new object[] { new CultureInfo("fr-BE").DateTimeFormat, "d/MM/yyyy" }; - yield return new object[] { new CultureInfo("fr-CA").DateTimeFormat, "yyyy-MM-dd" }; - yield return new object[] { new CultureInfo("fr-CH").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("fr-FR").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("gu-IN").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("he-IL").DateTimeFormat, "d.M.yyyy" }; - yield return new object[] { new CultureInfo("hi-IN").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("hr-BA").DateTimeFormat, "d. M. yyyy." }; - yield return new object[] { new CultureInfo("hr-HR").DateTimeFormat, "dd. MM. yyyy." }; - yield return new object[] { new CultureInfo("hu-HU").DateTimeFormat, "yyyy. MM. dd." }; - yield return new object[] { new CultureInfo("id-ID").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("it-CH").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("it-IT").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("ja-JP").DateTimeFormat, "yyyy/MM/dd" }; - yield return new object[] { new CultureInfo("kn-IN").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("ko-KR").DateTimeFormat, "yyyy. M. d." }; - yield return new object[] { new CultureInfo("lt-LT").DateTimeFormat, "yyyy-MM-dd" }; - yield return new object[] { new CultureInfo("lv-LV").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("ml-IN").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("mr-IN").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("ms-BN").DateTimeFormat, "d/MM/yyyy" }; - yield return new object[] { new CultureInfo("ms-MY").DateTimeFormat, "d/MM/yyyy" }; - yield return new object[] { new CultureInfo("ms-SG").DateTimeFormat, "d/MM/yyyy" }; - yield return new object[] { new CultureInfo("nb-NO").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("no").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("no-NO").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("nl-AW").DateTimeFormat, "dd-MM-yyyy" }; - yield return new object[] { new CultureInfo("nl-BE").DateTimeFormat, "d/MM/yyyy" }; - yield return new object[] { new CultureInfo("nl-NL").DateTimeFormat, "dd-MM-yyyy" }; - yield return new object[] { new CultureInfo("pl-PL").DateTimeFormat, "d.MM.yyyy" }; // "dd.MM.yyyy" - yield return new object[] { new CultureInfo("pt-BR").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("pt-PT").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("ro-RO").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("ru-RU").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("sk-SK").DateTimeFormat, "d. M. yyyy" }; - yield return new object[] { new CultureInfo("sl-SI").DateTimeFormat, "d. MM. yyyy" }; - yield return new object[] { new CultureInfo("sr-Cyrl-RS").DateTimeFormat, "d.M.yyyy." }; - yield return new object[] { new CultureInfo("sr-Latn-RS").DateTimeFormat, "d.M.yyyy." }; - yield return new object[] { new CultureInfo("sv-AX").DateTimeFormat, "yyyy-MM-dd" }; - yield return new object[] { new CultureInfo("sv-SE").DateTimeFormat, "yyyy-MM-dd" }; - yield return new object[] { new CultureInfo("sw-CD").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("sw-KE").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("sw-TZ").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("sw-UG").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("ta-IN").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("ta-LK").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("ta-MY").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("ta-SG").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("te-IN").DateTimeFormat, "dd-MM-yyyy" }; - yield return new object[] { new CultureInfo("th-TH").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("tr-CY").DateTimeFormat, "d.MM.yyyy" }; - yield return new object[] { new CultureInfo("tr-TR").DateTimeFormat, "d.MM.yyyy" }; - yield return new object[] { new CultureInfo("uk-UA").DateTimeFormat, "dd.MM.yyyy" }; - yield return new object[] { new CultureInfo("vi-VN").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("zh-CN").DateTimeFormat, "yyyy/M/d" }; - yield return new object[] { new CultureInfo("zh-Hans-HK").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("zh-SG").DateTimeFormat, "dd/MM/yyyy" }; - yield return new object[] { new CultureInfo("zh-HK").DateTimeFormat, "d/M/yyyy" }; - yield return new object[] { new CultureInfo("zh-TW").DateTimeFormat, "yyyy/M/d" }; + yield return new object[] { "ar-SA", "d\u200f/M\u200f/yyyy" }; // "d\u200f/M\u200f/yyyy g" + yield return new object[] { "am-ET", "dd/MM/yyyy" }; + yield return new object[] { "bg-BG", "d.MM.yyyy г." }; // "d.MM.yyyy 'г'." + yield return new object[] { "bn-BD", "d/M/yyyy" }; + yield return new object[] { "bn-IN", "d/M/yyyy" }; + yield return new object[] { "ca-AD", "d/M/yyyy" }; + yield return new object[] { "ca-ES", "d/M/yyyy" }; + yield return new object[] { "cs-CZ", "dd.MM.yyyy" }; + yield return new object[] { "da-DK", "dd.MM.yyyy" }; + yield return new object[] { "de-AT", "dd.MM.yyyy" }; + yield return new object[] { "de-BE", "dd.MM.yyyy" }; + yield return new object[] { "de-CH", "dd.MM.yyyy" }; + yield return new object[] { "de-DE", "dd.MM.yyyy" }; + yield return new object[] { "de-IT", "dd.MM.yyyy" }; + yield return new object[] { "de-LI", "dd.MM.yyyy" }; + yield return new object[] { "de-LU", "dd.MM.yyyy" }; + yield return new object[] { "el-CY", "d/M/yyyy" }; + yield return new object[] { "el-GR", "d/M/yyyy" }; + yield return new object[] { "en-AE", "dd/MM/yyyy" }; + yield return new object[] { "en-AG", "dd/MM/yyyy" }; + yield return new object[] { "en-AI", "dd/MM/yyyy" }; + yield return new object[] { "en-AS", "M/d/yyyy" }; + yield return new object[] { "en-AT", "dd/MM/yyyy" }; + yield return new object[] { "en-AU", "d/M/yyyy" }; + yield return new object[] { "en-BB", "dd/MM/yyyy" }; + yield return new object[] { "en-BE", "dd/MM/yyyy" }; + yield return new object[] { "en-BI", "M/d/yyyy" }; + yield return new object[] { "en-BM", "dd/MM/yyyy" }; + yield return new object[] { "en-BS", "dd/MM/yyyy" }; + yield return new object[] { "en-BW", "dd/MM/yyyy" }; + yield return new object[] { "en-BZ", "dd/MM/yyyy" }; + yield return new object[] { "en-CA", "yyyy-MM-dd" }; + yield return new object[] { "en-CC", "dd/MM/yyyy" }; + yield return new object[] { "en-CH", PlatformDetection.IsNodeJSOnWindows ? "dd/MM/yyyy" : "dd.MM.yyyy" }; // "dd/MM/yyyy" + yield return new object[] { "en-CK", "dd/MM/yyyy" }; + yield return new object[] { "en-CM", "dd/MM/yyyy" }; + yield return new object[] { "en-CX", "dd/MM/yyyy" }; + yield return new object[] { "en-CY", "dd/MM/yyyy" }; + yield return new object[] { "en-DE", "dd/MM/yyyy" }; + yield return new object[] { "en-DK", "dd/MM/yyyy" }; + yield return new object[] { "en-DM", "dd/MM/yyyy" }; + yield return new object[] { "en-ER", "dd/MM/yyyy" }; + yield return new object[] { "en-FI", "dd/MM/yyyy" }; + yield return new object[] { "en-FJ", "dd/MM/yyyy" }; + yield return new object[] { "en-FK", "dd/MM/yyyy" }; + yield return new object[] { "en-FM", "dd/MM/yyyy" }; + yield return new object[] { "en-GB", "dd/MM/yyyy" }; + yield return new object[] { "en-GD", "dd/MM/yyyy" }; + yield return new object[] { "en-GG", "dd/MM/yyyy" }; + yield return new object[] { "en-GH", "dd/MM/yyyy" }; + yield return new object[] { "en-GI", "dd/MM/yyyy" }; + yield return new object[] { "en-GM", "dd/MM/yyyy" }; + yield return new object[] { "en-GU", "M/d/yyyy" }; + yield return new object[] { "en-GY", "dd/MM/yyyy" }; + yield return new object[] { "en-HK", "d/M/yyyy" }; + yield return new object[] { "en-IE", "dd/MM/yyyy" }; + yield return new object[] { "en-IL", "dd/MM/yyyy" }; + yield return new object[] { "en-IM", "dd/MM/yyyy" }; + yield return new object[] { "en-IN", "dd/MM/yyyy" }; + yield return new object[] { "en-IO", "dd/MM/yyyy" }; + yield return new object[] { "en-JE", "dd/MM/yyyy" }; + yield return new object[] { "en-JM", "dd/MM/yyyy" }; + yield return new object[] { "en-KE", "dd/MM/yyyy" }; + yield return new object[] { "en-KI", "dd/MM/yyyy" }; + yield return new object[] { "en-KN", "dd/MM/yyyy" }; + yield return new object[] { "en-KY", "dd/MM/yyyy" }; + yield return new object[] { "en-LC", "dd/MM/yyyy" }; + yield return new object[] { "en-LR", "dd/MM/yyyy" }; + yield return new object[] { "en-LS", "dd/MM/yyyy" }; + yield return new object[] { "en-MG", "dd/MM/yyyy" }; + yield return new object[] { "en-MH", "M/d/yyyy" }; + yield return new object[] { "en-MO", "dd/MM/yyyy" }; + yield return new object[] { "en-MP", "M/d/yyyy" }; + yield return new object[] { "en-MS", "dd/MM/yyyy" }; + yield return new object[] { "en-MT", "dd/MM/yyyy" }; + yield return new object[] { "en-MU", "dd/MM/yyyy" }; + yield return new object[] { "en-MW", "dd/MM/yyyy" }; + yield return new object[] { "en-MY", "dd/MM/yyyy" }; + yield return new object[] { "en-NA", "dd/MM/yyyy" }; + yield return new object[] { "en-NF", "dd/MM/yyyy" }; + yield return new object[] { "en-NG", "dd/MM/yyyy" }; + yield return new object[] { "en-NL", "dd/MM/yyyy" }; + yield return new object[] { "en-NR", "dd/MM/yyyy" }; + yield return new object[] { "en-NU", "dd/MM/yyyy" }; + yield return new object[] { "en-NZ", "d/MM/yyyy" }; + yield return new object[] { "en-PG", "dd/MM/yyyy" }; + yield return new object[] { "en-PH", "M/d/yyyy" }; // "dd/MM/yyyy" + yield return new object[] { "en-PK", "dd/MM/yyyy" }; + yield return new object[] { "en-PN", "dd/MM/yyyy" }; + yield return new object[] { "en-PR", "M/d/yyyy" }; + yield return new object[] { "en-PW", "dd/MM/yyyy" }; + yield return new object[] { "en-RW", "dd/MM/yyyy" }; + yield return new object[] { "en-SB", "dd/MM/yyyy" }; + yield return new object[] { "en-SC", "dd/MM/yyyy" }; + yield return new object[] { "en-SD", "dd/MM/yyyy" }; + yield return new object[] { "en-SE", "yyyy-MM-dd" }; + yield return new object[] { "en-SG", "d/M/yyyy" }; + yield return new object[] { "en-SH", "dd/MM/yyyy" }; + yield return new object[] { "en-SI", "dd/MM/yyyy" }; + yield return new object[] { "en-SL", "dd/MM/yyyy" }; + yield return new object[] { "en-SS", "dd/MM/yyyy" }; + yield return new object[] { "en-SX", "dd/MM/yyyy" }; + yield return new object[] { "en-SZ", "dd/MM/yyyy" }; + yield return new object[] { "en-TC", "dd/MM/yyyy" }; + yield return new object[] { "en-TK", "dd/MM/yyyy" }; + yield return new object[] { "en-TO", "dd/MM/yyyy" }; + yield return new object[] { "en-TT", "dd/MM/yyyy" }; + yield return new object[] { "en-TV", "dd/MM/yyyy" }; + yield return new object[] { "en-TZ", "dd/MM/yyyy" }; + yield return new object[] { "en-UG", "dd/MM/yyyy" }; + yield return new object[] { "en-UM", "M/d/yyyy" }; + yield return new object[] { "en-US", "M/d/yyyy" }; + yield return new object[] { "en-VC", "dd/MM/yyyy" }; + yield return new object[] { "en-VG", "dd/MM/yyyy" }; + yield return new object[] { "en-VI", "M/d/yyyy" }; + yield return new object[] { "en-VU", "dd/MM/yyyy" }; + yield return new object[] { "en-WS", "dd/MM/yyyy" }; + yield return new object[] { "en-ZA", "yyyy/MM/dd" }; + yield return new object[] { "en-ZM", "dd/MM/yyyy" }; + yield return new object[] { "en-ZW", "d/M/yyyy" }; + yield return new object[] { "en-US", "M/d/yyyy" }; + yield return new object[] { "es-419", "d/M/yyyy" }; + yield return new object[] { "es-ES", "d/M/yyyy" }; + yield return new object[] { "es-MX", "dd/MM/yyyy" }; + yield return new object[] { "et-EE", "dd.MM.yyyy" }; + yield return new object[] { "fa-IR", "yyyy/M/d" }; // "yyyy/M/d" + yield return new object[] { "fi-FI", "d.M.yyyy" }; + yield return new object[] { "fil-PH", "M/d/yyyy" }; + yield return new object[] { "fr-BE", "d/MM/yyyy" }; + yield return new object[] { "fr-CA", "yyyy-MM-dd" }; + yield return new object[] { "fr-CH", "dd.MM.yyyy" }; + yield return new object[] { "fr-FR", "dd/MM/yyyy" }; + yield return new object[] { "gu-IN", "d/M/yyyy" }; + yield return new object[] { "he-IL", "d.M.yyyy" }; + yield return new object[] { "hi-IN", "d/M/yyyy" }; + yield return new object[] { "hr-BA", "d. M. yyyy." }; + yield return new object[] { "hr-HR", "dd. MM. yyyy." }; + yield return new object[] { "hu-HU", "yyyy. MM. dd." }; + yield return new object[] { "id-ID", "dd/MM/yyyy" }; + yield return new object[] { "it-CH", "dd.MM.yyyy" }; + yield return new object[] { "it-IT", "dd/MM/yyyy" }; + yield return new object[] { "ja-JP", "yyyy/MM/dd" }; + yield return new object[] { "kn-IN", "d/M/yyyy" }; + yield return new object[] { "ko-KR", "yyyy. M. d." }; + yield return new object[] { "lt-LT", "yyyy-MM-dd" }; + yield return new object[] { "lv-LV", "dd.MM.yyyy" }; + yield return new object[] { "ml-IN", "d/M/yyyy" }; + yield return new object[] { "mr-IN", "d/M/yyyy" }; + yield return new object[] { "ms-BN", "d/MM/yyyy" }; + yield return new object[] { "ms-MY", "d/MM/yyyy" }; + yield return new object[] { "ms-SG", "d/MM/yyyy" }; + yield return new object[] { "nb-NO", "dd.MM.yyyy" }; + yield return new object[] { "no", "dd.MM.yyyy" }; + yield return new object[] { "no-NO", "dd.MM.yyyy" }; + yield return new object[] { "nl-AW", "dd-MM-yyyy" }; + yield return new object[] { "nl-BE", "d/MM/yyyy" }; + yield return new object[] { "nl-NL", "dd-MM-yyyy" }; + yield return new object[] { "pl-PL", "d.MM.yyyy" }; // "dd.MM.yyyy" + yield return new object[] { "pt-BR", "dd/MM/yyyy" }; + yield return new object[] { "pt-PT", "dd/MM/yyyy" }; + yield return new object[] { "ro-RO", "dd.MM.yyyy" }; + yield return new object[] { "ru-RU", "dd.MM.yyyy" }; + yield return new object[] { "sk-SK", "d. M. yyyy" }; + yield return new object[] { "sl-SI", "d. MM. yyyy" }; + yield return new object[] { "sr-Cyrl-RS", "d.M.yyyy." }; + yield return new object[] { "sr-Latn-RS", "d.M.yyyy." }; + yield return new object[] { "sv-AX", "yyyy-MM-dd" }; + yield return new object[] { "sv-SE", "yyyy-MM-dd" }; + yield return new object[] { "sw-CD", "dd/MM/yyyy" }; + yield return new object[] { "sw-KE", "dd/MM/yyyy" }; + yield return new object[] { "sw-TZ", "dd/MM/yyyy" }; + yield return new object[] { "sw-UG", "dd/MM/yyyy" }; + yield return new object[] { "ta-IN", "d/M/yyyy" }; + yield return new object[] { "ta-LK", "d/M/yyyy" }; + yield return new object[] { "ta-MY", "d/M/yyyy" }; + yield return new object[] { "ta-SG", "d/M/yyyy" }; + yield return new object[] { "te-IN", "dd-MM-yyyy" }; + yield return new object[] { "th-TH", "d/M/yyyy" }; + yield return new object[] { "tr-CY", "d.MM.yyyy" }; + yield return new object[] { "tr-TR", "d.MM.yyyy" }; + yield return new object[] { "uk-UA", "dd.MM.yyyy" }; + yield return new object[] { "vi-VN", "dd/MM/yyyy" }; + yield return new object[] { "zh-CN", "yyyy/M/d" }; + yield return new object[] { "zh-Hans-HK", "d/M/yyyy" }; + yield return new object[] { "zh-SG", "dd/MM/yyyy" }; + yield return new object[] { "zh-HK", "d/M/yyyy" }; + yield return new object[] { "zh-TW", "yyyy/M/d" }; } [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] [MemberData(nameof(ShortDatePattern_Get_TestData_HybridGlobalization))] - public void ShortDatePattern_Get_ReturnsExpected_HybridGlobalization(DateTimeFormatInfo format, string expected) + public void ShortDatePattern_Get_ReturnsExpected_HybridGlobalization(string cultureName, string expected) { - Assert.Equal(expected, format.ShortDatePattern); + var format = new CultureInfo(cultureName).DateTimeFormat; + Assert.True(expected == format.ShortDatePattern, $"Failed for culture: {cultureName}. Expected: {expected}, Actual: {format.ShortDatePattern}"); } [Fact] diff --git a/src/libraries/System.Runtime/tests/System.Runtime.Extensions.Tests/System/StringComparer.cs b/src/libraries/System.Runtime/tests/System.Runtime.Extensions.Tests/System/StringComparer.cs index 80ffa83808593..79f1116340e89 100644 --- a/src/libraries/System.Runtime/tests/System.Runtime.Extensions.Tests/System/StringComparer.cs +++ b/src/libraries/System.Runtime/tests/System.Runtime.Extensions.Tests/System/StringComparer.cs @@ -94,7 +94,7 @@ public static IEnumerable UpperLowerCasing_TestData() } } - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(UpperLowerCasing_TestData))] public static void CreateWithCulturesTest(string lowerForm, string upperForm, string cultureName) { @@ -112,7 +112,7 @@ public static void CreateWithCulturesTest(string lowerForm, string upperForm, st Assert.Equal(sc.GetHashCode((object) lowerForm), sc.GetHashCode((object) upperForm)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void InvariantTest() { Assert.True(StringComparer.InvariantCulture.Equals("test", "test"), "Same casing strings with StringComparer.InvariantCulture should be equal"); @@ -179,11 +179,12 @@ public static IEnumerable CreateFromCultureAndOptionsData() yield return new object[] { "turky i", "TURKY \u0130", "tr-TR", CompareOptions.IgnoreCase, true}; } + bool ignoreSymbolsIgnoresOnlyPunctuation = PlatformDetection.IsHybridGlobalizationOnBrowser; yield return new object[] { "abcd", "ab cd", "en-US", CompareOptions.IgnoreSymbols, true }; - yield return new object[] { "abcd", "ab+cd", "en-US", CompareOptions.IgnoreSymbols, true }; + yield return new object[] { "abcd", "ab+cd", "en-US", CompareOptions.IgnoreSymbols, !ignoreSymbolsIgnoresOnlyPunctuation }; yield return new object[] { "abcd", "ab%cd", "en-US", CompareOptions.IgnoreSymbols, true }; yield return new object[] { "abcd", "ab&cd", "en-US", CompareOptions.IgnoreSymbols, true }; - yield return new object[] { "abcd", "ab$cd", "en-US", CompareOptions.IgnoreSymbols, true }; + yield return new object[] { "abcd", "ab$cd", "en-US", CompareOptions.IgnoreSymbols, !ignoreSymbolsIgnoresOnlyPunctuation }; yield return new object[] { "a-bcd", "ab$cd", "en-US", CompareOptions.IgnoreSymbols, true }; yield return new object[] { "abcd*", "ab$cd", "en-US", CompareOptions.IgnoreSymbols, true }; yield return new object[] { "ab$dd", "ab$cd", "en-US", CompareOptions.IgnoreSymbols, false }; @@ -195,7 +196,7 @@ public static IEnumerable CreateFromCultureAndOptionsData() { "abcd", "ABcd", "en-US", CompareOptions.StringSort, false }, }; - [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization))] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(CreateFromCultureAndOptionsData))] [MemberData(nameof(CreateFromCultureAndOptionsStringSortData))] public static void CreateFromCultureAndOptions(string actualString, string expectedString, string cultureName, CompareOptions options, bool result) @@ -207,7 +208,7 @@ public static void CreateFromCultureAndOptions(string actualString, string expec Assert.Equal(result, sc.Equals((object)actualString, (object)expectedString)); } - [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization))] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(CreateFromCultureAndOptionsData))] public static void CreateFromCultureAndOptionsStringSort(string actualString, string expectedString, string cultureName, CompareOptions options, bool result) { diff --git a/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/DateTimeTests.cs b/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/DateTimeTests.cs index f7dcd5923cd38..5407544356f1c 100644 --- a/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/DateTimeTests.cs +++ b/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/DateTimeTests.cs @@ -114,7 +114,7 @@ public void Ctor_DateOnly_TimeOnly(int year, int month, int day, int hour, int m var date = new DateOnly(year, month, day); var time = new TimeOnly(hour, minute, second, millisecond); var dateTime = new DateTime(date, time); - + Assert.Equal(new DateTime(year, month, day, hour, minute, second, millisecond), dateTime); } @@ -125,7 +125,7 @@ public void Ctor_DateOnly_TimeOnly_DateTimeKind(int year, int month, int day, in var date = new DateOnly(year, month, day); var time = new TimeOnly(hour, minute, second, millisecond); var dateTime = new DateTime(date, time, DateTimeKind.Local); - + Assert.Equal(new DateTime(year, month, day, hour, minute, second, millisecond, DateTimeKind.Local), dateTime); } @@ -2732,6 +2732,7 @@ internal struct SYSTEMTIME [Theory] [MemberData(nameof(StandardFormatSpecifiers))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95623", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] public static void TryFormat_MatchesToString(string format) { DateTime dt = DateTime.UtcNow; diff --git a/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/StringComparerTests.cs b/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/StringComparerTests.cs index 3027c870855b5..b6160f82fcea4 100644 --- a/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/StringComparerTests.cs +++ b/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/StringComparerTests.cs @@ -16,7 +16,7 @@ public void Create_InvalidArguments_Throws() AssertExtensions.Throws("culture", () => StringComparer.Create(null, ignoreCase: true)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void Create_CreatesValidComparer() { StringComparer c = StringComparer.Create(CultureInfo.InvariantCulture, ignoreCase: true); @@ -117,7 +117,7 @@ public void CreateCultureOptions_InvalidArguments_Throws() Assert.Throws(() => StringComparer.Create(null, CompareOptions.None)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public void CreateCultureOptions_CreatesValidComparer() { StringComparer c = StringComparer.Create(CultureInfo.InvariantCulture, CompareOptions.IgnoreCase); diff --git a/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/StringGetHashCodeTests.cs b/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/StringGetHashCodeTests.cs index b37ba0a5d051f..765558c60ad6a 100644 --- a/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/StringGetHashCodeTests.cs +++ b/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/StringGetHashCodeTests.cs @@ -61,7 +61,7 @@ public static IEnumerable GetHashCode_TestData() () => { return CultureInfo.CurrentCulture.CompareInfo.GetHashCode("abc", CompareOptions.OrdinalIgnoreCase); } }; - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(GetHashCodeOrdinalIgnoreCase_TestData))] public void GetHashCode_OrdinalIgnoreCase_ReturnsSameHashCodeAsUpperCaseOrdinal(string input) { diff --git a/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/StringTests.cs b/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/StringTests.cs index 507c50dfda3ca..7cc19ecc0ec6a 100644 --- a/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/StringTests.cs +++ b/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/StringTests.cs @@ -308,6 +308,7 @@ public static IEnumerable Contains_String_StringComparison_TestData() [Theory] [MemberData(nameof(Contains_String_StringComparison_TestData))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95473", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] public static void Contains_String_StringComparison(string s, string value, StringComparison comparisonType, bool expected) { Assert.Equal(expected, s.Contains(value, comparisonType)); @@ -777,6 +778,8 @@ public static IEnumerable Replace_StringComparison_TestData() [Theory] [MemberData(nameof(Replace_StringComparison_TestData))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95503", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95473", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] public void Replace_StringComparison_ReturnsExpected(string original, string oldValue, string newValue, StringComparison comparisonType, string expected) { Assert.Equal(expected, original.Replace(oldValue, newValue, comparisonType)); @@ -784,6 +787,7 @@ public void Replace_StringComparison_ReturnsExpected(string original, string old [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization))] [ActiveIssue("https://github.com/dotnet/runtime/issues/60568", TestPlatforms.Android | TestPlatforms.LinuxBionic)] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95503", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] public void Replace_StringComparison_TurkishI() { const string Source = "\u0069\u0130"; @@ -843,6 +847,8 @@ public static IEnumerable Replace_StringComparisonCulture_TestData() [Theory] [MemberData(nameof(Replace_StringComparisonCulture_TestData))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95471", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95503", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] public void Replace_StringComparisonCulture_ReturnsExpected(string original, string oldValue, string newValue, bool ignoreCase, CultureInfo culture, string expected) { Assert.Equal(expected, original.Replace(oldValue, newValue, ignoreCase, culture)); @@ -906,7 +912,7 @@ public static void GetHashCode_OfSpan_MatchesOfString() Assert.NotEqual("abc".GetHashCode(), string.GetHashCode("ABC".AsSpan())); // case differences } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotInvariantGlobalization), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void GetHashCode_CompareInfo() { // ordinal @@ -926,7 +932,7 @@ public static void GetHashCode_CompareInfo() Assert.Equal("aeiXXabc".GetHashCode(StringComparison.InvariantCultureIgnoreCase), CultureInfo.InvariantCulture.CompareInfo.GetHashCode("aeiXXabc", CompareOptions.IgnoreCase)); } - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public static void GetHashCode_CompareInfo_OfSpan() { // ordinal @@ -948,7 +954,7 @@ public static void GetHashCode_CompareInfo_OfSpan() public static IEnumerable GetHashCode_StringComparison_Data => StringComparisons.Select(value => new object[] { value }); - [Theory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [MemberData(nameof(GetHashCode_StringComparison_Data))] public static void GetHashCode_StringComparison(StringComparison comparisonType) { diff --git a/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/Text/RuneTests.cs b/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/Text/RuneTests.cs index bedc97060d2cc..01f43253dcf57 100644 --- a/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/Text/RuneTests.cs +++ b/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/Text/RuneTests.cs @@ -57,7 +57,7 @@ public static void Casing_Invariant(int original, int upper, int lower) Assert.Equal(new Rune(lower), Rune.ToLowerInvariant(rune)); } - [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsIcuGlobalization))] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsIcuGlobalization), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] [InlineData('0', '0', '0')] [InlineData('a', 'A', 'a')] [InlineData('i', 'I', 'i')] diff --git a/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/TimeOnlyTests.cs b/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/TimeOnlyTests.cs index 75f14b5ab4f6b..8ce47ed4352ba 100644 --- a/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/TimeOnlyTests.cs +++ b/src/libraries/System.Runtime/tests/System.Runtime.Tests/System/TimeOnlyTests.cs @@ -536,6 +536,7 @@ public static void CustomFormattingTest() } [Fact] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95594", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] public static void AllCulturesTest() { TimeOnly timeOnly = new TimeOnly((DateTime.Now.TimeOfDay.Ticks / TimeSpan.TicksPerMinute) * TimeSpan.TicksPerMinute); diff --git a/src/libraries/System.Text.Json/tests/Common/CollectionTests/CollectionTests.Specialized.Write.cs b/src/libraries/System.Text.Json/tests/Common/CollectionTests/CollectionTests.Specialized.Write.cs index 0947ccbdfc895..d7459be339a96 100644 --- a/src/libraries/System.Text.Json/tests/Common/CollectionTests/CollectionTests.Specialized.Write.cs +++ b/src/libraries/System.Text.Json/tests/Common/CollectionTests/CollectionTests.Specialized.Write.cs @@ -9,7 +9,7 @@ namespace System.Text.Json.Serialization.Tests { public abstract partial class CollectionTests { - [Fact] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotHybridGlobalizationOnBrowser))] public async Task Write_SpecializedCollection() { Assert.Equal(@"{""Data"":4}", await Serializer.SerializeWrapper(new BitVector32(4))); diff --git a/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/RegexCultureTests.cs b/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/RegexCultureTests.cs index c228a0ea1407e..db17804cd4832 100644 --- a/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/RegexCultureTests.cs +++ b/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/RegexCultureTests.cs @@ -161,6 +161,7 @@ Regex[] Create(string input, CultureInfo info, RegexOptions additional) [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "Doesn't support NonBacktracking")] [Fact] + [ActiveIssue("https://github.com/dotnet/runtime/issues/95471", typeof(PlatformDetection), nameof(PlatformDetection.IsHybridGlobalizationOnBrowser))] [ActiveIssue("https://github.com/dotnet/runtime/issues/60568", TestPlatforms.Android | TestPlatforms.LinuxBionic)] public async Task TurkishI_Is_Differently_LowerUpperCased_In_Turkish_Culture_NonBacktracking() { @@ -168,7 +169,7 @@ public async Task TurkishI_Is_Differently_LowerUpperCased_In_Turkish_Culture_Non string input = "I\u0131\u0130i"; // Use the input as the regex also - // Ignore the Compiled option here because it is a noop in combination with NonBacktracking + // Ignore the Compiled option here because it is a noop in combination with NonBacktracking Regex cultInvariantRegex = await RegexHelpers.GetRegexAsync(RegexEngine.NonBacktracking, input, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant, CultureInfo.InvariantCulture); Regex turkishRegex = await RegexHelpers.GetRegexAsync(RegexEngine.NonBacktracking, input, RegexOptions.IgnoreCase, turkish); diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 05605d51f7006..3cb3ef192586e 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -84,6 +84,12 @@ + + + + + + diff --git a/src/mono/wasm/README.md b/src/mono/wasm/README.md index 4f57c1b91eafd..53eae5109d1af 100644 --- a/src/mono/wasm/README.md +++ b/src/mono/wasm/README.md @@ -305,12 +305,14 @@ npm update --lockfile-version=1 * `runtime-wasm*` pipelines are triggered manually, and they only run the jobs that would not run on any default pipelines based on path changes. * The `AOT` jobs run only smoke tests on `runtime`, and on `runtime-wasm*` pipelines all the `AOT` tests are run. +* HG libtests are library test with `HybridGlobalization=true` | . | runtime-wasm | runtime-wasm-libtests | runtime-wasm-non-libtests | | ----------------- | -------------------------- | -------------------- | -------------------- | | libtests | linux+windows: all | linux+windows: all | none | | libtests eat | linux: all | linux: all | none | | libtests aot | linux+windows: all | linux+windows: all | none | +| libtests hg | linux+windows: all | linux+windows: all | none | | high resource aot | linux+windows: all | linux+windows: all | none | | Wasm.Build.Tests | linux+windows | none | linux+windows | | Debugger tests | linux+windows | none | linux+windows | diff --git a/src/mono/wasm/runtime/hybrid-globalization/calendar.ts b/src/mono/wasm/runtime/hybrid-globalization/calendar.ts index 8f399f05887f5..002c76da1be13 100644 --- a/src/mono/wasm/runtime/hybrid-globalization/calendar.ts +++ b/src/mono/wasm/runtime/hybrid-globalization/calendar.ts @@ -7,7 +7,7 @@ import { monoStringToString, stringToUTF16 } from "../strings"; import { MonoObject, MonoObjectRef, MonoString, MonoStringRef } from "../types/internal"; import { Int32Ptr } from "../types/emscripten"; import { wrap_error_root, wrap_no_error_root } from "../invoke-js"; -import { INNER_SEPARATOR, OUTER_SEPARATOR } from "./helpers"; +import { INNER_SEPARATOR, OUTER_SEPARATOR, normalizeSpaces } from "./helpers"; const MONTH_CODE = "MMMM"; const YEAR_CODE = "yyyy"; @@ -55,7 +55,7 @@ export function mono_wasm_get_calendar_info(culture: MonoStringRef, calendarId: const eraNames = getEraNames(date, locale, calendarId); calendarInfo.EraNames = eraNames.eraNames; calendarInfo.AbbreviatedEraNames = eraNames.abbreviatedEraNames; - + const result = Object.values(calendarInfo).join(OUTER_SEPARATOR); if (result.length > dstLength) { @@ -114,6 +114,7 @@ function getMonthYearPattern(locale: string | undefined, date: Date): string pattern = pattern.replace("999", YEAR_CODE); // sometimes the number is localized and the above does not have an effect const yearStr = date.toLocaleDateString(locale, { year: "numeric" }); + pattern = normalizeSpaces(pattern); return pattern.replace(yearStr, YEAR_CODE); } @@ -155,8 +156,8 @@ function getShortDatePattern(locale: string | undefined): string const shortDayStr = "2"; let pattern = date.toLocaleDateString(locale, {dateStyle: "short"}); // each date part might be in localized numbers or standard arabic numbers - // toLocaleDateString returns not compatible data, - // e.g. { dateStyle: "short" } sometimes contains localized year number + // toLocaleDateString returns not compatible data, + // e.g. { dateStyle: "short" } sometimes contains localized year number // while { year: "numeric" } contains non-localized year number and vice versa if (pattern.includes(shortYearStr)) { @@ -171,7 +172,7 @@ function getShortDatePattern(locale: string | undefined): string if (yearStrShort) pattern = pattern.replace(yearStrShort, YEAR_CODE); } - + if (pattern.includes(shortMonthStr)) { pattern = pattern.replace(longMonthStr, "MM"); @@ -195,9 +196,7 @@ function getShortDatePattern(locale: string | undefined): string const localizedDayCode = dayStr.length == 1 ? "d" : "dd"; pattern = pattern.replace(dayStr, localizedDayCode); } - - - return pattern; + return normalizeSpaces(pattern); } function getLongDatePattern(locale: string | undefined, date: Date): string @@ -221,7 +220,7 @@ function getLongDatePattern(locale: string | undefined, date: Date): string else { const replacedMonthName = getGenitiveForName(date, pattern, monthName, new Intl.DateTimeFormat(locale, { weekday: "long", year: "numeric", day: "numeric"})); - pattern = pattern.replace(replacedMonthName, MONTH_CODE); + pattern = pattern.replace(replacedMonthName, MONTH_CODE); } pattern = pattern.replace("999", YEAR_CODE); // sometimes the number is localized and the above does not have an effect, @@ -233,6 +232,7 @@ function getLongDatePattern(locale: string | undefined, date: Date): string pattern = pattern.replace(replacedWeekday, "dddd"); pattern = pattern.replace("22", DAY_CODE); const dayStr = date.toLocaleDateString(locale, { day: "numeric" }); // should we replace it for localized digits? + pattern = normalizeSpaces(pattern); return pattern.replace(dayStr, DAY_CODE); } @@ -326,7 +326,7 @@ function getEraNames(date: Date, locale: string | undefined, calendarId: number) if (shouldBePopulatedByManagedCode(calendarId)) { // managed code already handles these calendars, - // so empty strings will get overwritten in + // so empty strings will get overwritten in // InitializeEraNames/InitializeAbbreviatedEraNames return { eraNames: "", @@ -337,7 +337,7 @@ function getEraNames(date: Date, locale: string | undefined, calendarId: number) const dayStr = date.toLocaleDateString(locale, { day: "numeric" }); const eraDate = date.toLocaleDateString(locale, { era: "short" }); const shortEraDate = date.toLocaleDateString(locale, { era: "narrow" }); - + const eraDateParts = eraDate.includes(yearStr) ? getEraDateParts(yearStr) : getEraDateParts(date.getFullYear().toString()); @@ -365,16 +365,16 @@ function getEraNames(date: Date, locale: string | undefined, calendarId: number) { if (eraDate.startsWith(yearStr) || eraDate.endsWith(yearStr)) { - return { + return { eraDateParts: eraDate.split(dayStr), abbrEraDateParts: shortEraDate.split(dayStr), ignoredPart: yearStr, }; } - return { + return { eraDateParts: eraDate.split(yearStr), abbrEraDateParts: shortEraDate.split(yearStr), ignoredPart: dayStr, }; } -} \ No newline at end of file +} diff --git a/src/mono/wasm/runtime/hybrid-globalization/culture-info.ts b/src/mono/wasm/runtime/hybrid-globalization/culture-info.ts index 825ff9d709f46..48c4e47828d09 100644 --- a/src/mono/wasm/runtime/hybrid-globalization/culture-info.ts +++ b/src/mono/wasm/runtime/hybrid-globalization/culture-info.ts @@ -6,7 +6,7 @@ import { mono_wasm_new_external_root } from "../roots"; import { monoStringToString, stringToUTF16 } from "../strings"; import { Int32Ptr } from "../types/emscripten"; import { MonoObject, MonoObjectRef, MonoString, MonoStringRef } from "../types/internal"; -import { OUTER_SEPARATOR, normalizeLocale } from "./helpers"; +import { OUTER_SEPARATOR, normalizeLocale, normalizeSpaces } from "./helpers"; export function mono_wasm_get_culture_info(culture: MonoStringRef, dst: number, dstLength: number, isException: Int32Ptr, exAddress: MonoObjectRef): number { @@ -109,8 +109,7 @@ function getLongTimePattern(locale: string | undefined, designators: any) : stri hourPattern = hasPrefix ? "hh" : "h"; pattern = pattern.replace(hasPrefix ? hour12WithPrefix : localizedHour12, hourPattern); } - - return pattern; + return normalizeSpaces(pattern); } function getShortTimePattern(pattern: string) : string diff --git a/src/mono/wasm/runtime/hybrid-globalization/helpers.ts b/src/mono/wasm/runtime/hybrid-globalization/helpers.ts index d5b5da45e7dae..af65969f6dca3 100644 --- a/src/mono/wasm/runtime/hybrid-globalization/helpers.ts +++ b/src/mono/wasm/runtime/hybrid-globalization/helpers.ts @@ -24,4 +24,13 @@ export function normalizeLocale(locale: string | null) { throw new Error(`Get culture info failed for culture = ${locale} with error: ${ex}`); } -} \ No newline at end of file +} + +export function normalizeSpaces(pattern: string) +{ + if (!pattern.includes("\u202F")) + return pattern; + + // if U+202F present, replace them with spaces + return pattern.replace("\u202F", "\u0020"); +}