public void Setup()
        {
            // Act
            var loggerSet         = false;
            var networkContextSet = false;

            var stubContextStorage = new StubIContextStorage();
            var stubLogger         = new StubILogger();
            var stubNetworkContext = new StubINetworkContext();

            stubContextStorage.SetDataOf1StringM0 <ILogger>((key, value) =>
            {
                loggerSet = true;
            });
            stubContextStorage.SetDataOf1StringM0 <INetworkContext>((key, value) =>
            {
                networkContextSet = true;
            });

            // Act
            ApplicationContext.Setup(stubContextStorage, stubLogger, stubNetworkContext);

            // Assert
            loggerSet.ShouldHaveSameValueAs(true);
            networkContextSet.ShouldHaveSameValueAs(true);
        }
        public void NetworkContext()
        {
            // Act
            var stubContextStorage = new StubIContextStorage();
            var stubLogger         = new StubILogger();
            var stubNetworkContext = new StubINetworkContext();

            stubContextStorage.GetDataOf1String <INetworkContext>(key => stubNetworkContext);
            ApplicationContext.Setup(stubContextStorage, stubLogger, stubNetworkContext);

            // Act
            var actual = ApplicationContext.NetworkContext;

            // Assert
            Assert.AreEqual(stubNetworkContext, actual);
        }
        public void Logger()
        {
            // Act
            var stubContextStorage = new StubIContextStorage();
            var stubLogger         = new StubILogger();
            var stubNetworkContext = new StubINetworkContext();

            stubContextStorage.GetDataOf1String <ILogger>(key => stubLogger);
            ApplicationContext.Setup(stubContextStorage, stubLogger, stubNetworkContext);

            // Act
            var actual = ApplicationContext.Logger;

            // Assert
            actual.ShouldHaveSameValueAs(stubLogger);
        }
        public void TearDown()
        {
            // Act
            var keysToDispose = new List <string>();

            var stubContextStorage = new StubIContextStorage();
            var stubLogger         = new StubILogger();
            var stubNetworkContext = new StubINetworkContext();

            stubContextStorage.CleanAndDisposeStringArray = keys => { keysToDispose.AddRange(keys); };
            ApplicationContext.Setup(stubContextStorage, stubLogger, stubNetworkContext);
            ApplicationContext.Set("some value");

            // Act
            ApplicationContext.TearDown();
            ApplicationContext.TearDown(); // Call twice to show this won't cause an issue

            // Assert
            keysToDispose.ShouldHaveSameValueAs(new List <string> {
                "logger", "network", typeof(string).FullName
            });
        }