Author: rgrabowski Date: Sun Jan 13 10:45:31 2008 New Revision: 611623 URL: http://svn.apache.org/viewvc?rev=611623&view=rev Log: Added test for LOG4NET-53 (allow repository properties to be set in xml config file). Added test case for LOG4NET-31 (allow additional properties to be set on converters).
Added: logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs Modified: logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj Added: logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs?rev=611623&view=auto ============================================================================== --- logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs (added) +++ logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs Sun Jan 13 10:45:31 2008 @@ -0,0 +1,39 @@ +using System; +using System.Xml; +using log4net.Config; +using log4net.Repository; +using NUnit.Framework; + +namespace log4net.Tests.Hierarchy +{ + [TestFixture] + public class Hierarchy + { + [Test] + public void SetRepositoryPropertiesInConfigFile() + { + // LOG4NET-53: Allow repository properties to be set in the config file + XmlDocument log4netConfig = new XmlDocument(); + log4netConfig.LoadXml(@" + <log4net> + <property> + <key value=""two-plus-two"" /> + <value value=""4"" /> + </property> + <appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests""> + <layout type=""log4net.Layout.SimpleLayout"" /> + </appender> + <root> + <level value=""ALL"" /> + <appender-ref ref=""StringAppender"" /> + </root> + </log4net>"); + + ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); + XmlConfigurator.Configure(rep, log4netConfig["log4net"]); + + Assert.AreEqual("4", rep.Properties["two-plus-two"]); + Assert.IsNull(rep.Properties["one-plus-one"]); + } + } +} Added: logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs?rev=611623&view=auto ============================================================================== --- logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs (added) +++ logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs Sun Jan 13 10:45:31 2008 @@ -0,0 +1,171 @@ +using System; +using System.IO; +using System.Xml; +using log4net.Config; +using log4net.Core; +using log4net.Layout.Pattern; +using log4net.Repository; +using log4net.Tests.Appender; +using log4net.Util; +using NUnit.Framework; + +namespace log4net.Tests.Util +{ + [TestFixture] + public class PatternConverterTest + { + [Test] + public void PatternLayoutConverterProperties() + { + XmlDocument log4netConfig = new XmlDocument(); + log4netConfig.LoadXml(@" + <log4net> + <appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests""> + <layout type=""log4net.Layout.PatternLayout""> + <converter> + <name value=""propertyKeyCount"" /> + <type value=""log4net.Tests.Util.PropertyKeyCountPatternLayoutConverter, log4net.Tests"" /> + <property> + <key value=""one-plus-one"" /> + <value value=""2"" /> + </property> + <property> + <key value=""two-plus-two"" /> + <value value=""4"" /> + </property> + </converter> + <conversionPattern value=""%propertyKeyCount"" /> + </layout> + </appender> + <root> + <level value=""ALL"" /> + <appender-ref ref=""StringAppender"" /> + </root> + </log4net>"); + + ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); + XmlConfigurator.Configure(rep, log4netConfig["log4net"]); + + ILog log = LogManager.GetLogger(rep.Name, "PatternLayoutConverterProperties"); + log.Debug("Message"); + + PropertyKeyCountPatternLayoutConverter converter = + PropertyKeyCountPatternLayoutConverter.MostRecentInstance; + Assert.AreEqual(2, converter.Properties.Count); + Assert.AreEqual("4", converter.Properties["two-plus-two"]); + + StringAppender appender = + (StringAppender)LogManager.GetRepository(rep.Name).GetAppenders()[0]; + Assert.AreEqual("2", appender.GetString()); + } + + [Test] + public void PatternConverterProperties() + { + XmlDocument log4netConfig = new XmlDocument(); + log4netConfig.LoadXml(@" + <log4net> + <appender name=""PatternStringAppender"" type=""log4net.Tests.Util.PatternStringAppender, log4net.Tests""> + <layout type=""log4net.Layout.SimpleLayout"" /> + <setting> + <converter> + <name value=""propertyKeyCount"" /> + <type value=""log4net.Tests.Util.PropertyKeyCountPatternConverter, log4net.Tests"" /> + <property> + <key value=""one-plus-one"" /> + <value value=""2"" /> + </property> + <property> + <key value=""two-plus-two"" /> + <value value=""4"" /> + </property> + </converter> + <conversionPattern value=""%propertyKeyCount"" /> + </setting> + </appender> + <root> + <level value=""ALL"" /> + <appender-ref ref=""PatternStringAppender"" /> + </root> + </log4net>"); + + ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); + XmlConfigurator.Configure(rep, log4netConfig["log4net"]); + + ILog log = LogManager.GetLogger(rep.Name, "PatternConverterProperties"); + log.Debug("Message"); + + PropertyKeyCountPatternConverter converter = + PropertyKeyCountPatternConverter.MostRecentInstance; + Assert.AreEqual(2, converter.Properties.Count); + Assert.AreEqual("4", converter.Properties["two-plus-two"]); + + PatternStringAppender appender = + (PatternStringAppender)LogManager.GetRepository(rep.Name).GetAppenders()[0]; + Assert.AreEqual("2", appender.Setting.Format()); + } + } + + public class PropertyKeyCountPatternLayoutConverter : PatternLayoutConverter + { + private static PropertyKeyCountPatternLayoutConverter mostRecentInstance; + + public PropertyKeyCountPatternLayoutConverter() + { + mostRecentInstance = this; + } + + protected override void Convert(TextWriter writer, LoggingEvent loggingEvent) + { + writer.Write(Properties.GetKeys().Length); + } + + public static PropertyKeyCountPatternLayoutConverter MostRecentInstance + { + get { return mostRecentInstance; } + } + } + + public class PropertyKeyCountPatternConverter : PatternConverter + { + private static PropertyKeyCountPatternConverter mostRecentInstance; + + public PropertyKeyCountPatternConverter() + { + mostRecentInstance = this; + } + + protected override void Convert(TextWriter writer, object state) + { + writer.Write(Properties.GetKeys().Length); + } + + public static PropertyKeyCountPatternConverter MostRecentInstance + { + get { return mostRecentInstance; } + } + } + + public class PatternStringAppender : StringAppender + { + private static PatternStringAppender mostRecentInstace; + + private PatternString setting; + + public PatternStringAppender() + { + mostRecentInstace = this; + } + + public PatternString Setting + { + get { return setting; } + set { setting = value; } + } + + public static PatternStringAppender MostRecentInstace + { + get { return mostRecentInstace; } + } + } +} Modified: logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj?rev=611623&r1=611622&r2=611623&view=diff ============================================================================== --- logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj (original) +++ logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj Sun Jan 13 10:45:31 2008 @@ -133,6 +133,7 @@ <Compile Include="Core\StringFormatTest.cs"> <SubType>Code</SubType> </Compile> + <Compile Include="Hierarchy\Hierarchy.cs" /> <Compile Include="Hierarchy\Logger.cs"> <SubType>Code</SubType> </Compile> @@ -151,6 +152,7 @@ </Compile> <Compile Include="Util\EnvironmentPatternConverterTest.cs" /> <Compile Include="Util\LogLogTest.cs" /> + <Compile Include="Util\PatternConverterTest.cs" /> <Compile Include="Util\PatternStringTest.cs" /> <Compile Include="Util\PropertiesDictionaryTest.cs"> <SubType>Code</SubType>