Esempio n. 1
0
        internal static void HandleCheckException_UsesAsserterFail(GenericFixer fixer, Fake <Asserter> asserter, TimeSpan timeout)
        {
            asserter.Setup(
                d => d.Fail(Arg.Any <Exception>(), Arg.Any <string>()),
                Behavior.None(Times.Once));

            new ExceptionGuarder(fixer, Tools.Randomizer, asserter.Dummy, timeout)
            .CallAllMethods(new MethodThrowsSample(), null);

            asserter.VerifyAll();
        }
        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"));
        }
        public static IFixer SelectImplementation(Options options)
        {
            if (!string.IsNullOrWhiteSpace(options.LangVersion) &&
                !string.IsNullOrWhiteSpace(options.TargetFrameworkVersion))
            {
                GenericFixer langVersionFixer     = CreateLangVersionFixer(options);
                GenericFixer targetFrameworkFixer = CreateTargetFrameworkFixer(options);
                return(new CompositeFixer(new[] { langVersionFixer, targetFrameworkFixer }));
            }

            if (!string.IsNullOrWhiteSpace(options.LangVersion))
            {
                return(CreateLangVersionFixer(options));
            }

            if (!string.IsNullOrWhiteSpace(options.TargetFrameworkVersion))
            {
                return(CreateTargetFrameworkFixer(options));
            }

            throw new InvalidOperationException("Either --lang-version or --target-framework option must be specified");
        }