private void RunTest(TestNotificationDelegate testNotificationEvent, object instance, TestAttribute ta)
{
if (!ta.IgnoreTest())
{
try
{
if (sua != null)
sua.Invoke(instance);
ta.Invoke(instance);
// If we get here, the test did not throw an exception.
// Was it supposed too?
if (ta.ExpectedExceptionType != null)
{
Trace.WriteLine("***Fail***: " + ta.TestMethod.ToString() + " Expected exception not encountered");
ta.State = TestAttribute.TestState.Fail;
}
else
{
Trace.WriteLine("***Pass***: " + ta.TestMethod.ToString());
ta.State = TestAttribute.TestState.Pass;
}
}
catch (AssertFailedException e)
{
Trace.WriteLine("***Fail***: " + ta.TestMethod.ToString() + " Exception=" + e.Message);
ta.State = TestAttribute.TestState.Fail;
}
catch (Exception e)
{
if (e.GetType() != ta.ExpectedExceptionType)
{
Trace.WriteLine("***Fail***: " + ta.TestMethod.ToString() + " Exception=" + e.Message);
ta.State = TestAttribute.TestState.Fail;
}
else
{
Trace.WriteLine("***Pass***: " + ta.TestMethod.ToString() + " Exception=" + e.Message);
ta.State = TestAttribute.TestState.Pass;
}
}
finally
{
if (tda != null) tda.Invoke(instance);
}
}
else
{
//Trace.WriteLine("***Ignore***: " + ta.TestMethod.ToString());
ta.State = TestAttribute.TestState.Ignore;
}
if (testNotificationEvent != null)
{
testNotificationEvent(ta);
}
}
}