public async Task VerifyInterceptedViaSnapshotInstanceCommonPropertiesProviderAsync()
        {
            var delegatePropertiesMock = IProjectPropertiesFactory.MockWithPropertiesAndValues(
                new Dictionary <string, string?>
            {
                { MockPropertyName, "DummyValue" }
            });

            var delegateProperties       = delegatePropertiesMock.Object;
            var delegateInstanceProvider = IProjectInstancePropertiesProviderFactory.ImplementsGetCommonProperties(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 provider            = IProjectPropertiesProviderFactory.Create();

            var interceptedProvider = new ProjectFileInterceptedViaSnapshotProjectPropertiesProvider(provider, delegateInstanceProvider, unconfiguredProject, new[] { mockPropertyProvider });
            var properties          = interceptedProvider.GetCommonProperties(projectInstance: null);

            // 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);
        }
コード例 #2
0
 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));
 }