public void Initialize_WithNullConfiguration_ThrowsException()
        {
            // Arrange
            var provider = new TerminatorLoggingProvider();
            NameValueCollection invalidConfiguration = null;

            // Act
            provider.Initialize("Valid provider name", invalidConfiguration);
        }
        public void Initialize_WithValidArguments_Succeeds()
        {
            // Arrange
            var provider           = new TerminatorLoggingProvider();
            var validConfiguration = CreateValidConfiguration();

            // Act
            provider.Initialize("Valid provider name", validConfiguration);
        }
        public void Log_InitializedProvider_Succeeds()
        {
            // Arrange
            var provider = new TerminatorLoggingProvider();

            provider.Initialize("Valid name", CreateValidConfiguration());

            // Act
            provider.Log("Some message");
        }
        public void Initialize_ConfigurationWithUnrecognizedAttributes_ThrowsException()
        {
            // Arrange
            var provider = new TerminatorLoggingProvider();
            var configurationWithUnrecognizedAttribute = CreateValidConfiguration();

            configurationWithUnrecognizedAttribute.Add("unknown attribute", "some value");

            // Act
            provider.Initialize("Valid provider name", configurationWithUnrecognizedAttribute);
        }
        public void Initialize_ConfigurationWithoutDescription_SetsDefaultDescription()
        {
            // Arrange
            var expectedDescription = "Terminator logging provider";
            var provider            = new TerminatorLoggingProvider();
            var validConfiguration  = CreateValidConfiguration();

            // Act
            provider.Initialize("Valid provider name", validConfiguration);

            // Assert
            Assert.AreEqual(expectedDescription, provider.Description);
        }
        public void Initialize_ConfigurationWithCustomDescription_SetsSpecifiedDescription()
        {
            // Arrange
            var expectedDescription = "My terminator, I'll be back :-)";
            var provider            = new TerminatorLoggingProvider();
            var validConfiguration  = CreateValidConfiguration();

            validConfiguration["description"] = expectedDescription;

            // Act
            provider.Initialize("Valid provider name", validConfiguration);

            // Assert
            Assert.AreEqual(expectedDescription, provider.Description);
        }
        public void Initialize_ConfigurationWithThresholdAttribute_ThrowsException()
        {
            // Arrange
            var provider             = new TerminatorLoggingProvider();
            var invalidConfiguration = CreateValidConfiguration();

            invalidConfiguration.Add("threshold", "some value");

            try
            {
                // Act
                // The 'threshold' attribute is not supported by the TerminatorLoggingProvider, because it is
                // of no use.
                provider.Initialize("Valid provider name", invalidConfiguration);

                // Assert
                Assert.Fail("Exception expected.");
            }
            catch (ProviderException ex)
            {
                Assert.IsTrue(ex.Message.Contains("threshold"),
                              "The exception message should contain the name of the invalid attribute.");
            }
        }