public void ReloadOnChanged_GetTokenBeforeReload()
        {
            // Arrange
            var tokenSource1 = new CancellationTokenSource();
            var tokenSource2 = new CancellationTokenSource();

            var fileProvider = new MockFileProvider();

            fileProvider.Cancel = tokenSource1;

            var configuration = new MockConfigurationRoot();

            configuration.OnReload = () => Assert.Equal(2, fileProvider.WatchCount);

            // Act-1
            configuration.ReloadOnChanged(fileProvider, "config.json");

            // Assert-1
            Assert.Equal(1, fileProvider.WatchCount);
            Assert.Equal(0, configuration.ReloadCount);

            // Act-2
            fileProvider.Cancel = tokenSource2;
            tokenSource1.Cancel();

            Assert.Equal(2, fileProvider.WatchCount);
            Assert.Equal(1, configuration.ReloadCount);
        }
        public void ReloadOnChanged_GetTokenBeforeReload()
        {
            // Arrange
            var tokenSource1 = new CancellationTokenSource();
            var tokenSource2 = new CancellationTokenSource();

            var fileProvider = new MockFileProvider();
            fileProvider.Cancel = tokenSource1;

            var configuration = new MockConfigurationRoot();
            configuration.OnReload = () => Assert.Equal(2, fileProvider.WatchCount);

            // Act-1
            configuration.ReloadOnChanged(fileProvider, "config.json");

            // Assert-1
            Assert.Equal(1, fileProvider.WatchCount);
            Assert.Equal(0, configuration.ReloadCount);

            // Act-2
            fileProvider.Cancel = tokenSource2;
            tokenSource1.Cancel();

            Assert.Equal(2, fileProvider.WatchCount);
            Assert.Equal(1, configuration.ReloadCount);
        }