示例#1
0
        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);
        }
示例#2
0
        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);
        }