public void QueryStatus_SingleStartupProject_LessThan2Frameworks(bool createList)
        {
            var activeDebugFrameworkSvcs = new IActiveDebugFrameworkServicesMock()
                                           .ImplementGetProjectFrameworksAsync(createList ? new List <string>()
            {
                "netcoreapp1.0"
            } : null);
            var startupHelper = new Mock <IStartupProjectHelper>();

            startupHelper.Setup(x => x.GetExportFromDotNetStartupProjects <IActiveDebugFrameworkServices>(ProjectCapability.LaunchProfiles))
            .Returns(ImmutableArray.Create(activeDebugFrameworkSvcs.Object));

            var command = CreateInstance(startupHelper.Object);

            Assert.True(command.QueryStatusCommand(0, EventArgs.Empty));
            Assert.False(command.Visible);
            Assert.Equal("", command.Text);
            Assert.False(command.Checked);
            Assert.False(command.Enabled);

            startupHelper.Verify();
            activeDebugFrameworkSvcs.Verify();
        }
        public void QueryStatus_MultipleStartupProjects_NullFrameworks()
        {
            var activeDebugFrameworkSvcs1 = new IActiveDebugFrameworkServicesMock()
                                            .ImplementGetActiveDebuggingFrameworkPropertyAsync(null)
                                            .ImplementGetProjectFrameworksAsync(null);

            var activeDebugFrameworkSvcs2 = new IActiveDebugFrameworkServicesMock()
                                            .ImplementGetActiveDebuggingFrameworkPropertyAsync(null)
                                            .ImplementGetProjectFrameworksAsync(null);

            var startupHelper = new Mock <IStartupProjectHelper>();

            startupHelper.Setup(x => x.GetExportFromDotNetStartupProjects <IActiveDebugFrameworkServices>(ProjectCapability.LaunchProfiles))
            .Returns(ImmutableArray.Create(activeDebugFrameworkSvcs1.Object, activeDebugFrameworkSvcs2.Object));

            var command = new TestDebugFrameworkPropertyMenuTextUpdater(startupHelper.Object);

            command.QueryStatus();
            Assert.True(command.Visible);
            Assert.Equal("", command.Text);
            Assert.False(command.Checked);
            Assert.True(command.Enabled);
        }
        public void ExecCommand_MultipleStartupProjects_VerifyCorrectFrameworkSet(int cmdIndex, bool expected)
        {
            var frameworks1 = new List <string>()
            {
                "net461", "netcoreapp1.0"
            };
            var activeDebugFrameworkSvcs1 = new IActiveDebugFrameworkServicesMock()
                                            .ImplementGetActiveDebuggingFrameworkPropertyAsync(null)
                                            .ImplementGetProjectFrameworksAsync(frameworks1);

            var frameworks2 = new List <string>()
            {
                "net461", "netcoreapp1.0"
            };
            var activeDebugFrameworkSvcs2 = new IActiveDebugFrameworkServicesMock()
                                            .ImplementGetActiveDebuggingFrameworkPropertyAsync(null)
                                            .ImplementGetProjectFrameworksAsync(frameworks2);

            if (expected)
            {
                activeDebugFrameworkSvcs1.ImplementSetActiveDebuggingFrameworkPropertyAsync(frameworks1[cmdIndex]);
                activeDebugFrameworkSvcs2.ImplementSetActiveDebuggingFrameworkPropertyAsync(frameworks2[cmdIndex]);
            }
            var startupHelper = new Mock <IStartupProjectHelper>();

            startupHelper.Setup(x => x.GetExportFromDotNetStartupProjects <IActiveDebugFrameworkServices>(ProjectCapability.LaunchProfiles))
            .Returns(ImmutableArray.Create(activeDebugFrameworkSvcs1.Object, activeDebugFrameworkSvcs2.Object));

            var command = CreateInstance(startupHelper.Object);

            Assert.Equal(expected, command.ExecCommand(cmdIndex, EventArgs.Empty));

            startupHelper.Verify();
            activeDebugFrameworkSvcs1.Verify();
            activeDebugFrameworkSvcs2.Verify();
        }