Skip to content

Commit 70e13dc

Browse files
bombipappooKeboo
andauthored
Add Calendar localization. (#1915)
* Add Calendar localization. * Some minor code cleanup. Co-authored-by: Kevin Bost <kitokeboo@gmail.com>
1 parent ebf596d commit 70e13dc

5 files changed

Lines changed: 473 additions & 5 deletions

File tree

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
using System.Globalization;
2+
using Xunit;
3+
4+
namespace MaterialDesignThemes.Wpf.Tests
5+
{
6+
public class CalendarFormatInfoTests
7+
{
8+
[StaTheory]
9+
[InlineData("en-US", "MMMM yyyy", "yyyy", "ddd,", "MMM d")]
10+
[InlineData("fr-CA", "MMMM, yyyy", "yyyy", "ddd", "d MMM")]
11+
[InlineData("ja-JP", "yyyy'年'M'月'", "yyyy年", "M月d日", "dddd")]
12+
public void TestFromCultureInfo(string cultureName, string yearMonth, string componentThree, string componentTwo, string componentOne)
13+
{
14+
var result = CalendarFormatInfo.FromCultureInfo(CultureInfo.GetCultureInfo(cultureName));
15+
16+
Assert.Equal(yearMonth, result.YearMonthPattern);
17+
Assert.Equal(componentOne, result.ComponentOnePattern);
18+
Assert.Equal(componentTwo, result.ComponentTwoPattern);
19+
Assert.Equal(componentThree, result.ComponentThreePattern);
20+
}
21+
22+
[Theory]
23+
[InlineData("", "ddd", "", true)]
24+
[InlineData("ddd", "ddd", "", true)]
25+
[InlineData("dddd", "ddd", "", true)]
26+
[InlineData("dddd ", "ddd", "", true)]
27+
[InlineData("dddd,", "ddd", ",", true)]
28+
[InlineData("dddd ,", "ddd", ",", true)]
29+
[InlineData("dddd','", "ddd", ",", true)]
30+
[InlineData("dddd' , '", "ddd", ",", true)]
31+
[InlineData("ddddd", "ddd", "", true)]
32+
[InlineData("ddddd,", "ddd", "", true)]
33+
[InlineData("Xddd", "ddd", "", false)]
34+
[InlineData("Xdddd", "ddd", "", false)]
35+
[InlineData("X ddd", "ddd", "", false)]
36+
[InlineData("X dddd", "ddd", "", false)]
37+
[InlineData("X, ddd", "ddd", ",", false)]
38+
[InlineData("X,ddd", "ddd", ",", false)]
39+
[InlineData("X','ddd", "ddd", ",", false)]
40+
[InlineData("X' , 'ddd", "ddd", ",", false)]
41+
[InlineData("Xddddd", "ddd", "", false)]
42+
[InlineData("X,ddddd", "ddd", "", false)]
43+
public void CanParseDayOfWeek(string s, string pattern, string separator, bool isFirst)
44+
{
45+
var result = CalendarFormatInfo.DayOfWeekStyle.Parse(s);
46+
47+
Assert.Equal(pattern, result.Pattern);
48+
Assert.Equal(separator, result.Separator);
49+
Assert.Equal(isFirst, result.IsFirst);
50+
}
51+
52+
[StaFact]
53+
public void SettingYearPattern()
54+
{
55+
const string cultureName = "en-001";
56+
CalendarFormatInfo.SetYearPattern(cultureName, "A");
57+
var result = CalendarFormatInfo.FromCultureInfo(CultureInfo.GetCultureInfo(cultureName));
58+
Assert.Equal("A", result.ComponentThreePattern);
59+
60+
CalendarFormatInfo.SetYearPattern(cultureName, null);
61+
result = CalendarFormatInfo.FromCultureInfo(CultureInfo.GetCultureInfo(cultureName));
62+
Assert.Equal("yyyy", result.ComponentThreePattern);
63+
}
64+
65+
[StaFact]
66+
public void SettingYearPatternOfMultupleCultures()
67+
{
68+
string[] cultureNames = { "en-001", "en-150" };
69+
CalendarFormatInfo.SetYearPattern(cultureNames, "B");
70+
foreach (var cultureName in cultureNames)
71+
{
72+
var result = CalendarFormatInfo.FromCultureInfo(CultureInfo.GetCultureInfo(cultureName));
73+
Assert.Equal("B", result.ComponentThreePattern);
74+
}
75+
}
76+
77+
[StaFact]
78+
public void SettingDayOfWeekStyle()
79+
{
80+
const string cultureName = "en-001";
81+
CalendarFormatInfo.SetDayOfWeekStyle(cultureName, new CalendarFormatInfo.DayOfWeekStyle("Z", "@", true));
82+
var result = CalendarFormatInfo.FromCultureInfo(CultureInfo.GetCultureInfo(cultureName));
83+
Assert.Equal("d MMM", result.ComponentOnePattern);
84+
Assert.Equal("Z@", result.ComponentTwoPattern);
85+
86+
CalendarFormatInfo.SetDayOfWeekStyle(cultureName, new CalendarFormatInfo.DayOfWeekStyle("Y", "@", false));
87+
result = CalendarFormatInfo.FromCultureInfo(CultureInfo.GetCultureInfo(cultureName));
88+
Assert.Equal("Y", result.ComponentOnePattern);
89+
Assert.Equal("d MMM@", result.ComponentTwoPattern);
90+
}
91+
92+
[StaFact]
93+
public void SettingDayOfWeekStyleOfMultupleCultures()
94+
{
95+
string[] cultureNames = { "en-001", "en-150" };
96+
CalendarFormatInfo.SetDayOfWeekStyle(cultureNames, new CalendarFormatInfo.DayOfWeekStyle("Z", "@", true));
97+
foreach (var cultureName in cultureNames)
98+
{
99+
var result = CalendarFormatInfo.FromCultureInfo(CultureInfo.GetCultureInfo(cultureName));
100+
Assert.Equal("d MMM", result.ComponentOnePattern);
101+
Assert.Equal("Z@", result.ComponentTwoPattern);
102+
}
103+
}
104+
105+
[StaFact]
106+
public void ResettingDayOfWeekStyle()
107+
{
108+
const string cultureName = "en-001";
109+
CalendarFormatInfo.SetDayOfWeekStyle(cultureName, new CalendarFormatInfo.DayOfWeekStyle("Z", "@", true));
110+
CalendarFormatInfo.ResetDayOfWeekStyle(cultureName);
111+
var result = CalendarFormatInfo.FromCultureInfo(CultureInfo.GetCultureInfo(cultureName));
112+
Assert.Equal("d MMM", result.ComponentOnePattern);
113+
Assert.Equal("ddd,", result.ComponentTwoPattern);
114+
}
115+
116+
[StaFact]
117+
public void ResettingDayOfWeekStyleOfMultupleCultures()
118+
{
119+
string[] cultureNames = { "en-001", "en-150" };
120+
CalendarFormatInfo.SetDayOfWeekStyle(cultureNames, new CalendarFormatInfo.DayOfWeekStyle("Z", "@", true));
121+
CalendarFormatInfo.ResetDayOfWeekStyle(cultureNames);
122+
foreach (var cultureName in cultureNames)
123+
{
124+
var result = CalendarFormatInfo.FromCultureInfo(CultureInfo.GetCultureInfo(cultureName));
125+
Assert.Equal("d MMM", result.ComponentOnePattern);
126+
Assert.Equal("ddd,", result.ComponentTwoPattern);
127+
}
128+
}
129+
}
130+
}

0 commit comments

Comments
 (0)