public void CompleteCacheClearing()
        {
            DefaultConfigurationService service = GenerateService();

            TestConfiguration configuration1 =
                service.GetConfiguration <TestConfiguration, TestConfigurationMetadata>();

            service.ResetCachedConfigurations();
            TestConfiguration configuration2 =
                service.GetConfiguration <TestConfiguration, TestConfigurationMetadata>();

            CheckConfiguration(configuration1);
            CheckConfiguration(configuration2);
            Assert.Throws <EqualException>(() => Assert.Equal(configuration1, configuration2));
        }
        public void ProvidingMetadataStream()
        {
            DefaultConfigurationService service = GenerateService();

            TestConfigurationMetadataStream metadata      = new TestConfigurationMetadataStream();
            TestConfigurationStream         configuration =
                service.GetConfiguration <TestConfigurationStream, TestConfigurationMetadataStream>(metadata);

            Assert.True(metadata.UsedAtLeastOnce);
            CheckConfigurationStream(configuration);

            service.ResetCachedConfigurations();
            TestConfigurationStream configuration2 =
                service.GetConfiguration <TestConfigurationStream, TestConfigurationMetadataStream>(metadata);

            CheckConfigurationStream(configuration2);
            Assert.NotEqual(configuration, configuration2);
            Assert.True(metadata.UsedAtLeastOnce);
            Assert.True(metadata.StreamGotDisposed);
        }