nunit-core team mailing list archive
-
nunit-core team
-
Mailing list archive
-
Message #01810
[Bug 809679] [NEW] Assert.IsAssignableFrom is not implemented properly
Public bug reported:
I'm using 2.5.10.11092.
I think the Assert.IsAssignableFrom is not implemented correctly. It
does not work like Type.IsAssignableFrom. The unit tests below
illustrate the problem. I expected both of the following to pass:
class Room { };
class Kitchen : Room { };
[Test]
public void AssertIsAssignableFrom_WorksLike_TypeIsAssignableFrom()
{
Assert.IsTrue(typeof(Room).IsAssignableFrom(typeof(Kitchen)));
Assert.IsAssignableFrom(typeof(Room), new Kitchen());
}
I looked at the source in TypeConstraints.cs, AssignableFromConstraint,
Matches. I think it is backwards. It has this:
return actual != null &&
actual.GetType().IsAssignableFrom(expectedType);
It should be this:
return actual != null && expected != null &&
expectedType.IsAssignableFrom(actual.GetType());
I looked at the unit tests for this method in TypeAssertTest.cs. None of
the unit tests exercise the case of class hierarchy.
This blog post may be helpful:
http://codegoeshere.blogspot.com/2009/02/typeisassignablefrom-seems-backwards.html
** Affects: nunitv2
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of NUnit
Developers, which is subscribed to NUnit V2.
https://bugs.launchpad.net/bugs/809679
Title:
Assert.IsAssignableFrom is not implemented properly
Status in NUnit V2 Test Framework:
New
Bug description:
I'm using 2.5.10.11092.
I think the Assert.IsAssignableFrom is not implemented correctly. It
does not work like Type.IsAssignableFrom. The unit tests below
illustrate the problem. I expected both of the following to pass:
class Room { };
class Kitchen : Room { };
[Test]
public void AssertIsAssignableFrom_WorksLike_TypeIsAssignableFrom()
{
Assert.IsTrue(typeof(Room).IsAssignableFrom(typeof(Kitchen)));
Assert.IsAssignableFrom(typeof(Room), new Kitchen());
}
I looked at the source in TypeConstraints.cs,
AssignableFromConstraint, Matches. I think it is backwards. It has
this:
return actual != null &&
actual.GetType().IsAssignableFrom(expectedType);
It should be this:
return actual != null && expected != null &&
expectedType.IsAssignableFrom(actual.GetType());
I looked at the unit tests for this method in TypeAssertTest.cs. None
of the unit tests exercise the case of class hierarchy.
This blog post may be helpful:
http://codegoeshere.blogspot.com/2009/02/typeisassignablefrom-seems-backwards.html
To manage notifications about this bug go to:
https://bugs.launchpad.net/nunitv2/+bug/809679/+subscriptions
Follow ups
References