← Back to team overview

nunit-core team mailing list archive

Re: [Bug 1172247] Re: Improve DateTime equality assertions to include DateTimeKind

 

Hi Adam , this is exactly what I mentioned before. This is called a
constraint modifier in NUnit. The drawback with this approach is it applies
to every type, because we don't have generics.
On Apr 25, 2013 8:21 AM, "Adam Brengesjö" <ca.brengesjo@xxxxxxxxx> wrote:

> What if adding a built-in constraint option similar to the following
> usecase
>
> public class F
> {
>     [Test]
>     public void Foo()
>     {
>         var localDate = new DateTime(2013, 04, 24, 13, 17, 44, 678,
> DateTimeKind.Local);
>         var systemDate = new DateTime(2013, 04, 24, 13, 17, 44, 678,
> DateTimeKind.Utc);
>         Assert.That(localDate, Is.EqualTo(systemDate).StrictDateTimeKind);
>     }
> }
>
> Of course, as a developer I have to know of this feature to detect
> problems like the ones in my case in earlier posts.
> But as a NUnit user I do not have to extend the framework in all projects.
>
> --
> You received this bug notification because you are a member of NUnit
> Developers, which is subscribed to NUnit V2.
> https://bugs.launchpad.net/bugs/1172247
>
> Title:
>   Improve DateTime equality assertions to include DateTimeKind
>
> Status in NUnit V2 Test Framework:
>   New
>
> Bug description:
>   The following test will fail, even if the two DateTime structs are not
> equal.
>   (I know it's because the equality members of the DateTime type does the
> evaluation which doesn't care of the Kind property)
>
>   [Test]
>   public void Foo()
>   {
>       var localDate = new DateTime(2013, 04, 24, 13, 17, 44, 678,
> DateTimeKind.Local);
>       var systemDate = new DateTime(2013, 04, 24, 13, 17, 44, 678,
> DateTimeKind.Utc);
>
>       Assert.AreNotEqual(localDate, systemDate);
>   }
>
>   But I always extracts my assertions to a helper method which also
>   checks the Kind property.
>
>   public static class AssertX
>   {
>       public static void AreEqual(DateTime expected, DateTime actual)
>       {
>           Assert.AreEqual(expected, actual);
>           Assert.AreEqual(expected.Kind, actual.Kind);
>       }
>   }
>
>   I would like to have NUnit help me with this instead of always calling
>   my own helper class.
>
>   However, I'm not sure how this best could be implemented in NUnit.
>   A simple overload of AreEqual(object, object) to AreEqual(DateTime,
> DateTime) risk breaking compability with existing tests out there.
>
>   One way would be to instead use another name, Assert.Identical or
>   similar.
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/nunitv2/+bug/1172247/+subscriptions
>
> _______________________________________________
> Mailing list: https://launchpad.net/~nunit-core
> Post to     : nunit-core@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~nunit-core
> More help   : https://help.launchpad.net/ListHelp
>

References