void CreateHost()
		{
			host = new TestablePackageManagementConsoleHost();
			fakeSolution = host.FakeSolution;
			scriptingConsole = host.FakeScriptingConsole;
			powerShellHost = host.FakePowerShellHostFactory.FakePowerShellHost;
			fakeRegisteredPackageRepositories = host.FakeRegisteredPackageRepositories;
		}
		void CreateProvider()
		{
			fakeSolution = new FakePackageManagementSolution();
			fakeRegisteredRepositories = new FakeRegisteredPackageRepositories();
			fakePowerShellDetection = new FakePowerShellDetection();
			provider = new PackageManagementConsoleHostProvider(
				fakeSolution,
				fakeRegisteredRepositories,
				fakePowerShellDetection);
		}
		void CreateViewModel(FakePackageManagementSolution solution)
		{
			taskFactory = new FakeTaskFactory();
			registeredPackageRepositories = new FakeRegisteredPackageRepositories();
			var packageViewModelFactory = new FakePackageViewModelFactory();
			viewModel = new UpdatedPackagesViewModel(
				solution,
				registeredPackageRepositories,
				packageViewModelFactory,
				taskFactory);
		}
		void CreateViewModel(
			FakePackageManagementSolution solution,
			FakeRegisteredPackageRepositories registeredPackageRepositories,
			FakePackageActionRunner actionRunner)
		{
			packageViewModelFactory = new FakePackageViewModelFactory {
				FakeSolution = solution,
				FakeActionRunner = actionRunner
			};
			CreateViewModel(solution, registeredPackageRepositories, packageViewModelFactory);
		}
		public TestablePackagesViewModel(
			FakeRegisteredPackageRepositories registeredPackageRepositories,
			FakeTaskFactory taskFactory)
			: base(
				registeredPackageRepositories,
				new FakePackageViewModelFactory(),
				taskFactory)
		{
			FakeRegisteredPackageRepositories = registeredPackageRepositories;
			FakeTaskFactory = taskFactory;
		}
        public TestablePackagesViewModel(
			FakeRegisteredPackageRepositories registeredPackageRepositories,
			FakeTaskFactory taskFactory)
            : base(new FakePackageManagementSolution(),
				new FakePackageManagementEvents(),
				registeredPackageRepositories,
				new FakePackageViewModelFactory(),
				taskFactory)
        {
            FakeRegisteredPackageRepositories = registeredPackageRepositories;
            FakeTaskFactory = taskFactory;
        }
		void CreateCmdlet()
		{
			cmdlet = new TestableGetPackageCmdlet();
			fakeSolution = new FakePackageManagementSolution();
			fakeRegisteredPackageRepositories = cmdlet.FakeRegisteredPackageRepositories;
			fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
			fakeConsoleHost.FakeProject = fakeSolution.FakeActiveProject;
			fakeCommandRuntime = cmdlet.FakeCommandRuntime;
			fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
			
			AddDefaultProjectToConsoleHost();
		}
		void CreateViewModel()
		{
			registeredPackageRepositories = new FakeRegisteredPackageRepositories();
			taskFactory = new FakeTaskFactory();
			var packageViewModelFactory = new FakePackageViewModelFactory();
			packageManagementEvents = new PackageManagementEvents();
			viewModel = new RecentPackagesViewModel(
				packageManagementEvents,
				registeredPackageRepositories,
				packageViewModelFactory,
				taskFactory);
		}
        public TestableGetPackageCmdlet(
			FakeRegisteredPackageRepositories registeredPackageRepositories,
			FakePackageManagementConsoleHost consoleHost,
			FakeCommandRuntime commandRuntime,
			FakeCmdletTerminatingError terminatingError)
            : base(registeredPackageRepositories, consoleHost, terminatingError)
        {
            this.FakeRegisteredPackageRepositories = registeredPackageRepositories;
            this.FakePackageManagementConsoleHost = consoleHost;
            this.FakeCommandRuntime = commandRuntime;
            this.CommandRuntime = commandRuntime;
            this.FakeCmdletTerminatingError = terminatingError;
        }
		void CreateViewModel(FakeRegisteredPackageRepositories registeredPackageRepositories)
		{
			this.registeredPackageRepositories = registeredPackageRepositories;
			taskFactory = new FakeTaskFactory();
			var packageViewModelFactory = new FakePackageViewModelFactory();
			packageManagementEvents = new PackageManagementEvents();
			viewModel = new TestableRecentPackagesViewModel(
				new FakePackageManagementSolution(),
				packageManagementEvents,
				registeredPackageRepositories,
				packageViewModelFactory,
				taskFactory);
		}
		void CreateViewModel(FakePackageManagementSolution solution)
		{
			registeredPackageRepositories = new FakeRegisteredPackageRepositories();
			var packageViewModelFactory = new FakePackageViewModelFactory();
			taskFactory = new FakeTaskFactory();
			packageManagementEvents = new PackageManagementEvents();
			
			viewModel = new InstalledPackagesViewModel(
				solution,
				packageManagementEvents,
				registeredPackageRepositories,
				packageViewModelFactory,
				taskFactory);
		}
		public TestablePackageManagementConsoleHost(
			FakePackageManagementSolution solution,
			FakeRegisteredPackageRepositories registeredPackageRepositories,
			FakeScriptingConsoleWithLinesToRead scriptingConsole,
			FakePowerShellHostFactory powerShellHostFactory,
			FakePackageManagementAddInPath addinPath)
			: base(solution, registeredPackageRepositories, null, powerShellHostFactory, addinPath)
		{
			this.FakeSolution = solution;
			this.FakeScriptingConsole = scriptingConsole;
			this.ScriptingConsole = scriptingConsole;
			this.FakePowerShellHostFactory = powerShellHostFactory;
			this.FakeRegisteredPackageRepositories = registeredPackageRepositories;
			this.FakePackageManagementAddInPath = addinPath;
		}
		void CreateSolution(PackageManagementOptions options)
		{
			testProject = ProjectHelper.CreateTestProject();
			fakeRegisteredPackageRepositories = new FakeRegisteredPackageRepositories();
			fakeProjectFactory = new FakePackageManagementProjectFactory();
			fakeProjectService = new FakePackageManagementProjectService();
			var packageManagementEvents = new FakePackageManagementEvents();
			
			fakeProjectService.CurrentProject = testProject;
			solution =
				new PackageManagementSolution(
					fakeRegisteredPackageRepositories,
					packageManagementEvents,
					fakeProjectService,
					fakeProjectFactory);
		}
		void CreateSolution(PackageManagementOptions options)
		{
			testProject = ProjectHelper.CreateTestProject();
			fakeRegisteredPackageRepositories = new FakeRegisteredPackageRepositories();
			fakeProjectFactory = new FakePackageManagementProjectFactory();
			fakeProjectService = new FakePackageManagementProjectService();
			
			fakeProjectService.CurrentProject = testProject;
			fakeProjectService.OpenSolution = testProject.ParentSolution;
			
			fakeSolutionPackageRepositoryFactory = new FakeSolutionPackageRepositoryFactory();
			fakeSolutionPackageRepository = fakeSolutionPackageRepositoryFactory.FakeSolutionPackageRepository;
			
			solution =
				new PackageManagementSolution(
					fakeRegisteredPackageRepositories,
					fakeProjectService,
					fakeProjectFactory,
					fakeSolutionPackageRepositoryFactory);
		}
		void CreateSolution()
		{
			solution = new FakePackageManagementSolution();
			registeredPackageRepositories = new FakeRegisteredPackageRepositories();
		}
		void CreateViewModel(FakeRegisteredPackageRepositories registeredPackageRepositories)
		{
			taskFactory = new FakeTaskFactory();
			var packageViewModelFactory = new FakePackageViewModelFactory();
			viewModel = new AvailablePackagesViewModel(registeredPackageRepositories, packageViewModelFactory, taskFactory);
		}
		void CreateRegisteredPackageRepositories()
		{
			registeredPackageRepositories = new FakeRegisteredPackageRepositories();
		}
		void CreateSolution()
		{
			fakeSolution = new FakePackageManagementSolution();
			fakeRegisteredPackageRepositories = new FakeRegisteredPackageRepositories();
			fakeSolution.FakeActiveMSBuildProject = ProjectHelper.CreateTestProject();
		}
		void CreateViewModel(
			FakePackageManagementSolution solution,
			FakeRegisteredPackageRepositories registeredPackageRepositories,
			FakePackageViewModelFactory packageViewModelFactory)
		{
			taskFactory = new FakeTaskFactory();
			this.packageViewModelFactory = packageViewModelFactory;
			fakePackageManagementEvents = packageViewModelFactory.FakePackageManagementEvents;
			updatedPackageViewModelFactory = new UpdatedPackageViewModelFactory(packageViewModelFactory);
			viewModel = new UpdatedPackagesViewModel(
				solution,
				packageManagementEvents,
				registeredPackageRepositories,
				updatedPackageViewModelFactory,
				taskFactory);
		}
 public TestablePackagesViewModel(FakeRegisteredPackageRepositories registeredPackageRepositories)
     : this(registeredPackageRepositories, new FakeTaskFactory())
 {
 }
		void CreateViewModel(FakeRegisteredPackageRepositories registeredPackageRepositories)
		{
			CreateSolution();
			CreateViewModel(solution, registeredPackageRepositories);
		}
		void CreateViewModel(FakeRegisteredPackageRepositories registeredPackageRepositories)
		{
			viewModel = new TestablePackagesViewModel(registeredPackageRepositories);
			this.registeredPackageRepositories = registeredPackageRepositories;
			taskFactory = viewModel.FakeTaskFactory;
		}