public Test Decorate(Test test, MemberInfo member)
{
if ( member == null )
return test;
TestCase testCase = test as TestCase;
if ( testCase == null )
return test;
System.Attribute[] ignoreAttr =
Reflect.GetAttributes( member, IgnoreBrowserAttributeTypeFullName, true );
if ( ignoreAttr == null )
return test;
// A test case might be ignored in more than one browser
foreach (System.Attribute attr in ignoreAttr)
{
object propVal = Reflect.GetPropertyValue(attr, "Value", BindingFlags.Public | BindingFlags.Instance);
object reasonValue = Reflect.GetPropertyValue(attr, "Reason", BindingFlags.Public | BindingFlags.Instance);
if (propVal == null)
{
return test;
}
string ignoreReason = "Ignoring browser " + EnvironmentManager.Instance.Browser.ToString() + ".";
if (reasonValue != null)
{
ignoreReason = ignoreReason + " " + reasonValue.ToString();
}
Browser browser = (Browser)propVal;
if (browser.Equals(EnvironmentManager.Instance.Browser) || browser.Equals(Browser.All) || IsRemoteInstanceOfBrowser(browser))
{
testCase.RunState = RunState.Ignored;
testCase.IgnoreReason = ignoreReason;
return testCase;
}
}
return test;
}