@@ -27,6 +27,11 @@ public class TimeUnitTests
27
27
[ "1y" , new TimeSpan ( ( int ) TimeSpanExtensions . AvgDaysInAYear , 0 , 0 , 0 ) ] ,
28
28
[ "2y" , new TimeSpan ( ( int ) ( 2 * TimeSpanExtensions . AvgDaysInAYear ) , 0 , 0 , 0 ) ] ,
29
29
[ "-1y" , new TimeSpan ( ( int ) ( - 1 * TimeSpanExtensions . AvgDaysInAYear ) , 0 , 0 , 0 ) ] ,
30
+ // Whitespace trimming tests
31
+ [ " 1y " , new TimeSpan ( ( int ) TimeSpanExtensions . AvgDaysInAYear , 0 , 0 , 0 ) ] ,
32
+ [ " 2M " , new TimeSpan ( ( int ) ( 2 * TimeSpanExtensions . AvgDaysInAMonth ) , 0 , 0 , 0 ) ] ,
33
+ [ "\t 3w\t " , new TimeSpan ( 21 , 0 , 0 , 0 ) ] ,
34
+ [ " -1y " , new TimeSpan ( ( int ) ( - 1 * TimeSpanExtensions . AvgDaysInAYear ) , 0 , 0 , 0 ) ] ,
30
35
} ;
31
36
32
37
[ Theory ]
@@ -42,6 +47,13 @@ public void CanParse(string value, TimeSpan expected)
42
47
[ InlineData ( "1234" ) ] // missing unit
43
48
[ InlineData ( "12unknownunit" ) ]
44
49
[ InlineData ( "12h." ) ]
50
+ [ InlineData ( "" ) ] // empty string
51
+ [ InlineData ( " " ) ] // whitespace only
52
+ [ InlineData ( "\t \t " ) ] // tabs only
53
+ [ InlineData ( "1y@" ) ] // special character after unit
54
+ [ InlineData ( "1M!" ) ] // special character after unit
55
+ [ InlineData ( "1w#" ) ] // special character after unit
56
+ [ InlineData ( "1@y" ) ] // special character in middle
45
57
public void VerifyParseFailure ( string value )
46
58
{
47
59
Assert . ThrowsAny < Exception > ( ( ) => TimeUnit . Parse ( value ) ) ;
@@ -68,6 +80,19 @@ public void VerifyParseFailure(string value)
68
80
[ InlineData ( "1y" , true ) ]
69
81
[ InlineData ( "2y" , true ) ]
70
82
[ InlineData ( "-1y" , true ) ]
83
+ // Whitespace tests
84
+ [ InlineData ( " 1y " , true ) ]
85
+ [ InlineData ( " 2M " , true ) ]
86
+ [ InlineData ( "\t 3w\t " , true ) ]
87
+ [ InlineData ( " -1M " , true ) ]
88
+ // Special character and edge case tests
89
+ [ InlineData ( "" , false ) ]
90
+ [ InlineData ( " " , false ) ]
91
+ [ InlineData ( "\t \t " , false ) ]
92
+ [ InlineData ( "1y@" , false ) ]
93
+ [ InlineData ( "1M!" , false ) ]
94
+ [ InlineData ( "1w#" , false ) ]
95
+ [ InlineData ( "1@y" , false ) ]
71
96
[ InlineData ( null , false ) ]
72
97
[ InlineData ( "1.234h" , false ) ] // fractional time
73
98
[ InlineData ( "1234" , false ) ] // missing unit
0 commit comments