public void LoadUnloadProjectFactories() { var service = new MockInterpreterOptionsService(); var mockProvider = new MockPythonInterpreterFactoryProvider("Test Provider"); mockProvider.AddFactory(new MockPythonInterpreterFactory(Guid.NewGuid(), "Test Environment", MockInterpreterConfiguration(new Version(2, 7)))); service.AddProvider(mockProvider); var loaded = new LoadedProjectInterpreterFactoryProvider(); service.AddProvider(loaded); using (var wpf = new WpfProxy()) using (var list = new EnvironmentListProxy(wpf)) { list.Service = service; // List only contains one entry AssertUtil.ContainsExactly( wpf.Invoke(() => list.Environments.Select(ev => ev.Description).ToList()), "Test Environment" ); var project = new MockPythonInterpreterFactoryProvider("Fake Project"); project.AddFactory(new MockPythonInterpreterFactory(Guid.NewGuid(), "Fake Environment", MockInterpreterConfiguration(new Version(2, 7)))); loaded.ProjectLoaded(project, null); // List now contains two entries AssertUtil.ContainsExactly( wpf.Invoke(() => list.Environments.Select(ev => ev.Description).ToList()), "Test Environment", "Fake Environment" ); loaded.ProjectUnloaded(project); // List only has one entry again AssertUtil.ContainsExactly( wpf.Invoke(() => list.Environments.Select(ev => ev.Description).ToList()), "Test Environment" ); } }
public void AddRemoveProjectFactories() { var service = new MockInterpreterOptionsService(); var loaded = new LoadedProjectInterpreterFactoryProvider(); service.AddProvider(loaded); using (var wpf = new WpfProxy()) using (var list = new EnvironmentListProxy(wpf)) { list.Service = service; // List should be empty AssertUtil.ContainsExactly(list.Environments); var project = new MockPythonInterpreterFactoryProvider("Fake Project"); loaded.ProjectLoaded(project, null); // List is still empty AssertUtil.ContainsExactly(list.Environments); project.AddFactory(new MockPythonInterpreterFactory(Guid.NewGuid(), "Fake Environment", MockInterpreterConfiguration(new Version(2, 7)))); // List now contains one project AssertUtil.ContainsExactly( wpf.Invoke(() => list.Environments.Select(ev => ev.Description).ToList()), "Fake Environment" ); project.RemoveAllFactories(); // List is empty again AssertUtil.ContainsExactly(list.Environments); loaded.ProjectUnloaded(project); } }