public void when_added_command_exists_then_throws()
        {
            var manager = new CommandManager(
                Mock.Of<IServiceProvider>(x =>
                    x.GetService(typeof(SVsShell)) == Mock.Of<IVsShell>() &&
                    x.GetService(typeof(DTE)) == Mock.Of<DTE>(dte =>
                        dte.Events.get_CommandEvents(It.IsAny<string>(), It.IsAny<int>()) == Mock.Of<CommandEvents>()) &&
                    x.GetService(typeof(IMenuCommandService)) == Mock.Of<IMenuCommandService>(mcs =>
                        mcs.FindCommand(It.IsAny<CommandID>()) == new MenuCommand(null, new CommandID(Guid.Empty, 0)))),
                Enumerable.Empty<Lazy<ICommandExtension, CommandAttribute>>(),
                Enumerable.Empty<Lazy<ICommandFilter, CommandFilterAttribute>>(),
                Enumerable.Empty<Lazy<ICommandInterceptor, CommandInterceptorAttribute>>());

            Assert.Throws<ArgumentException>(() =>
                manager.AddCommand(Mock.Of<ICommandExtension>(), new CommandAttribute(Guid.NewGuid().ToString(), 5)));
        }
        public void when_adding_commands_then_skips_commands_for_other_packages()
        {
			var menusvc = new Mock<IMenuCommandService> ();

			var package = new Mock<MockPackage> ().As<IServiceProvider>();
			package.Setup(x => x.GetService(typeof(IMenuCommandService))).Returns(menusvc.Object);
			package.Setup(x => x.GetService(typeof(SVsShell))).Returns(Mock.Of<IVsShell>());
			package.Setup(x => x.GetService(typeof(DTE))).Returns(Mock.Of<DTE>(dte =>
                        dte.Events.get_CommandEvents(It.IsAny<string>(), It.IsAny<int>()) == Mock.Of<CommandEvents>()));

            var manager = new CommandManager(package.Object,
				new Lazy<ICommandExtension, CommandAttribute>[] {
					new Lazy<ICommandExtension, CommandAttribute>(() => Mock.Of<ICommandExtension>(), new CommandAttribute("CCB471F4-B764-4B1C-BEB7-26AFE5B9F48E", Guid.NewGuid().ToString(), 1)),
					new Lazy<ICommandExtension, CommandAttribute>(() => Mock.Of<ICommandExtension>(), new CommandAttribute("CD7DB44E-0472-49C8-92C5-046677F55E27", Guid.NewGuid().ToString(), 1)),
				},
                Enumerable.Empty<Lazy<ICommandFilter, CommandFilterAttribute>>(),
                Enumerable.Empty<Lazy<ICommandInterceptor, CommandInterceptorAttribute>>());

			manager.AddCommands ();

			menusvc.Verify (x => x.AddCommand (It.IsAny<MenuCommand> ()), Times.Once ());
        }