public void Should_Not_Use_Data_Collector_If_Disabled_In_RunSettings(UseDataCollectorElement useDataCollector)
        {
            var mockCoverageProject = new Mock <ICoverageProject>();

            mockCoverageProject.Setup(cp => cp.ProjectFileXElement).Returns(GetProjectElementWithDataCollector(useDataCollector));
            SetupDataCollectorState(mockCoverageProject, CoverletDataCollectorState.Disabled);

            Assert.False(coverletDataCollectorUtil.CanUseDataCollector(mockCoverageProject.Object));
        }
        private XElement GetProjectElementWithDataCollector(UseDataCollectorElement useDataCollector)
        {
            var useDataCollectorElement = "";

            if (useDataCollector != UseDataCollectorElement.None)
            {
                var value = "";
                if (useDataCollector == UseDataCollectorElement.True)
                {
                    value = "true";
                }
                if (useDataCollector == UseDataCollectorElement.False)
                {
                    value = "false";
                }
                useDataCollectorElement = $"<PropertyGroup><UseDataCollector>{value}</UseDataCollector></PropertyGroup>";
            }

            return(XElement.Parse($@"<Project>
{useDataCollectorElement}
</Project>"));
        }
        public void Should_Use_Data_Collector_If_RunSettings_Has_The_Data_Collector_Enabled_And_Not_Overridden_By_Project_File(UseDataCollectorElement useDataCollector)
        {
            var mockCoverageProject = new Mock <ICoverageProject>();

            mockCoverageProject.Setup(cp => cp.ProjectFileXElement).Returns(GetProjectElementWithDataCollector(useDataCollector));
            SetupDataCollectorState(mockCoverageProject, CoverletDataCollectorState.Enabled);

            Assert.True(coverletDataCollectorUtil.CanUseDataCollector(mockCoverageProject.Object));
        }
        public void Should_Not_Use_Data_Collector_If_No_RunSettings_And_Not_Specified_In_ProjectFile(UseDataCollectorElement useDataCollector)
        {
            var mockCoverageProject = new Mock <ICoverageProject>();

            mockCoverageProject.Setup(cp => cp.RunSettingsFile).Returns((string)null);
            mockCoverageProject.Setup(cp => cp.ProjectFileXElement).Returns(GetProjectElementWithDataCollector(useDataCollector));

            Assert.False(coverletDataCollectorUtil.CanUseDataCollector(mockCoverageProject.Object));
        }
        public void Should_Use_Data_Collector_If_Not_Specified_In_RunSettings_And_Specified_In_ProjectFile(UseDataCollectorElement useDataCollectorElement)
        {
            var mockCoverageProject = new Mock <ICoverageProject>();

            mockCoverageProject.Setup(cp => cp.ProjectFileXElement).Returns(GetProjectElementWithDataCollector(useDataCollectorElement));

            SetupDataCollectorState(mockCoverageProject, CoverletDataCollectorState.NotPresent);

            Assert.True(coverletDataCollectorUtil.CanUseDataCollector(mockCoverageProject.Object));
        }
        public void Should_Use_Data_Collector_If_Not_Specified_In_RunSettings_And_Specified_In_ProjectFile_VSBuild(UseDataCollectorElement useDataCollector, bool expected)
        {
            var mockCoverageProject = new Mock <ICoverageProject>();
            var guid = Guid.NewGuid();

            mockCoverageProject.Setup(cp => cp.Id).Returns(guid);
            mockCoverageProject.Setup(cp => cp.ProjectFileXElement).Returns(new XElement("Root"));


            var mockVsBuildFCCSettingsProvider = mocker.GetMock <IVsBuildFCCSettingsProvider>();
            var useDataCollectorElement        = "";

            if (useDataCollector != UseDataCollectorElement.None)
            {
                var value = "";
                if (useDataCollector == UseDataCollectorElement.True)
                {
                    value = "true";
                }
                if (useDataCollector == UseDataCollectorElement.False)
                {
                    value = "false";
                }
                useDataCollectorElement = $"<UseDataCollector>{value}</UseDataCollector>";
            }
            XElement vsBuildProjectFileElement = XElement.Parse($"<FineCodeCoverage>{useDataCollectorElement}</FineCodeCoverage>");

            mockVsBuildFCCSettingsProvider.Setup(
                vsBuildFCCSettingsProvider =>
                vsBuildFCCSettingsProvider.GetSettingsAsync(guid)
                ).ReturnsAsync(vsBuildProjectFileElement);



            Assert.AreEqual(expected, coverletDataCollectorUtil.CanUseDataCollector(mockCoverageProject.Object));
        }