示例#1
0
        public void DisposesProvidersOnDispose()
        {
            var provider1 = new TestConfigurationProvider("foo", "foo-value");
            var provider2 = new DisposableTestConfigurationProvider("bar", "bar-value");
            var provider3 = new TestConfigurationProvider("baz", "baz-value");
            var provider4 = new DisposableTestConfigurationProvider("qux", "qux-value");
            var provider5 = new DisposableTestConfigurationProvider("quux", "quux-value");

            var config = new ConfigurationManager();
            IConfigurationBuilder builder = config;

            builder.Add(new TestConfigurationSource(provider1));
            builder.Add(new TestConfigurationSource(provider2));
            builder.Add(new TestConfigurationSource(provider3));
            builder.Add(new TestConfigurationSource(provider4));
            builder.Add(new TestConfigurationSource(provider5));

            Assert.Equal("foo-value", config["foo"]);
            Assert.Equal("bar-value", config["bar"]);
            Assert.Equal("baz-value", config["baz"]);
            Assert.Equal("qux-value", config["qux"]);
            Assert.Equal("quux-value", config["quux"]);

            config.Dispose();

            Assert.True(provider2.IsDisposed);
            Assert.True(provider4.IsDisposed);
            Assert.True(provider5.IsDisposed);
        }
示例#2
0
        public void ChainedConfigurationIsDisposedOnDispose(bool shouldDispose)
        {
            var provider      = new DisposableTestConfigurationProvider("foo", "foo-value");
            var chainedConfig = new ConfigurationRoot(new IConfigurationProvider[] {
                provider
            });

            var config = new ConfigurationManager();

            config.AddConfiguration(chainedConfig, shouldDisposeConfiguration: shouldDispose);

            Assert.False(provider.IsDisposed);

            config.Dispose();

            Assert.Equal(shouldDispose, provider.IsDisposed);
        }
示例#3
0
        public void DisposesProvidersOnRemoval()
        {
            var provider1 = new TestConfigurationProvider("foo", "foo-value");
            var provider2 = new DisposableTestConfigurationProvider("bar", "bar-value");
            var provider3 = new TestConfigurationProvider("baz", "baz-value");
            var provider4 = new DisposableTestConfigurationProvider("qux", "qux-value");
            var provider5 = new DisposableTestConfigurationProvider("quux", "quux-value");

            var source1 = new TestConfigurationSource(provider1);
            var source2 = new TestConfigurationSource(provider2);
            var source3 = new TestConfigurationSource(provider3);
            var source4 = new TestConfigurationSource(provider4);
            var source5 = new TestConfigurationSource(provider5);

            var config = new ConfigurationManager();
            IConfigurationBuilder builder = config;

            builder.Add(source1);
            builder.Add(source2);
            builder.Add(source3);
            builder.Add(source4);
            builder.Add(source5);

            Assert.Equal("foo-value", config["foo"]);
            Assert.Equal("bar-value", config["bar"]);
            Assert.Equal("baz-value", config["baz"]);
            Assert.Equal("qux-value", config["qux"]);
            Assert.Equal("quux-value", config["quux"]);

            builder.Sources.Remove(source2);
            builder.Sources.Remove(source4);

            // While only provider2 and provider4 need to be disposed here, we do not assert provider5 is not disposed
            // because even though it's unnecessary, Configuration disposes all providers on removal and rebuilds
            // all the sources. While not optimal, this should be a pretty rare scenario.
            Assert.True(provider2.IsDisposed);
            Assert.True(provider4.IsDisposed);

            config.Dispose();

            Assert.True(provider2.IsDisposed);
            Assert.True(provider4.IsDisposed);
            Assert.True(provider5.IsDisposed);
        }
        public void RootDisposesProviders()
        {
            var provider1 = new TestConfigurationProvider("foo", "foo-value");
            var provider2 = new DisposableTestConfigurationProvider("bar", "bar-value");
            var provider3 = new TestConfigurationProvider("baz", "baz-value");
            var provider4 = new DisposableTestConfigurationProvider("qux", "qux-value");
            var provider5 = new DisposableTestConfigurationProvider("quux", "quux-value");

            var config = new ConfigurationRoot(new IConfigurationProvider[] {
                provider1, provider2, provider3, provider4, provider5
            });

            Assert.Equal("foo-value", config["foo"]);
            Assert.Equal("bar-value", config["bar"]);
            Assert.Equal("baz-value", config["baz"]);
            Assert.Equal("qux-value", config["qux"]);
            Assert.Equal("quux-value", config["quux"]);

            config.Dispose();

            Assert.True(provider2.IsDisposed);
            Assert.True(provider4.IsDisposed);
            Assert.True(provider5.IsDisposed);
        }