/// <summary> /// Process a UTF result message. /// </summary> /// <param name="logMessage">The log message object.</param> private void ProcessResult(LogMessage logMessage) { if (logMessage.HasDecorator(UnitTestLogDecorator.TestMethodMetadata)) { ScenarioResult result = (ScenarioResult)logMessage[UnitTestLogDecorator.ScenarioResult]; TestOutcome outcome = result.Result; ITestMethod method = result.TestMethod; ITestClass test = result.TestClass; if (_startElements.ContainsKey(method)) { HtmlContainerControl elem = _startElements[method]; ++_statusDisplay.Total; IncrementScenarioCounter(); switch (outcome) { case TestOutcome.Passed: case TestOutcome.PassedButRunAborted: break; case TestOutcome.Inconclusive: case TestOutcome.Failed: elem.BackgroundColor = Color.Red; elem.ForegroundColor = Color.White; elem.Font.Bold = true; ++_statusDisplay.Fail; HtmlContainerControl nextSpan = CreateText(/* isDiv */ false); nextSpan.SetStyleAttribute(CssAttribute.Position, "absolute"); nextSpan.SetStyleAttribute(CssAttribute.Right, new Unit(10)); elem.Controls.Add(nextSpan); _failureSummary.AddFailure(test, method, nextSpan); break; default: break; } _startElements.Remove(method); // Hook up the details inspection control to the name HtmlAnchor anchor = FindFirstChildElement <HtmlAnchor>(elem); if (anchor != null) { ResultInspector inspector = new ResultInspector(result); LogContainer.Controls.Add(inspector); //anchor.Click += (sender, args) => inspector.ToggleDropDown(); anchor.SetStyleAttribute(CssAttribute.Cursor, "hand"); } } } }
/// <summary> /// Initializes a new FailureDetails control. /// </summary> /// <param name="inspector">The parent inspector object.</param> public ExceptionDetails(ResultInspector inspector) : base(inspector) { }
/// <summary> /// Initializes a new Details object. /// </summary> /// <param name="inspector">The parent inspector control.</param> public Details(ResultInspector inspector) : base() { Inspector = inspector; InitializeComponent(); }