1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4 
5 using System.Collections.Generic;
6 using Xunit;
7 
8 namespace System.Globalization.Tests
9 {
10     public class DateTimeFormatInfoLongDatePattern
11     {
12         private static readonly RandomDataGenerator s_randomDataGenerator = new RandomDataGenerator();
13 
LongDatePattern_InvariantInfo()14         public void LongDatePattern_InvariantInfo()
15         {
16             Assert.Equal("dddd, dd MMMM yyyy", DateTimeFormatInfo.InvariantInfo.LongDatePattern);
17         }
18 
LongDatePattern_TestData()19         public static IEnumerable<object[]> LongDatePattern_TestData()
20         {
21             yield return new object[] { "dddd, dd MMMM yyyy HH:mm:ss" };
22             yield return new object[] { "dddd" };
23             yield return new object[] { "D" };
24             yield return new object[] { "HH:mm:ss dddd, dd MMMM yyyy" };
25             yield return new object[] { s_randomDataGenerator.GetString(-55, false, 1, 256) };
26             yield return new object[] { "dddd, dd MMMM yyyy" };
27         }
28 
29         [Theory]
30         [MemberData(nameof(LongDatePattern_TestData))]
LongDatePattern_Set(string newLongDatePattern)31         public void LongDatePattern_Set(string newLongDatePattern)
32         {
33             var format = new DateTimeFormatInfo();
34             format.LongDatePattern = newLongDatePattern;
35             Assert.Equal(newLongDatePattern, format.LongDatePattern);
36         }
37 
38         [Fact]
LongDatePattern_Set_Invalid()39         public void LongDatePattern_Set_Invalid()
40         {
41             AssertExtensions.Throws<ArgumentNullException>("value", () => new DateTimeFormatInfo().LongDatePattern = null); // Value is null
42             Assert.Throws<InvalidOperationException>(() => DateTimeFormatInfo.InvariantInfo.LongDatePattern = "dddd, dd MMMM yyyy"); // DateTimeFormatInfo.InvariantInfo is read only
43         }
44     }
45 }
46