private static void CombineOutcome(ref VSTestOutcome combinedOutcome, VSTestOutcome sourceOutcome) { if (sourceOutcome < combinedOutcome) { combinedOutcome = sourceOutcome; } }
/// <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); }
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); } }