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;
            });
        }
Beispiel #3
0
        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;
            });
        }
Beispiel #5
0
        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);
        }
Beispiel #7
0
        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);
        }