private void ProcessTest(TestSuiteResult suite, XmlNode testNode)
        {
            TestCaseResult testCase = new TestCaseResult(suite, testNode.Attributes);

            foreach (XmlNode child in testNode.ChildNodes)
            {
                ITestAssertion assertion = TestAssertionFactory.Create(
                    testCase, child.Name, child.Attributes);

                if (assertion is AssertionWithStackTrace)
                {
                    AssertionWithStackTrace ast = (AssertionWithStackTrace)assertion;

                    ast.SetMessage(child.InnerText);

                    foreach (XmlNode child2 in child.ChildNodes)
                    {
                        if (child2.Name == "stack-frame")
                        {
                            BacktraceFrame frame = ProcessStackFrame(child2);
                            ast.AddBacktraceFrame(frame);
                        }
                    }
                }
            }
        }
        private void ProcessSuiteError(TestSuiteResult suite, XmlNode errorNode)
        {
            TestSuiteErrorResult error = new TestSuiteErrorResult(suite, errorNode.Attributes);

            error.Message = errorNode.InnerText;

            foreach (XmlNode child in errorNode.ChildNodes)
            {
                if (child.Name == "stack-frame")
                {
                    BacktraceFrame frame = ProcessStackFrame(child);
                    error.AddBacktraceFrame(frame);
                }
            }
        }
 public void AddBacktraceFrame(BacktraceFrame frame)
 {
     backtrace.Add(frame);
 }
 public void AddBacktraceFrame(BacktraceFrame frame)
 {
     backtrace.Add(frame);
 }
        private void AddBacktraceToDetail(BacktraceFrame[] backtrace,
			TreeNodeCollection nodes)
        {
            if (backtrace != null)
            {
                foreach (BacktraceFrame frame in backtrace)
                {
                    TreeNode node = new TreeNode();

                    // If the filename is an absolute path to a file contained
                    // in the project directory, just make it relative to the
                    // project. Otherwise, use the whole absolute path.

                    string text = frame.Function;

                    string filename = frame.Filename;

                    if(filename != null)
                    {
                        if (Path.IsPathRooted(filename))
                        {
                            string relPath = PathUtils.RelativePathTo(
                                containingProject.ProjectDirectory, filename);

                            if (!relPath.StartsWith(".."))
                                filename = relPath;
                        }

                        text += " in " + filename;

                        if(frame.LineNumber != 0)
                            text += ":" + frame.LineNumber.ToString();
                    }

                    node.Tag = frame;
                    node.Text = text;
                    node.ImageKey = node.SelectedImageKey = "BacktraceFrame";
                    nodes.Add(node);
                }
            }
        }