private void DoResolveTest(string executable, string filter, int expectedLocations, int expectedErrorMessages, bool disposeResolver = true) { List <SourceFileLocation> locations = new List <SourceFileLocation>(); List <string> errorMessages = new List <string>(); DiaResolver.DiaResolver resolver = new DiaResolver.DiaResolver(executable, ""); locations.AddRange(resolver.GetFunctions(filter)); errorMessages.AddRange(resolver.ErrorMessages); if (disposeResolver) { resolver.Dispose(); } Assert.AreEqual(expectedLocations, locations.Count); Assert.AreEqual(expectedErrorMessages, errorMessages.Count); }
private IEnumerable <TestCaseLocation> FindTestCaseLocationsInBinary( string binary, List <string> testMethodSignatures, string symbolFilterString, string pathExtension, List <string> errorMessages) { var resolver = new DiaResolver.DiaResolver(binary, pathExtension); IEnumerable <SourceFileLocation> allTestMethodSymbols = resolver.GetFunctions(symbolFilterString); IEnumerable <SourceFileLocation> allTraitSymbols = resolver.GetFunctions("*" + TraitAppendix); IEnumerable <TestCaseLocation> result = allTestMethodSymbols .Where(nsfl => testMethodSignatures.Any(tms => nsfl.Symbol.Contains(tms))) // Contains() instead of == because nsfl might contain namespace .Select(nsfl => ToTestCaseLocation(nsfl, allTraitSymbols)) .ToList(); // we need to force immediate query execution, otherwise our session object will already be released errorMessages.AddRange(resolver.ErrorMessages); resolver.Dispose(); return(result); }