Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 9d7e2d3

Browse files
Check offset separately for DateTimeOffset types
1 parent 196c836 commit 9d7e2d3

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

src/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ public static void DCS_DateTimeOffsetAsRoot()
4343
};
4444
for (int i = 0; i < objs.Length; ++i)
4545
{
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);
4750
}
4851
}
4952

@@ -1360,16 +1363,19 @@ public static void DCS_TypeWithDatetimeOffsetTypeProperty()
13601363
var value = new TypeWithDateTimeOffsetTypeProperty() { ModifiedTime = new DateTimeOffset(new DateTime(2013, 1, 2, 3, 4, 5, 6, DateTimeKind.Utc)) };
13611364
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>");
13621365
Assert.StrictEqual(value.ModifiedTime, actual.ModifiedTime);
1366+
Assert.StrictEqual(value.ModifiedTime.Offset, actual.ModifiedTime.Offset);
13631367

13641368
var offsetMinutes = TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
13651369
// Adding offsetMinutes to ModifiedTime property so the DateTime component in serialized strings are time-zone independent
13661370
value = new TypeWithDateTimeOffsetTypeProperty() { ModifiedTime = new DateTimeOffset(new DateTime(2013, 1, 2, 3, 4, 5, 6).AddMinutes(offsetMinutes)) };
13671371
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));
13681372
Assert.StrictEqual(value.ModifiedTime, actual.ModifiedTime);
1373+
Assert.StrictEqual(value.ModifiedTime.Offset, actual.ModifiedTime.Offset);
13691374

13701375
value = new TypeWithDateTimeOffsetTypeProperty() { ModifiedTime = new DateTimeOffset(new DateTime(2013, 1, 2, 3, 4, 5, 6, DateTimeKind.Local).AddMinutes(offsetMinutes)) };
13711376
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));
13721377
Assert.StrictEqual(value.ModifiedTime, actual.ModifiedTime);
1378+
Assert.StrictEqual(value.ModifiedTime.Offset, actual.ModifiedTime.Offset);
13731379
}
13741380

13751381
[Fact]

0 commit comments

Comments
 (0)