public void CreateClassSearcher_PassParentDirectory_NewInstanceIsReturned()
        {
            var sut = new ClassSearcherFactory();

            var classSearcher1 = sut.CreateClassSearcher("C:\\temp");
            var classSearcher2 = sut.CreateClassSearcher("C:\\");

            Assert.AreNotSame(classSearcher1, classSearcher2, "ClassSearchers are the same instance.");
        }
        public void CreateClassSearcher_PassSubdirectory_CachedInstanceIsReturned()
        {
            var sut = new ClassSearcherFactory();

            var classSearcher1 = sut.CreateClassSearcher("C:\\temp");
            var classSearcher2 = sut.CreateClassSearcher("C:\\temp\\sub");

            Assert.AreSame(classSearcher1, classSearcher2, "ClassSearchers are not the same instance.");
        }
        public void CreateClassSearcher_PassNull_ClassSearcherWithNullDirectoryIsReturned()
        {
            var sut = new ClassSearcherFactory();

            var classSearcher = sut.CreateClassSearcher((string)null);

            Assert.IsNotNull(classSearcher, "ClassSearcher must not be null");
            Assert.IsNull(classSearcher.Directory, "ClassSearcher directory must be null");
        }
        public static void MyClassInitialize(TestContext testContext)
        {
            FileManager.CopyTestClasses();
            assembliesWithoutPreprocessing = new PartCover23Parser(XDocument.Load(filePath)).Assemblies;

            var report = XDocument.Load(filePath);

            var classSearcherFactory = new ClassSearcherFactory();
            var globalClassSearcher = classSearcherFactory.CreateClassSearcher("C:\\test");
            new PartCover23ReportPreprocessor(report, classSearcherFactory, globalClassSearcher).Execute();
            assembliesWithPreprocessing = new PartCover23Parser(report).Assemblies;
        }
        /// <summary>
        /// Tries to initiate the correct parsers for the given reports.
        /// </summary>
        /// <param name="reportFiles">The report files to parse.</param>
        /// <param name="sourceDirectories">The source directories.</param>
        /// <returns>
        /// The IParser instance.
        /// </returns>
        public static IParser CreateParser(IEnumerable<string> reportFiles, IEnumerable<string> sourceDirectories)
        {
            if (reportFiles == null)
            {
                throw new ArgumentNullException("reportFiles");
            }

            var classSearcherFactory = new ClassSearcherFactory();
            var globalClassSearcher = classSearcherFactory.CreateClassSearcher(sourceDirectories.ToArray());

            var multiReportParser = new MultiReportParser();

            foreach (var report in reportFiles)
            {
                foreach (var parser in GetParsersOfFile(report, classSearcherFactory, globalClassSearcher))
                {
                    multiReportParser.AddParser(parser);
                }
            }

            return multiReportParser;
        }