/// <summary>
        /// Initializes a new instance of the <see cref="GenerateTestForSymbolCommand"/> class.
        /// Adds our command handlers for menu (commands must exist in the command table file).
        /// </summary>
        /// <param name="package">Owner package, not null.</param>
        /// <param name="commandService">Command service to add command to, not null.</param>
        private GenerateTestForSymbolCommand(IUnitTestGeneratorPackage package, OleMenuCommandService commandService)
        {
            _package       = package ?? throw new ArgumentNullException(nameof(package));
            commandService = commandService ?? throw new ArgumentNullException(nameof(commandService));

            var menuCommandId             = new CommandID(CommandSet, CommandId);
            var regenerationMenuCommandId = new CommandID(CommandSet, RegenerateCommandId);

            var menuItem             = new OleMenuCommand(Execute, menuCommandId);
            var regenerationMenuItem = new OleMenuCommand(ExecuteRegeneration, regenerationMenuCommandId);

            menuItem.BeforeQueryStatus += (s, e) =>
            {
                ThreadHelper.ThrowIfNotOnUIThread();
                var textView = GetTextView();

                var methodTask = package.JoinableTaskFactory.RunAsync(async() => await GetTargetSymbolAsync(textView).ConfigureAwait(true));
                var tuple      = methodTask.Join();
                var symbol     = tuple?.Item2;
                var baseType   = tuple?.Item3;
                menuItem.Visible             = false;
                regenerationMenuItem.Visible = false;
                if (symbol != null)
                {
                    menuItem.Visible             = true;
                    regenerationMenuItem.Visible = Keyboard.IsKeyDown(Key.LeftShift);
                    if (symbol.Kind == SymbolKind.NamedType)
                    {
                        menuItem.Text             = "Generate tests for type '" + symbol.Name + "'...";
                        regenerationMenuItem.Text = "Regenerate tests for type '" + symbol.Name + "'...";
                    }
                    else if (string.Equals(symbol.Name, ".ctor", StringComparison.OrdinalIgnoreCase))
                    {
                        menuItem.Text             = "Generate test for all constructors...";
                        regenerationMenuItem.Text = "Regenerate test for all constructors...";
                    }
                    else
                    {
                        menuItem.Text             = "Generate test for " + symbol.Kind.ToString().ToLower(CultureInfo.CurrentCulture) + " '" + symbol.Name + "'...";
                        regenerationMenuItem.Text = "Regenerate test for " + symbol.Kind.ToString().ToLower(CultureInfo.CurrentCulture) + " '" + symbol.Name + "'...";
                    }
                }
                else if (baseType.HasValue)
                {
                    if (InterfaceGenerationStrategyFactory.Supports(baseType.Value))
                    {
                        menuItem.Visible             = true;
                        regenerationMenuItem.Visible = Keyboard.IsKeyDown(Key.LeftShift);
                        menuItem.Text             = "Generate tests for base type '" + baseType.Value.Type.Name + "'...";
                        regenerationMenuItem.Text = "Regenerate tests for base type '" + baseType.Value.Type.Name + "'...";
                    }
                }
            };

            commandService.AddCommand(menuItem);
            commandService.AddCommand(regenerationMenuItem);
        }
Ejemplo n.º 2
0
        public void CanConstruct()
        {
            var instance = new InterfaceGenerationStrategyFactory(_frameworkSet);

            Assert.That(instance, Is.Not.Null);
        }
Ejemplo n.º 3
0
 public void SetUp()
 {
     _frameworkSet = Substitute.For <IFrameworkSet>();
     _testClass    = new InterfaceGenerationStrategyFactory(_frameworkSet);
 }