public void ErrorTestWithException()
        {
            // Arrange
            var logger = new LoggerRegistry().GetLogger("abc123");

            // Act
            logger.Error(new Exception("this is an exception's message"));
        }
        public void ErrorTestWithNullExceptionAndMessage()
        {
            // Arrange
            var logger = new LoggerRegistry().GetLogger("abc123");

            // Act
            logger.Error(null, "this is a message", new object[] {});
        }
        public void ErrorTestWithNullException()
        {
            // Arrange
            var logger = new LoggerRegistry().GetLogger("abc123");

            // Act
            logger.Error((Exception)null);
        }
        public void ErrorTestWithExceptionAndMessage()
        {
            // Arrange
            var logger = new LoggerRegistry().GetLogger("abc123");

            // Act
            logger.Error(new Exception("this is an exception's message"), "ErrorTest is running on TraceLogger #{0}.",
                         new object[] { logger.Key });
        }
        public void ErrorTest()
        {
            // Arrange
            var logger = new LoggerRegistry().GetLogger("abc123");

            // Act
            logger.Error("This is an Error message");
            logger.Error("ErrrorTest is running on TraceLogger #{0}.", new object[] { logger.Key });
        }
        public void MessageTest()
        {
            // Arrange
            var logger = new LoggerRegistry().GetLogger("abc123");

            //var logger = new TraceLogger("abc123");

            // Act
            logger.Message("This is a message");
            logger.Message("MessageTest is running on TraceLogger #{0}.", new object[] { logger.Key });
        }
        public void Logger_GetsSecondLoggerWithDifferentKey_IsNotTheSameLogger()
        {
            // Arrange
            var registry = new LoggerRegistry();
            var logger1  = registry.Logger("abc.123");

            // Act
            var logger2 = registry.Logger("xyz.789");

            // Assert
            Assert.AreNotSame(logger1, logger2);
        }
        public void MakeKey_DifferentInput_DifferentOutput()
        {
            // Arrange
            var    registry = new LoggerRegistry();
            string key1     = registry.MakeKey("abc", "123", "456");

            // Act
            string key2 = registry.MakeKey("xyz", "456", "789");

            // Assert
            Assert.AreNotEqual(key1, key2);
        }
        public void MakeKey_SameInput_SameOutput()
        {
            // Arrange
            var    registry = new LoggerRegistry();
            string key1     = registry.MakeKey("abc", "123", "456");

            // Act
            string key2 = registry.MakeKey("abc", "123", "456");

            // Assert
            Assert.AreEqual(key1, key2);
        }
        public void Logger_GetsSecondLoggerWithSameKey_IsTheSameLogger()
        {
            // Arrange
            const string key      = "abc123";
            var          registry = new LoggerRegistry();
            var          logger1  = registry.Logger(key);

            // Act
            var logger2 = registry.Logger(key);

            // Assert
            Assert.AreSame(logger1, logger2);
        }
        public void ErrorTestThrowException()
        {
            // Arrange
            var logger = new LoggerRegistry().GetLogger("abc123");

            try
            {
                throw new Exception("This is a thrown exception's message.");
            }
            catch (Exception exception)
            {
                // Act
                logger.Error(exception);
            }
        }
        public void ErrorTestThrowExceptionWithMessage()
        {
            // Arrange
            var logger = new LoggerRegistry().GetLogger("abc123");

            try
            {
                throw new Exception("This is a thrown exception's message.");
            }
            catch (Exception exception)
            {
                // Act
                logger.Error(exception, "ErrorTest is running on TraceLogger #{0}.",
                             new object[] { logger.Key });
            }
        }