nunit-core team mailing list archive
-
nunit-core team
-
Mailing list archive
-
Message #03478
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