Exemple #1
0
        public void TestGeneratedFileRelationsFound()
        {
            ProjectFile projectFile = CreateProjectFile();

            projectFile.Analyze();

            HashSet <string> consumerNames = new HashSet <string>();
            HashSet <string> providerNames = new HashSet <string>();

            foreach (GeneratedFileRelation generatedFileRelation in projectFile.GeneratedFileRelations)
            {
                providerNames.Add((generatedFileRelation.Provider.Name));
                consumerNames.Add(generatedFileRelation.Consumer.Name);
            }

            Assert.IsTrue(providerNames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirIDL\IInterface1.idl")));
            Assert.IsTrue(providerNames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirIDL\IInterface2.idl")));
            Assert.AreEqual(2, providerNames.Count);

            Assert.IsTrue(consumerNames.Contains(Path.Combine(TestData.TestDataDirectory, @"IdlOutput\IInterface1.h")));                                // Using %(Filename).h setting
            Assert.IsTrue(consumerNames.Contains(Path.Combine(TestData.TestDataDirectory, @"IdlOutput\IInterface1_i.c")));                              // Using empty setting
            Assert.IsTrue(consumerNames.Contains(Path.Combine(TestData.TestDataDirectory, @"IdlOutput\MyTypeLibrary.tlb")));                            // Using explicit setting

            Assert.IsTrue(consumerNames.Contains(Path.Combine(TestData.TestDataDirectory, @"IdlOutput\IInterface2.h")));                                // Using %(Filename).h setting
            Assert.IsTrue(consumerNames.Contains(Path.Combine(TestData.TestDataDirectory, @"IdlOutput\IInterface2_i.c")));                              // Using empty setting
            Assert.IsTrue(consumerNames.Contains(Path.Combine(TestData.TestDataDirectory, @"IdlOutput\DsmSuite.Analyzer.VisualStudio.Test.Data.tlb"))); // Using explicit setting

            Assert.AreEqual(6, consumerNames.Count);

            Assert.AreEqual(6, projectFile.GeneratedFileRelations.Count);
        }
Exemple #2
0
        public void TestProjectIncludeDirectoriesFound()
        {
            ProjectFile projectFile = CreateProjectFile();

            projectFile.Analyze();
            Assert.AreEqual(7, projectFile.ProjectIncludeDirectories.Count);

            ImmutableHashSet <string> includes = projectFile.ProjectIncludeDirectories.ToImmutableHashSet();

            Assert.IsTrue(includes.Contains(TestData.TestDataDirectory));
            string includeInProjectFile = Path.Combine(TestData.TestDataDirectory, "DirA");

            Assert.IsTrue(includes.Contains(includeInProjectFile));
            string includeInProjectFileUsingProperty = Path.Combine(TestData.TestDataDirectory, "DirB");

            Assert.IsTrue(includes.Contains(includeInProjectFileUsingProperty));
            string includeInPropertyFile = Path.Combine(TestData.TestDataDirectory, "DirC");

            Assert.IsTrue(includes.Contains(includeInPropertyFile));
            string includeInPropertyFileUsingProperty = Path.Combine(TestData.TestDataDirectory, "DirD");

            Assert.IsTrue(includes.Contains(includeInPropertyFileUsingProperty));
            string includeInPropertyFileUsingProgramming = Path.Combine(TestData.TestDataDirectory, "DirE");

            Assert.IsTrue(includes.Contains(includeInPropertyFileUsingProgramming));
            string includeExternal = Path.Combine(TestData.TestDataDirectory, "DirExternal");

            Assert.IsTrue(includes.Contains(includeExternal));
        }
Exemple #3
0
        public void TestSystemIncludeDirectoriesFound()
        {
            AnalyzerSettings analyzerSettings = AnalyzerSettings.CreateDefault();
            ProjectFile      projectFile      = CreateProjectFile(analyzerSettings);

            projectFile.Analyze();
            Assert.AreEqual(5, projectFile.SystemIncludeDirectories.Count);

            ImmutableHashSet <string> includes = projectFile.SystemIncludeDirectories.ToImmutableHashSet();

            Assert.IsTrue(includes.Contains(@"C:\Program Files (x86)\Windows Kits\8.1\Include\um"));
            Assert.IsTrue(includes.Contains(@"C:\Program Files (x86)\Windows Kits\8.1\Include\shared"));
            Assert.IsTrue(includes.Contains(@"C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt"));
            Assert.IsTrue(includes.Contains(@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include"));
            Assert.IsTrue(includes.Contains(@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include"));
        }
Exemple #4
0
        public void TestExternalIncludeDirectoriesFound()
        {
            string           externalDir1     = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), @"..\..\DsmSuite.Analyzer.VisualStudio.Test\External1"));
            string           externalDir2     = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), @"..\..\DsmSuite.Analyzer.VisualStudio.Test\External2"));
            AnalyzerSettings analyzerSettings = AnalyzerSettings.CreateDefault();

            analyzerSettings.ExternalIncludeDirectories.Add(new ExternalIncludeDirectory {
                Path = externalDir1, ResolveAs = "External1"
            });
            analyzerSettings.ExternalIncludeDirectories.Add(new ExternalIncludeDirectory {
                Path = externalDir2, ResolveAs = "External2"
            });
            ProjectFile projectFile = CreateProjectFile(analyzerSettings);

            projectFile.Analyze();
            Assert.AreEqual(2, projectFile.ExternalIncludeDirectories.Count);

            ImmutableHashSet <string> includes = projectFile.ExternalIncludeDirectories.ToImmutableHashSet();

            Assert.IsTrue(includes.Contains(externalDir1));
            Assert.IsTrue(includes.Contains(externalDir2));
        }
Exemple #5
0
        public void TestSourceFilesFound()
        {
            ProjectFile projectFile = CreateProjectFile();

            projectFile.Analyze();

            HashSet <string> sourceFilenames = GetSourceFiles(projectFile);

            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirA\ClassA1.h")));
            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirA\ClassA1.cpp")));
            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirA\ClassA2.h")));
            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirA\ClassA2.cpp")));
            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirA\ClassA3.h")));

            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirB\ClassB1.h")));
            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirB\ClassB1.cpp")));

            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirC\ClassC1.h")));
            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirC\ClassC1.cpp")));

            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirD\ClassD1.h")));
            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirD\ClassD1.cpp")));

            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirE\ClassE1.h")));
            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirE\ClassE1.cpp")));

            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirClones\Identical\ClassA1.cpp")));
            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirClones\Identical\CopyClassA1.cpp")));
            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirClones\NotIdentical\ClassA1.cpp")));

            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirIDL\IInterface1.idl")));
            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, @"DirIDL\IInterface2.idl")));

            Assert.IsTrue(sourceFilenames.Contains(Path.Combine(TestData.TestDataDirectory, "targetver.h")));

            Assert.AreEqual(25, projectFile.SourceFiles.Count); // 19 files plus 6 IDL generated files
        }