Beispiel #1
0
        public void Cache_Initializes_WhenEnsureInitializedCalled()
        {
            // Arrange
            var called = false;

            var dataSource = new DynamicEndpointDataSource();
            var cache      = new DataSourceDependentCache <string>(dataSource, (endpoints) =>
            {
                called = true;
                return("hello, world!");
            });

            // Act
            cache.EnsureInitialized();

            // Assert
            Assert.True(called);
            Assert.Equal("hello, world!", cache.Value);
        }
Beispiel #2
0
        public void Cache_Reinitializes_WhenDataSourceChanges()
        {
            // Arrange
            var count = 0;

            var dataSource = new DynamicEndpointDataSource();
            var cache      = new DataSourceDependentCache <string>(dataSource, (endpoints) =>
            {
                count++;
                return($"hello, {count}!");
            });

            cache.EnsureInitialized();
            Assert.Equal("hello, 1!", cache.Value);

            // Act
            dataSource.AddEndpoint(null);

            // Assert
            Assert.Equal(2, count);
            Assert.Equal("hello, 2!", cache.Value);
        }
Beispiel #3
0
        public void Cache_CanDispose_WhenInitialized()
        {
            // Arrange
            var count = 0;

            var dataSource = new DynamicEndpointDataSource();
            var cache      = new DataSourceDependentCache <string>(dataSource, (endpoints) =>
            {
                count++;
                return($"hello, {count}!");
            });

            cache.EnsureInitialized();
            Assert.Equal("hello, 1!", cache.Value);

            // Act
            cache.Dispose();

            // Assert
            dataSource.AddEndpoint(null);
            Assert.Equal("hello, 1!", cache.Value); // Ignores update
        }
 internal TemplateBinder GetTemplateBinder(RouteEndpoint endpoint) => _cache.EnsureInitialized().GetOrAdd(endpoint, _createTemplateBinder);
 // Internal for testing
 internal GlobalRouteValuesLinkGeneratorTemplateBinder GetTemplateBinder(RouteEndpoint endpoint) => _cache.EnsureInitialized().GetOrAdd(endpoint, _createTemplateBinder);