public void HasSameConfiguration_ForInitializedLayer_ReturnTrue()
        {
            // Setup
            var mocks       = new MockRepository();
            var tileFetcher = mocks.Stub <ITileFetcher>();

            using (var layerStatus = new WellKnownBackgroundLayerStatus())
            {
                IConfiguration configuration = CreateStubConfiguration(mocks, tileFetcher);
                mocks.ReplayAll();

                using (var layer = new BruTileLayer(configuration))
                {
                    var source   = new Random(789).NextEnum <WellKnownTileSource>();
                    var mapData1 = new WellKnownTileSourceMapData(source);
                    var mapData2 = new WellKnownTileSourceMapData(source);

                    layerStatus.LayerInitializationSuccessful(layer, mapData1);

                    // Call
                    bool isSame = layerStatus.HasSameConfiguration(mapData2);

                    // Assert
                    Assert.IsTrue(isSame, "Should recognize same configuration even if instance is not the same.");
                }
            }

            mocks.VerifyAll();
        }
        public void Constructor_ExpectedValues()
        {
            // Call
            using (var layerStatus = new WellKnownBackgroundLayerStatus())
            {
                // Assert
                Assert.IsInstanceOf <BackgroundLayerStatus>(layerStatus);

                Assert.IsNull(layerStatus.BackgroundLayer);
                Assert.IsFalse(layerStatus.PreviousBackgroundLayerCreationFailed);
            }
        }
        public void LayerInitializationFailed_PreviousBackgroundLayerCreationFailedTrue()
        {
            // Setup
            using (var layerStatus = new WellKnownBackgroundLayerStatus())
            {
                // Call
                layerStatus.LayerInitializationFailed();

                // Assert
                Assert.IsTrue(layerStatus.PreviousBackgroundLayerCreationFailed);
            }
        }
        public void HasSameConfiguration_MapDataNotWellKnownMapData_ReturnFalse()
        {
            // Setup
            using (var layerStatus = new WellKnownBackgroundLayerStatus())
            {
                var mapData = new TestImageBasedMapData("test", true);

                // Call
                bool isSame = layerStatus.HasSameConfiguration(mapData);

                // Assert
                Assert.IsFalse(isSame);
            }
        }
        public void ClearConfiguration_WithFailedLayerInitializationAndExpectingRecreation_ConfigurationClearedButKeepFailedFlagSet()
        {
            // Setup
            using (var layerStatus = new WellKnownBackgroundLayerStatus())
            {
                var mapData = new WellKnownTileSourceMapData(new Random(465).NextEnum <WellKnownTileSource>());
                layerStatus.LayerInitializationFailed();

                // Call
                layerStatus.ClearConfiguration(true);

                // Assert
                Assert.IsTrue(layerStatus.PreviousBackgroundLayerCreationFailed);
                Assert.IsFalse(layerStatus.HasSameConfiguration(mapData));
            }
        }
        public void LayerInitializationSuccessful_MapDataNotWellKnownMapData_SetCreationFailedTrue()
        {
            // Setup
            var            mocks         = new MockRepository();
            var            tileFetcher   = mocks.Stub <ITileFetcher>();
            IConfiguration configuration = CreateStubConfiguration(mocks, tileFetcher);

            mocks.ReplayAll();

            using (var layer = new BruTileLayer(configuration))
                using (var layerStatus = new WellKnownBackgroundLayerStatus())
                {
                    var mapData = new TestImageBasedMapData("test", true);

                    // Call
                    layerStatus.LayerInitializationSuccessful(layer, mapData);

                    // Assert
                    Assert.IsTrue(layerStatus.PreviousBackgroundLayerCreationFailed);
                }
        }
        public void ClearConfiguration_HasLayer_ConfigurationCleared()
        {
            // Setup
            var            mocks         = new MockRepository();
            var            tileFetcher   = mocks.Stub <ITileFetcher>();
            IConfiguration configuration = CreateStubConfiguration(mocks, tileFetcher);

            mocks.ReplayAll();

            using (var layer = new BruTileLayer(configuration))
                using (var layerStatus = new WellKnownBackgroundLayerStatus())
                {
                    var mapData = new WellKnownTileSourceMapData(new Random(789).NextEnum <WellKnownTileSource>());
                    layerStatus.LayerInitializationSuccessful(layer, mapData);

                    // Call
                    layerStatus.ClearConfiguration();

                    // Assert
                    Assert.IsFalse(layerStatus.PreviousBackgroundLayerCreationFailed);
                    Assert.IsFalse(layerStatus.HasSameConfiguration(mapData));
                }
        }