private static InterceptedProjectPropertiesProviderBase CreateInstance(FrameworkName configuredTargetFramework) { var data = new PropertyPageData(ConfigurationGeneral.SchemaName, ConfigurationGeneral.TargetFrameworkMonikerProperty, configuredTargetFramework.FullName); var project = UnconfiguredProjectFactory.Create(); var properties = ProjectPropertiesFactory.Create(project, data); var delegateProvider = IProjectPropertiesProviderFactory.Create(); var instancePropertiesMock = IProjectPropertiesFactory .MockWithProperty(TargetFrameworkPropertyName); var instanceProperties = instancePropertiesMock.Object; var instanceProvider = IProjectInstancePropertiesProviderFactory.ImplementsGetCommonProperties(instanceProperties); var targetFrameworkProvider = new TargetFrameworkValueProvider(properties); var providerMetadata = IInterceptingPropertyValueProviderMetadataFactory.Create(TargetFrameworkPropertyName); var lazyArray = new[] { new Lazy <IInterceptingPropertyValueProvider, IInterceptingPropertyValueProviderMetadata>( () => targetFrameworkProvider, providerMetadata) }; return(new ProjectFileInterceptedViaSnapshotProjectPropertiesProvider(delegateProvider, instanceProvider, project, lazyArray)); }
public async Task VerifyInterceptedViaSnapshotCommonPropertiesProviderAsync() { var delegatePropertiesMock = IProjectPropertiesFactory.MockWithPropertiesAndValues( new Dictionary <string, string?> { { MockPropertyName, "DummyValue" } }); var delegateProperties = delegatePropertiesMock.Object; var delegateProvider = IProjectPropertiesProviderFactory.Create(commonProps: delegateProperties); bool getEvaluatedInvoked = false; bool getUnevaluatedInvoked = false; bool setValueInvoked = false; var mockPropertyProvider = IInterceptingPropertyValueProviderFactory.Create(MockPropertyName, onGetEvaluatedPropertyValue: (v, p) => { getEvaluatedInvoked = true; return(v); }, onGetUnevaluatedPropertyValue: (v, p) => { getUnevaluatedInvoked = true; return(v); }, onSetPropertyValue: (v, p, d) => { setValueInvoked = true; return(v); }); var unconfiguredProject = UnconfiguredProjectFactory.Create(); var instanceProvider = IProjectInstancePropertiesProviderFactory.Create(); var interceptedProvider = new ProjectFileInterceptedViaSnapshotProjectPropertiesProvider(delegateProvider, instanceProvider, unconfiguredProject, new[] { mockPropertyProvider }); var properties = interceptedProvider.GetCommonProperties(); // Verify interception for GetEvaluatedPropertyValueAsync. string?propertyValue = await properties.GetEvaluatedPropertyValueAsync(MockPropertyName); Assert.True(getEvaluatedInvoked); // Verify interception for GetUnevaluatedPropertyValueAsync. propertyValue = await properties.GetUnevaluatedPropertyValueAsync(MockPropertyName); Assert.True(getUnevaluatedInvoked); // Verify interception for SetPropertyValueAsync. await properties.SetPropertyValueAsync(MockPropertyName, "NewValue", null); Assert.True(setValueInvoked); }
public TestProjectFileOrAssemblyInfoPropertiesProvider( Workspace workspace, UnconfiguredProject unconfiguredProject, Lazy <IInterceptingPropertyValueProvider, IInterceptingPropertyValueProviderMetadata> interceptingProvider = null, IProjectThreadingService threadingService = null, IProjectProperties defaultProperties = null, IProjectInstancePropertiesProvider instanceProvider = null, Func <ProjectId> getActiveProjectId = null) : base(delegatedProvider : IProjectPropertiesProviderFactory.Create(defaultProperties ?? IProjectPropertiesFactory.MockWithProperty("").Object), instanceProvider : instanceProvider ?? IProjectInstancePropertiesProviderFactory.Create(), interceptingValueProviders : interceptingProvider == null ? new[] { new Lazy <IInterceptingPropertyValueProvider, IInterceptingPropertyValueProviderMetadata>( () => IInterceptingPropertyValueProviderFactory.Create(), IInterceptingPropertyValueProviderMetadataFactory.Create("")) } : new[] { interceptingProvider }, unconfiguredProject : unconfiguredProject, getActiveProjectId : getActiveProjectId ?? (() => workspace.CurrentSolution.ProjectIds.SingleOrDefault()), workspace : workspace, threadingService : threadingService ?? IProjectThreadingServiceFactory.Create()) { Requires.NotNull(workspace, nameof(workspace)); Requires.NotNull(unconfiguredProject, nameof(unconfiguredProject)); }