Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 5.6k
Expand file tree
/
Copy pathDateTimeFormatInfoShortTimePattern.cs
More file actions
Latest commit
108 lines (98 loc) · 4.18 KB
/
Copy pathDateTimeFormatInfoShortTimePattern.cs
File metadata and controls
108 lines (98 loc) · 4.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
usingSystem.Collections.Generic;
usingXunit;
namespaceSystem.Globalization.Tests
{
publicclassDateTimeFormatInfoShortTimePattern
{
[Fact]
publicvoidShortTimePattern_GetInvariantInfo_ReturnsExpected()
{
Assert.Equal("HH:mm",DateTimeFormatInfo.InvariantInfo.ShortTimePattern);
}
publicstaticIEnumerable<object[]>ShortTimePattern_Set_TestData()
{
yieldreturnnewobject[]{string.Empty};
yieldreturnnewobject[]{"garbage"};
yieldreturnnewobject[]{"dddd, dd MMMM yyyy HH:mm:ss"};
yieldreturnnewobject[]{"HH:mm"};
yieldreturnnewobject[]{"t"};
}
[Theory]
[MemberData(nameof(ShortTimePattern_Set_TestData))]
publicvoidShortTimePattern_Set_GetReturnsExpected(stringvalue)
{
varformat=newDateTimeFormatInfo();
format.ShortTimePattern=value;
Assert.Equal(value,format.ShortTimePattern);
}
[Fact]
publicvoidShortTimePattern_Set_InvalidatesDerivedPattern()
{
conststringPattern="#$";
varformat=newDateTimeFormatInfo();
vard=DateTimeOffset.Now;
d.ToString("g",format);// GeneralShortTimePattern
format.ShortTimePattern=Pattern;
Assert.Contains(Pattern,d.ToString("g",format));
}
[Fact]
publicvoidShortTimePattern_SetNull_ThrowsArgumentNullException()
{
varformat=newDateTimeFormatInfo();
AssertExtensions.Throws<ArgumentNullException>("value",()=>format.ShortTimePattern=null);
}
[Fact]
publicvoidShortTimePattern_SetReadOnly_ThrowsInvalidOperationException()
{
Assert.Throws<InvalidOperationException>(()=>DateTimeFormatInfo.InvariantInfo.ShortTimePattern="HH:mm");
}
[Fact]
publicvoidShortTimePattern_VerifyTimePatterns()
{
Assert.All(CultureInfo.GetCultures(CultureTypes.AllCultures), culture =>{
if(DateTimeFormatInfoData.HasBadIcuTimePatterns(culture))
{
return;
}
varpattern=culture.DateTimeFormat.ShortTimePattern;
booluse24Hour=false;
booluse12Hour=false;
booluseAMPM=false;
for(vari=0;i<pattern.Length;i++)
{
switch(pattern[i])
{
case'H':use24Hour=true;break;
case'h':use12Hour=true;break;
case't':useAMPM=true;break;
case'\\':i++;break;
case'\'':
i++;
for(;i<pattern.Length;i++)
{
varc=pattern[i];
if(c=='\'')break;
if(c=='\\')i++;
}
break;
}
}
Assert.True((use24Hour||useAMPM)&&(use12Hour^use24Hour),$"Bad short time pattern for culture {culture.Name}: '{pattern}'");
});
}
[Fact]
publicvoidShortTimePattern_CheckTimeFormatWithSpaces()
{
vardate=DateTime.Today+TimeSpan.FromHours(15)+TimeSpan.FromMinutes(15);
varculture=newCultureInfo("en-US");
stringformattedDate=date.ToString("t",culture);
boolcontainsSpace=formattedDate.Contains(' ');
boolcontainsNoBreakSpace=formattedDate.Contains('\u00A0');
boolcontainsNarrowNoBreakSpace=formattedDate.Contains('\u202F');
Assert.True(containsSpace||containsNoBreakSpace||containsNarrowNoBreakSpace,
$"Formatted date string '{formattedDate}' does not contain any of the specified spaces.");
}
}
}