public async Task VerifySetKeyFilePropertyAsync()
        {
            string projectFolder          = @"C:\project\root";
            string projectFullPath        = $@"{projectFolder}\project.testproj";
            string keyFileName            = "KeyFile.snk";
            string keyFileFullPath        = $@"{projectFolder}\{keyFileName}";
            var    instancePropertiesMock = IProjectPropertiesFactory.MockWithPropertiesAndValues(
                new Dictionary <string, string?>
            {
                { AssemblyOriginatorKeyFilePropertyName, keyFileFullPath }
            });

            var instanceProperties = instancePropertiesMock.Object;
            var instanceProvider   = IProjectInstancePropertiesProviderFactory.ImplementsGetCommonProperties(instanceProperties);

            // Verify get key file value without intercepted provider.
            var properties    = instanceProvider.GetCommonProperties(null !);
            var propertyValue = await properties.GetEvaluatedPropertyValueAsync(AssemblyOriginatorKeyFilePropertyName);

            Assert.Equal(keyFileFullPath, propertyValue);

            // Verify relative path key file value from intercepted key file provider.
            var project          = UnconfiguredProjectFactory.Create(fullPath: projectFullPath);
            var delegateProvider = IProjectPropertiesProviderFactory.Create();
            var keyFileProvider  = new AssemblyOriginatorKeyFileValueProvider(project);
            var providerMetadata = IInterceptingPropertyValueProviderMetadataFactory.Create(AssemblyOriginatorKeyFilePropertyName);
            var lazyArray        = new[] { new Lazy <IInterceptingPropertyValueProvider, IInterceptingPropertyValueProviderMetadata>(
                                               () => keyFileProvider, providerMetadata) };
            var interceptedProvider = new ProjectFileInterceptedViaSnapshotProjectPropertiesProvider(delegateProvider, instanceProvider, project, lazyArray);
            var propertyNames       = await properties.GetPropertyNamesAsync();

            Assert.Single(propertyNames);
            Assert.Equal(AssemblyOriginatorKeyFilePropertyName, propertyNames.First());
            properties = interceptedProvider.GetCommonProperties(null !);
            string newKeyFileName     = "KeyFile2.snk";
            string newKeyFileFullPath = $@"{projectFolder}\{newKeyFileName}";
            await properties.SetPropertyValueAsync(AssemblyOriginatorKeyFilePropertyName, newKeyFileFullPath);

            propertyValue = await properties.GetEvaluatedPropertyValueAsync(AssemblyOriginatorKeyFilePropertyName);

            Assert.Equal(newKeyFileName, propertyValue);
        }
Exemplo n.º 2
0
        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);
        }