Ejemplo n.º 1
0
 private static void CombineOutcome(ref VSTestOutcome combinedOutcome, VSTestOutcome sourceOutcome)
 {
     if (sourceOutcome < combinedOutcome)
     {
         combinedOutcome = sourceOutcome;
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Merges Gallio test results.
        /// </summary>
        /// <param name="inMemory">The currently available test result, or null if none.</param>
        /// <param name="fromTheWire">The test result to add, or null if none.</param>
        /// <returns>The merged test result.</returns>
        public static GallioTestResult Merge(GallioTestResult inMemory, GallioTestResult fromTheWire)
        {
            if (fromTheWire == null)
            {
                return(inMemory);
            }
            if (inMemory == null)
            {
                return(fromTheWire);
            }

            List <GallioTestResult> combinedResults = new List <GallioTestResult>();
            VSTestOutcome           combinedOutcome = VSTestOutcome.Pending;

            CombineResults(combinedResults, ref combinedOutcome, inMemory);
            CombineResults(combinedResults, ref combinedOutcome, fromTheWire);

            GallioTestResult result;

            if (combinedResults.Count == 1)
            {
                result = combinedResults[0];
            }
            else
            {
                result = CreateAggregateRootTestResult(inMemory.Id.RunId, inMemory.Test);

                if (combinedResults.Count != 0)
                {
                    result.SetInnerResults(combinedResults);

                    DateTime startTime = DateTime.MaxValue;
                    DateTime endTime   = DateTime.MinValue;
                    TimeSpan duration  = TimeSpan.Zero;
                    foreach (GallioTestResult innerResult in combinedResults)
                    {
                        if (innerResult.StartTime < startTime)
                        {
                            startTime = innerResult.StartTime;
                        }
                        if (innerResult.EndTime > endTime)
                        {
                            endTime = innerResult.EndTime;
                        }
                        duration += innerResult.Duration;
                    }

                    result.SetTimings(startTime, endTime, duration);
                }
            }

            result.Outcome = combinedOutcome;
            return(result);
        }
Ejemplo n.º 3
0
        private static void CombineResults(List <GallioTestResult> combinedResults, ref VSTestOutcome combinedOutcome, GallioTestResult source)
        {
            CombineOutcome(ref combinedOutcome, source.Outcome);

            if (source.IsAggregateRoot)
            {
                foreach (GallioTestResult innerResult in source.InnerResults)
                {
                    combinedResults.Add(innerResult);
                    CombineOutcome(ref combinedOutcome, innerResult.Outcome);
                }
            }
            else
            {
                combinedResults.Add(source);
            }
        }
 private static void CombineOutcome(ref VSTestOutcome combinedOutcome, VSTestOutcome sourceOutcome)
 {
     if (sourceOutcome < combinedOutcome)
         combinedOutcome = sourceOutcome;
 }
        private static void CombineResults(List<GallioTestResult> combinedResults, ref VSTestOutcome combinedOutcome, GallioTestResult source)
        {
            CombineOutcome(ref combinedOutcome, source.Outcome);

            if (source.IsAggregateRoot)
            {
                foreach (GallioTestResult innerResult in source.InnerResults)
                {
                    combinedResults.Add(innerResult);
                    CombineOutcome(ref combinedOutcome, innerResult.Outcome);
                }
            }
            else
            {
                combinedResults.Add(source);
            }
        }