private DteServices CreateInstance(IServiceProvider serviceProvider) { var threadingService = IProjectThreadingServiceFactory.ImplementVerifyOnUIThread(() => { }); var projectVsServices = IUnconfiguredProjectVsServicesFactory.Implement(threadingServiceCreator: () => threadingService); return(new DteServices(serviceProvider, projectVsServices)); }
public void Project_WhenNotOnUIThread_Throws() { var threadingService = IProjectThreadingServiceFactory.ImplementVerifyOnUIThread(() => { throw new InvalidOperationException(); }); var projectVsServices = IUnconfiguredProjectVsServicesFactory.Implement(threadingServiceCreator: () => threadingService); var dteServices = CreateInstance(projectVsServices); Assert.Throws <InvalidOperationException>(() => { var ignored = dteServices.Project; }); }
public void Value_WhenMissingService_ReturnsNull() { var threadingService = IProjectThreadingServiceFactory.ImplementVerifyOnUIThread(() => { }); var serviceProvider = IServiceProviderFactory.ImplementGetService(type => null); var service = CreateInstance <string, string>(serviceProvider: serviceProvider, threadingService: threadingService); var result = service.Value; Assert.Null(result); }
public void Value_WhenMissingService_Throws() { var threadingService = IProjectThreadingServiceFactory.ImplementVerifyOnUIThread(() => { }); var serviceProvider = IServiceProviderFactory.ImplementGetService(type => null); var service = CreateInstance <string, string>(serviceProvider: serviceProvider, threadingService: threadingService); // We don't really care about the exception, it's an assertion Assert.ThrowsAny <Exception>(() => { var value = service.Value; }); }
public void Value_DoesNotCache() { var threadingService = IProjectThreadingServiceFactory.ImplementVerifyOnUIThread(() => { }); var serviceProvider = IServiceProviderFactory.ImplementGetService(type => { return(new object()); }); var service = CreateInstance <string, object>(serviceProvider: serviceProvider, threadingService: threadingService); var result1 = service.Value; var result2 = service.Value; Assert.NotSame(result1, result2); }
public void Project_ReturnsVsHierarchyGetProperty() { var project = ProjectFactory.Create(); var hierarchy = IVsHierarchyFactory.Create(); hierarchy.ImplementGetProperty(VsHierarchyPropID.ExtObject, project); var threadingService = IProjectThreadingServiceFactory.ImplementVerifyOnUIThread(() => { }); var projectVsServices = IUnconfiguredProjectVsServicesFactory.Implement(hierarchyCreator: () => hierarchy, threadingServiceCreator: () => threadingService); var dteServices = CreateInstance(projectVsServices); var result = dteServices.Project; Assert.Same(project, result); }
public void Value_ReturnsGetService() { object input = new object(); var threadingService = IProjectThreadingServiceFactory.ImplementVerifyOnUIThread(() => { }); var serviceProvider = IServiceProviderFactory.ImplementGetService(type => { if (type == typeof(string)) { return(input); } return(null); }); var service = CreateInstance <string, object>(serviceProvider: serviceProvider, threadingService: threadingService); var result = service.Value; Assert.Same(input, result); }