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