public void NetworkPropertiesRequiredForValidConfiguration()
        {
            var config = new LogConfiguration("net", LogType.Network, LogManager.DefaultSubscriptions);

            Assert.Throws <InvalidConfigurationException>(() => config.Validate());
            config.Hostname = "foo";
            Assert.Throws <InvalidConfigurationException>(() => config.Validate());

            config      = new LogConfiguration("net", LogType.Network, LogManager.DefaultSubscriptions);
            config.Port = 5309;
            Assert.Throws <InvalidConfigurationException>(() => config.Validate());
            config.Hostname = "foo";
            Assert.DoesNotThrow(() => config.Validate());
        }
        public void ConstructorValidation()
        {
            var validLogConfigs = new[] { new LogConfiguration(null, LogType.Console, LogManager.DefaultSubscriptions), };

            foreach (var value in Enum.GetValues(typeof(Configuration.AllowEtwLoggingValues)))
            {
                var validValue = (Configuration.AllowEtwLoggingValues)value;
                Assert.DoesNotThrow(() => new Configuration(validLogConfigs, validValue));
            }
            var invalidAllowValue =
                (Configuration.AllowEtwLoggingValues)((int)Configuration.AllowEtwLoggingValues.Enabled + 8675309);

            Assert.Throws <ArgumentOutOfRangeException>(() => new Configuration(validLogConfigs, invalidAllowValue));

            Assert.Throws <ArgumentNullException>(() => new Configuration(null));
            Assert.Throws <ArgumentException>(() => new Configuration(new LogConfiguration[0]));

            var invalidConfig = new LogConfiguration("foo", LogType.Network, LogManager.DefaultSubscriptions);

            Assert.Throws <InvalidConfigurationException>(() => invalidConfig.Validate());
            var invalidLogConfigs = new List <LogConfiguration>(validLogConfigs);

            invalidLogConfigs.Add(invalidConfig);
            Assert.Throws <InvalidConfigurationException>(() => new Configuration(invalidLogConfigs));

            var duplicateLogConfigs = new List <LogConfiguration>(validLogConfigs);

            duplicateLogConfigs.AddRange(validLogConfigs);
            Assert.Throws <InvalidConfigurationException>(() => new Configuration(duplicateLogConfigs));

            var memoryLogs = new[]
            { new LogConfiguration("memory", LogType.MemoryBuffer, LogManager.DefaultSubscriptions), };

            Assert.Throws <InvalidConfigurationException>(() => new Configuration(memoryLogs));
        }