How does the Assert.AreEqual(object, object) method (in the namespace Microsoft.VisualStudio.TestTools.UnitTesting) determine whether the parameters are equal? Does it make use of the Object.Equals(object, object) method (in the System namespace)?
-
2Annoyingly it isn't specified in the docs: msdn.microsoft.com/en-US/library/ms243413(v=VS.100).aspxMarc Gravell– Marc Gravell2011-06-25 17:01:32 +00:00Commented Jun 25, 2011 at 17:01
-
Yeah I couldn't find it on that page either. Does that mean there is no where to find out?Clivest– Clivest2011-06-25 17:06:42 +00:00Commented Jun 25, 2011 at 17:06
Add a comment
|
1 Answer
using reflector you can see that it does indeed use Object.Equals.
public static void AreEqual<T>(T expected, T actual, string message, params object[] parameters)
{
if (!object.Equals(expected, actual))
{
string str;
if (((actual != null) && (expected != null)) && !actual.GetType().Equals(expected.GetType()))
{
str = (string) FrameworkMessages.AreEqualDifferentTypesFailMsg((message == null) ? string.Empty : ReplaceNulls(message), ReplaceNulls(expected), expected.GetType().FullName, ReplaceNulls(actual), actual.GetType().FullName);
}
else
{
str = (string) FrameworkMessages.AreEqualFailMsg((message == null) ? string.Empty : ReplaceNulls(message), ReplaceNulls(expected), ReplaceNulls(actual));
}
HandleFail("Assert.AreEqual", str, parameters);
}
}