public async Task WhenRetrievingPropertyNames_GlobalSettingExtensionNamesAreIncludedForDefinedProperties() { var alphaValueProvider = IGlobalSettingExtensionValueProviderFactory.Create( (propertyName, globals, rule) => { return("alpha"); }); var alphaMetadata = ILaunchProfileExtensionValueProviderMetadataFactory.Create("AlphaProperty"); var alphaLazy = new Lazy <IGlobalSettingExtensionValueProvider, ILaunchProfileExtensionValueProviderMetadata>( () => alphaValueProvider, alphaMetadata); var betaValueProvider = IGlobalSettingExtensionValueProviderFactory.Create( (propertyName, globals, rule) => { return(""); }); var betaMetadata = ILaunchProfileExtensionValueProviderMetadataFactory.Create("BetaProperty"); var betaLazy = new Lazy <IGlobalSettingExtensionValueProvider, ILaunchProfileExtensionValueProviderMetadata>( () => betaValueProvider, betaMetadata); var properties = new LaunchProfileProjectProperties( DefaultTestProjectPath, "Profile1", CreateDefaultTestLaunchSettings(), EmptyLaunchProfileExtensionValueProviders, ImmutableArray.Create(alphaLazy, betaLazy)); var names = await properties.GetPropertyNamesAsync(); Assert.Contains("AlphaProperty", names); Assert.DoesNotContain("BetaProperty", names); }
public async Task WhenSettingAGlobalProperty_TheRuleIsPassedToTheExtensionValueProvider() { bool rulePassed = false; var extensionValueProvider = IGlobalSettingExtensionValueProviderFactory.Create( onSetPropertyValue: (propertyName, value, globals, rule) => { rulePassed = rule is not null; return(ImmutableDictionary <string, object?> .Empty.Add(propertyName, value)); }); var metadata = ILaunchProfileExtensionValueProviderMetadataFactory.Create("MyProperty"); var lazy = new Lazy <IGlobalSettingExtensionValueProvider, ILaunchProfileExtensionValueProviderMetadata>( () => extensionValueProvider, metadata); var properties = new LaunchProfileProjectProperties( DefaultTestProjectPath, "Profile1", CreateDefaultTestLaunchSettings(), EmptyLaunchProfileExtensionValueProviders, ImmutableArray.Create(lazy)); properties.SetRuleContext(new Rule()); await properties.SetPropertyValueAsync("MyProperty", "alpha"); Assert.True(rulePassed); }
public async Task WhenRetrievingAGlobalProperty_TheRuleIsPassedToTheExtensionValueProvider() { bool rulePassed = false; var extensionValueProvider = IGlobalSettingExtensionValueProviderFactory.Create( (propertyName, globals, rule) => { rulePassed = rule is not null; return("alpha"); }); var metadata = ILaunchProfileExtensionValueProviderMetadataFactory.Create("MyProperty"); var lazy = new Lazy <IGlobalSettingExtensionValueProvider, ILaunchProfileExtensionValueProviderMetadata>( () => extensionValueProvider, metadata); var properties = new LaunchProfileProjectProperties( DefaultTestProjectPath, "Profile1", CreateDefaultTestLaunchSettings(), EmptyLaunchProfileExtensionValueProviders, ImmutableArray.Create(lazy)); properties.SetRuleContext(new Rule()); var propertyValue = await properties.GetEvaluatedPropertyValueAsync("MyProperty"); Assert.True(rulePassed); Assert.Equal(expected: "alpha", actual: propertyValue); }
public async Task WhenSettingAGlobalProperty_TheExtensionValueProviderIsCalled() { string?updatedPropertyName = null; string?updatedPropertyValue = null; var extensionValueProvider = IGlobalSettingExtensionValueProviderFactory.Create( onSetPropertyValue: (propertyName, value, globals, rule) => { updatedPropertyName = propertyName; updatedPropertyValue = value; return(ImmutableDictionary <string, object?> .Empty.Add(propertyName, value)); }); var metadata = ILaunchProfileExtensionValueProviderMetadataFactory.Create("MyProperty"); var lazy = new Lazy <IGlobalSettingExtensionValueProvider, ILaunchProfileExtensionValueProviderMetadata>( () => extensionValueProvider, metadata); var properties = new LaunchProfileProjectProperties( DefaultTestProjectPath, "Profile1", CreateDefaultTestLaunchSettings(), EmptyLaunchProfileExtensionValueProviders, ImmutableArray.Create(lazy)); await properties.SetPropertyValueAsync("MyProperty", "alpha"); Assert.Equal(expected: "MyProperty", actual: updatedPropertyName); Assert.Equal(expected: "alpha", actual: updatedPropertyValue); }
public async Task WhenRetrievingAGlobalProperty_TheExtensionValueProviderIsCalled() { string?requestedPropertyName = null; var extensionValueProvider = IGlobalSettingExtensionValueProviderFactory.Create( (propertyName, globals, rule) => { requestedPropertyName = propertyName; return("alpha"); }); var metadata = ILaunchProfileExtensionValueProviderMetadataFactory.Create("MyProperty"); var lazy = new Lazy <IGlobalSettingExtensionValueProvider, ILaunchProfileExtensionValueProviderMetadata>( () => extensionValueProvider, metadata); var properties = new LaunchProfileProjectProperties( DefaultTestProjectPath, "Profile1", CreateDefaultTestLaunchSettings(), EmptyLaunchProfileExtensionValueProviders, ImmutableArray.Create(lazy)); var propertyValue = await properties.GetEvaluatedPropertyValueAsync("MyProperty"); Assert.Equal(expected: "MyProperty", actual: requestedPropertyName); Assert.Equal(expected: "alpha", actual: propertyValue); }