@@ -20,7 +20,7 @@ public static class DataContractSerializerTests
20
20
[ Fact ]
21
21
public static void DCS_DateTimeOffsetAsRoot ( )
22
22
{
23
- var offsetMinutes = TimeZoneInfo . Local . BaseUtcOffset . TotalMinutes ;
23
+ var offsetMinutes = TimeZoneInfo . Local . GetUtcOffset ( new DateTime ( 2013 , 1 , 2 ) ) . TotalMinutes ;
24
24
var objs = new DateTimeOffset [ ]
25
25
{
26
26
// Adding offsetMinutes so the DateTime component in serialized strings are time-zone independent
@@ -43,7 +43,10 @@ public static void DCS_DateTimeOffsetAsRoot()
43
43
} ;
44
44
for ( int i = 0 ; i < objs . Length ; ++ i )
45
45
{
46
- Assert . StrictEqual ( SerializeAndDeserialize < DateTimeOffset > ( objs [ i ] , serializedStrings [ i ] ) , objs [ i ] ) ;
46
+ var actual = objs [ i ] ;
47
+ var expected = SerializeAndDeserialize < DateTimeOffset > ( actual , serializedStrings [ i ] ) ;
48
+ Assert . StrictEqual ( expected , actual ) ;
49
+ Assert . StrictEqual ( expected . Offset , actual . Offset ) ;
47
50
}
48
51
}
49
52
@@ -84,7 +87,7 @@ public static void DCS_ByteAsRoot()
84
87
[ Fact ]
85
88
public static void DCS_DateTimeAsRoot ( )
86
89
{
87
- var offsetMinutes = ( int ) TimeZoneInfo . Local . BaseUtcOffset . TotalMinutes ;
90
+ var offsetMinutes = ( int ) TimeZoneInfo . Local . GetUtcOffset ( new DateTime ( 2013 , 1 , 2 ) ) . TotalMinutes ;
88
91
Assert . StrictEqual ( SerializeAndDeserialize < DateTime > ( new DateTime ( 2013 , 1 , 2 ) , "<dateTime xmlns=\" http://schemas.microsoft.com/2003/10/Serialization/\" >2013-01-02T00:00:00</dateTime>" ) , new DateTime ( 2013 , 1 , 2 ) ) ;
89
92
Assert . StrictEqual ( SerializeAndDeserialize < DateTime > ( new DateTime ( 2013 , 1 , 2 , 3 , 4 , 5 , 6 , DateTimeKind . Local ) , string . Format ( "<dateTime xmlns=\" http://schemas.microsoft.com/2003/10/Serialization/\" >2013-01-02T03:04:05.006{0:+;-}{1}</dateTime>" , offsetMinutes , new TimeSpan ( 0 , offsetMinutes , 0 ) . ToString ( @"hh\:mm" ) ) ) , new DateTime ( 2013 , 1 , 2 , 3 , 4 , 5 , 6 , DateTimeKind . Local ) ) ;
90
93
Assert . StrictEqual ( SerializeAndDeserialize < DateTime > ( new DateTime ( 2013 , 1 , 2 , 3 , 4 , 5 , 6 , DateTimeKind . Unspecified ) , "<dateTime xmlns=\" http://schemas.microsoft.com/2003/10/Serialization/\" >2013-01-02T03:04:05.006</dateTime>" ) , new DateTime ( 2013 , 1 , 2 , 3 , 4 , 5 , 6 , DateTimeKind . Unspecified ) ) ;
@@ -1360,16 +1363,19 @@ public static void DCS_TypeWithDatetimeOffsetTypeProperty()
1360
1363
var value = new TypeWithDateTimeOffsetTypeProperty ( ) { ModifiedTime = new DateTimeOffset ( new DateTime ( 2013 , 1 , 2 , 3 , 4 , 5 , 6 , DateTimeKind . Utc ) ) } ;
1361
1364
var actual = SerializeAndDeserialize ( value , "<TypeWithDateTimeOffsetTypeProperty xmlns=\" http://schemas.datacontract.org/2004/07/SerializationTypes\" xmlns:i=\" http://www.w3.org/2001/XMLSchema-instance\" ><ModifiedTime xmlns:a=\" http://schemas.datacontract.org/2004/07/System\" ><a:DateTime>2013-01-02T03:04:05.006Z</a:DateTime><a:OffsetMinutes>0</a:OffsetMinutes></ModifiedTime></TypeWithDateTimeOffsetTypeProperty>" ) ;
1362
1365
Assert . StrictEqual ( value . ModifiedTime , actual . ModifiedTime ) ;
1366
+ Assert . StrictEqual ( value . ModifiedTime . Offset , actual . ModifiedTime . Offset ) ;
1363
1367
1364
- var offsetMinutes = TimeZoneInfo . Local . BaseUtcOffset . TotalMinutes ;
1368
+ var offsetMinutes = TimeZoneInfo . Local . GetUtcOffset ( new DateTime ( 2013 , 1 , 2 ) ) . TotalMinutes ;
1365
1369
// Adding offsetMinutes to ModifiedTime property so the DateTime component in serialized strings are time-zone independent
1366
1370
value = new TypeWithDateTimeOffsetTypeProperty ( ) { ModifiedTime = new DateTimeOffset ( new DateTime ( 2013 , 1 , 2 , 3 , 4 , 5 , 6 ) . AddMinutes ( offsetMinutes ) ) } ;
1367
1371
actual = SerializeAndDeserialize ( value , string . Format ( "<TypeWithDateTimeOffsetTypeProperty xmlns=\" http://schemas.datacontract.org/2004/07/SerializationTypes\" xmlns:i=\" http://www.w3.org/2001/XMLSchema-instance\" ><ModifiedTime xmlns:a=\" http://schemas.datacontract.org/2004/07/System\" ><a:DateTime>2013-01-02T03:04:05.006Z</a:DateTime><a:OffsetMinutes>{0}</a:OffsetMinutes></ModifiedTime></TypeWithDateTimeOffsetTypeProperty>" , offsetMinutes ) ) ;
1368
1372
Assert . StrictEqual ( value . ModifiedTime , actual . ModifiedTime ) ;
1373
+ Assert . StrictEqual ( value . ModifiedTime . Offset , actual . ModifiedTime . Offset ) ;
1369
1374
1370
1375
value = new TypeWithDateTimeOffsetTypeProperty ( ) { ModifiedTime = new DateTimeOffset ( new DateTime ( 2013 , 1 , 2 , 3 , 4 , 5 , 6 , DateTimeKind . Local ) . AddMinutes ( offsetMinutes ) ) } ;
1371
1376
actual = SerializeAndDeserialize ( value , string . Format ( "<TypeWithDateTimeOffsetTypeProperty xmlns=\" http://schemas.datacontract.org/2004/07/SerializationTypes\" xmlns:i=\" http://www.w3.org/2001/XMLSchema-instance\" ><ModifiedTime xmlns:a=\" http://schemas.datacontract.org/2004/07/System\" ><a:DateTime>2013-01-02T03:04:05.006Z</a:DateTime><a:OffsetMinutes>{0}</a:OffsetMinutes></ModifiedTime></TypeWithDateTimeOffsetTypeProperty>" , offsetMinutes ) ) ;
1372
1377
Assert . StrictEqual ( value . ModifiedTime , actual . ModifiedTime ) ;
1378
+ Assert . StrictEqual ( value . ModifiedTime . Offset , actual . ModifiedTime . Offset ) ;
1373
1379
}
1374
1380
1375
1381
[ Fact ]
0 commit comments