public void ShouldGetFailureReasonForFailedBuildResult()
        {
            FirstMatch failureTypeStat = new FirstMatch("BuildErrorType", "//failure/builderror/type");
            FirstMatch failureMessageStat = new FirstMatch("BuildErrorMessage", "//failure/builderror/message");
            XmlDocument document = new XmlDocument();
            document.LoadXml(failedBuildLog);
            XPathNavigator navigator = document.CreateNavigator();

            string failureType = Convert.ToString(failureTypeStat.Apply(navigator).Value);
            string failureMessage = Convert.ToString(failureMessageStat.Apply(navigator).Value);

            Assert.IsTrue(failedBuildLog.IndexOf("builderror") > 0);
            Assert.AreEqual("NAnt.Core.BuildException", failureType);
            Assert.AreEqual(
                @"External Program Failed: c:\sf\ccnet\tools\ncover\NCover.Console.exe (return code was 1)",
                failureMessage);
        }
        public void ShowOutputOfStatisticsInConsole()
        {
            StringBuilder buffer = new StringBuilder();
            System.IO.StreamReader reader = System.IO.File.OpenText(@"resources\UnitTestResults2.xml");
            var buildlog= reader.ReadToEnd();
            reader.Close();

            StatisticsBuilder builder = new StatisticsBuilder();

  
            Statistic info = new Statistic();
            info.Name = "Statistic TestsTotalCount no ns";
            info.Xpath = @"//TestRun/ResultSummary/Counters/@total";
            builder.Add(info);


            FirstMatch info2 = new FirstMatch();
            info2.Name = "FirstMatch TestsTotalCount no ns";
            info2.Xpath = @"//TestRun/ResultSummary/Counters/@total";
            builder.Add(info2);

            
            FirstMatch info1 = new FirstMatch();
            info1.Name = "FirstMatch TestsTotalCount with ns";
            info1.Xpath = @"//mstest:TestRun/mstest:ResultSummary/mstest:Counters/@total";
            info1.NameSpaces = new StatisticsNamespaceMapping[1];           
            info1.NameSpaces[0] = new StatisticsNamespaceMapping("mstest", @"http://microsoft.com/schemas/VisualStudio/TeamTest/2010");
            builder.Add(info1);



            Statistic info3 = new Statistic();
            info3.Name = "Statistic sum(TestsTotalCount) no ns";
            info3.Xpath = @"sum(//TestRun/ResultSummary/Counters/@total)";
            builder.Add(info3);

            Statistic info4 = new Statistic();
            info4.Name = "Statistic sum(TestsTotalCount) with ns";
            info4.Xpath = @"sum(//mstest:TestRun/mstest:ResultSummary/mstest:Counters/@total)";
            info4.NameSpaces = new StatisticsNamespaceMapping[1];
            info4.NameSpaces[0] = new StatisticsNamespaceMapping("mstest", @"http://microsoft.com/schemas/VisualStudio/TeamTest/2010");
            builder.Add(info4);


            // seems impossible in xsl 1.0
            Statistic imp01 = new Statistic();
            imp01.Name = "impossible : Statistic TestsExecutedCount xmlns";
            imp01.Xpath = @"/xmlns:cruisecontrol/mstest:TestRun/mstest:ResultSummary/mstest:Counters/@executed";
            imp01.NameSpaces = new StatisticsNamespaceMapping[1];
            imp01.NameSpaces[0] = new StatisticsNamespaceMapping("mstest", @"http://microsoft.com/schemas/VisualStudio/TeamTest/2010");
            
            builder.Add(imp01);

            Statistic imp02 = new Statistic();
            imp02.Name = "impossible : Statistic TestsExecutedCount2 not namespace";
            imp02.Xpath = @"/cruisecontrol/mstest:TestRun/mstest:ResultSummary/mstest:Counters/@executed";
            imp02.NameSpaces = new StatisticsNamespaceMapping[1];
            imp02.NameSpaces[0] = new StatisticsNamespaceMapping("mstest", @"http://microsoft.com/schemas/VisualStudio/TeamTest/2010");

            builder.Add(imp02);

            


            StatisticsResults results = builder.ProcessBuildResults(buildlog);

            foreach (var x in results)
            {
                Console.WriteLine("Result {0} : {1}", x.StatName, x.Value);
            }
            
        
        }