@@ -20,10 +20,26 @@ public class XmlConvertEndOfDayTests
2020 [ InlineData ( "2007-04-05T24:00:00Z" , XmlDateTimeSerializationMode . RoundtripKind , 2007 , 4 , 6 , 0 , 0 , 0 ) ]
2121 [ InlineData ( "2007-04-05T24:00:00" , XmlDateTimeSerializationMode . Utc , 2007 , 4 , 6 , 0 , 0 , 0 ) ]
2222 [ InlineData ( "2007-04-05T24:00:00" , XmlDateTimeSerializationMode . Unspecified , 2007 , 4 , 6 , 0 , 0 , 0 ) ]
23+ [ InlineData ( "0001-01-01T24:00:00" , XmlDateTimeSerializationMode . RoundtripKind , 1 , 1 , 2 , 0 , 0 , 0 ) ] // earliest possible date
2324 public static void ToDateTime_EndOfDay_Valid ( string input , XmlDateTimeSerializationMode mode , int year , int month , int day , int hour , int minute , int second )
2425 {
2526 DateTime result = XmlConvert . ToDateTime ( input , mode ) ;
26- Assert . Equal ( new DateTime ( year , month , day , hour , minute , second ) , new DateTime ( result . Year , result . Month , result . Day , result . Hour , result . Minute , result . Second ) ) ;
27+ Assert . Equal ( year , result . Year ) ;
28+ Assert . Equal ( month , result . Month ) ;
29+ Assert . Equal ( day , result . Day ) ;
30+ Assert . Equal ( hour , result . Hour ) ;
31+ Assert . Equal ( minute , result . Minute ) ;
32+ Assert . Equal ( second , result . Second ) ;
33+ }
34+
35+ [ Fact ]
36+ public static void ToDateTime_EndOfDay_Local_Valid ( )
37+ {
38+ DateTime result = XmlConvert . ToDateTime ( "2007-04-05T24:00:00" , XmlDateTimeSerializationMode . Local ) ;
39+ Assert . Equal ( DateTimeKind . Local , result . Kind ) ;
40+ Assert . Equal ( 0 , result . Hour ) ;
41+ Assert . Equal ( 0 , result . Minute ) ;
42+ Assert . Equal ( 0 , result . Second ) ;
2743 }
2844
2945 [ Theory ]
@@ -59,6 +75,7 @@ public static void ToDateTime_EndOfDay_Invalid(string input)
5975 [ InlineData ( "2000-12-31T24:00:00" , 2001 , 1 , 1 , 0 , 0 , 0 ) ]
6076 [ InlineData ( "2000-02-28T24:00:00" , 2000 , 2 , 29 , 0 , 0 , 0 ) ] // leap year
6177 [ InlineData ( "2001-02-28T24:00:00" , 2001 , 3 , 1 , 0 , 0 , 0 ) ] // non-leap year
78+ [ InlineData ( "0001-01-01T24:00:00" , 1 , 1 , 2 , 0 , 0 , 0 ) ] // earliest possible date
6279 public static void ToDateTimeOffset_EndOfDay_Valid ( string input , int year , int month , int day , int hour , int minute , int second )
6380 {
6481 DateTimeOffset result = XmlConvert . ToDateTimeOffset ( input ) ;
@@ -230,7 +247,12 @@ public static void XmlSchemaValidation_DateTime_EndOfDay_NonZeroMinute_Invalid()
230247 public static void ToDateTime_ExistingHours_StillWork ( string input , int year , int month , int day , int hour , int minute , int second )
231248 {
232249 DateTime result = XmlConvert . ToDateTime ( input , XmlDateTimeSerializationMode . RoundtripKind ) ;
233- Assert . Equal ( new DateTime ( year , month , day , hour , minute , second ) , new DateTime ( result . Year , result . Month , result . Day , result . Hour , result . Minute , result . Second ) ) ;
250+ Assert . Equal ( year , result . Year ) ;
251+ Assert . Equal ( month , result . Month ) ;
252+ Assert . Equal ( day , result . Day ) ;
253+ Assert . Equal ( hour , result . Hour ) ;
254+ Assert . Equal ( minute , result . Minute ) ;
255+ Assert . Equal ( second , result . Second ) ;
234256 }
235257
236258 [ Theory ]
0 commit comments