From ed2abb115fcff12c9187ad1bd798ae239da1bd4c Mon Sep 17 00:00:00 2001 From: Mike-E Date: Tue, 23 Jan 2024 05:45:58 -0500 Subject: [PATCH] DateOnly Extension demonstration --- .../Issue608Tests.cs | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 test/ExtendedXmlSerializer.Tests.ReportedIssues/Issue608Tests.cs diff --git a/test/ExtendedXmlSerializer.Tests.ReportedIssues/Issue608Tests.cs b/test/ExtendedXmlSerializer.Tests.ReportedIssues/Issue608Tests.cs new file mode 100644 index 00000000..5b9632d3 --- /dev/null +++ b/test/ExtendedXmlSerializer.Tests.ReportedIssues/Issue608Tests.cs @@ -0,0 +1,49 @@ +using ExtendedXmlSerializer.Configuration; +using ExtendedXmlSerializer.ContentModel.Conversion; +using ExtendedXmlSerializer.Tests.ReportedIssues.Support; +using FluentAssertions; +using System; +using Xunit; + +namespace ExtendedXmlSerializer.Tests.ReportedIssues +{ + public sealed class Issue608Tests + { +#if CORE + public class TestClass + { + public DateOnly DateOfBirth { get; set; } + } + + [Fact] + public void Verify() + { + TestClass instance = new() + { + DateOfBirth = DateOnly.Parse("2024-01-22") + }; + + var serializer = new ConfigurationContainer().UseAutoFormatting() + .UseOptimizedNamespaces() + .Type() + .Register() + .Converter() + .Using(DateOnlyConverter.Default) + .ForTesting(); + + serializer.Cycle(instance).Should().BeEquivalentTo(instance); + } + + sealed class DateOnlyConverter : ConverterBase + { + public static DateOnlyConverter Default { get; } = new(); + + DateOnlyConverter() {} + + public override DateOnly Parse(string data) => DateOnly.Parse(data); + + public override string Format(DateOnly instance) => instance.ToString(); + } +#endif + } +} \ No newline at end of file