public void Fix_ProjectDoesNotContainLangVersion_LangVersionIsAdded()
        {
            /* Arrange */
            Project      project = CreateFakeProjectFromXml();
            GenericFixer sut     = CreateLangVersionFixerSut();

            /* Act */
            sut.Fix(project);

            /* Assert */
            Assert.NotNull(
                project
                .Xml.PropertyGroups.SingleOrDefault()?
                .Properties.SingleOrDefault(p => p.Name == "LangVersion" && p.Value == "latest"));
        }
        public void Fix_ProjectContainsUnconditionalLangVersion_ProjectIsNotModified()
        {
            /* Arrange */
            const string unconditionalPropertyGroup =
                @"<PropertyGroup><LangVersion>latest</LangVersion></PropertyGroup>";
            Project project = CreateFakeProjectFromXml(unconditionalPropertyGroup);

            Debug.Assert(!project.IsDirty);
            GenericFixer sut = CreateLangVersionFixerSut();

            /* Act */
            sut.Fix(project);

            /* Assert */
            Assert.IsFalse(project.IsDirty);
        }
        public void Fix_ProjectContainsWrongLangVersion_LangVersionIsSet()
        {
            /* Arrange */
            const string unconditionalPropertyGroup =
                @"<PropertyGroup><LangVersion>default</LangVersion></PropertyGroup>";
            Project      project = CreateFakeProjectFromXml(unconditionalPropertyGroup);
            GenericFixer sut     = CreateLangVersionFixerSut();

            /* Act */
            sut.Fix(project);

            /* Assert */
            Assert.NotNull(
                project
                .Xml.PropertyGroups.SingleOrDefault()?
                .Properties.SingleOrDefault(p => p.Name == "LangVersion" && p.Value == "latest"));
        }
        public void Fix_ProjectContainsConditionalLangVersion_UnconditionalLangVersionIsAdded()
        {
            /* Arrange */
            const string unconditionalPropertyGroup =
                @"
                <PropertyGroup Condition="" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "">
                    <LangVersion>default</LangVersion>
                </PropertyGroup>";
            Project      project = CreateFakeProjectFromXml(unconditionalPropertyGroup);
            GenericFixer sut     = CreateLangVersionFixerSut();

            /* Act */
            sut.Fix(project);

            /* Assert */
            Assert.NotNull(
                project
                .Xml.PropertyGroups.SingleOrDefault(g => g.Condition == string.Empty)?
                .Properties.SingleOrDefault(p => p.Name == "LangVersion" && p.Value == "latest"));
        }