You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by rg...@apache.org on 2008/01/31 23:32:40 UTC

svn commit: r617264 - /logging/log4net/trunk/tests/src/Appender/AdoNetAppenderTest.cs

Author: rgrabowski
Date: Thu Jan 31 14:32:38 2008
New Revision: 617264

URL: http://svn.apache.org/viewvc?rev=617264&view=rev
Log:
Test for LOG4NET-28 demonstrating how to insert NULL values using both an xml configuration and progmatic configuration.

Modified:
    logging/log4net/trunk/tests/src/Appender/AdoNetAppenderTest.cs

Modified: logging/log4net/trunk/tests/src/Appender/AdoNetAppenderTest.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Appender/AdoNetAppenderTest.cs?rev=617264&r1=617263&r2=617264&view=diff
==============================================================================
--- logging/log4net/trunk/tests/src/Appender/AdoNetAppenderTest.cs (original)
+++ logging/log4net/trunk/tests/src/Appender/AdoNetAppenderTest.cs Thu Jan 31 14:32:38 2008
@@ -4,8 +4,10 @@
 using log4net.Appender;
 using log4net.Config;
 using log4net.Core;
+using log4net.Layout;
 using log4net.Repository;
 using log4net.Tests.Appender.AdoNet;
+using log4net.Util;
 using NUnit.Framework;
 
 namespace log4net.Tests.Appender
@@ -117,6 +119,74 @@
 
             param = (IDbDataParameter)command.Parameters["@exception"];
             Assert.IsEmpty((string)param.Value);
+        }
+
+        [Test]
+        public void NullPropertyXmlConfig()
+        {
+            XmlDocument log4netConfig = new XmlDocument();
+            #region Load log4netConfig
+            log4netConfig.LoadXml(@"
+                <log4net>
+                <appender name=""AdoNetAppender"" type=""log4net.Appender.AdoNetAppender"">
+                    <bufferSize value=""-1"" />
+                    <connectionType value=""log4net.Tests.Appender.AdoNet.Log4NetConnection"" />
+                    <connectionString value=""data source=[database server];initial catalog=[database name];integrated security=false;persist security info=True;User ID=[user];Password=[password]"" />
+                    <commandText value=""INSERT INTO Log ([ProductId]) VALUES (@productId)"" />
+                    <parameter>
+                        <parameterName value=""@productId"" />
+                        <dbType value=""String"" />
+                        <size value=""50"" />
+                        <layout type="" log4net.Layout.RawPropertyLayout"">
+                           <key value=""ProductId"" />
+                        </layout>
+                    </parameter>                    
+                </appender>
+                <root>
+                    <level value=""ALL"" />
+                    <appender-ref ref=""AdoNetAppender"" />
+                  </root>  
+                </log4net>");
+            #endregion
+
+            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
+            XmlConfigurator.Configure(rep, log4netConfig["log4net"]);
+            ILog log = LogManager.GetLogger(rep.Name, "NullPropertyXmlConfig");
+            
+            log.Debug("Message");
+            IDbCommand command = Log4NetCommand.MostRecentInstance;
+            IDbDataParameter param = (IDbDataParameter)command.Parameters["@productId"];
+            Assert.AreNotEqual(SystemInfo.NullText, param.Value);
+            Assert.AreEqual(DBNull.Value, param.Value);
+        }
+
+        [Test]
+        public void NullPropertyProgmaticConfig()
+        {
+            AdoNetAppenderParameter productIdParam = new AdoNetAppenderParameter();
+            productIdParam.ParameterName = "@productId";
+            productIdParam.DbType = DbType.String;
+            productIdParam.Size = 50;
+            RawPropertyLayout rawPropertyLayout = new RawPropertyLayout();
+            rawPropertyLayout.Key = "ProductId";
+            productIdParam.Layout = rawPropertyLayout;
+
+            AdoNetAppender appender = new AdoNetAppender();
+            appender.ConnectionType = typeof(Log4NetConnection).FullName;
+            appender.BufferSize = -1;
+            appender.CommandText = "INSERT INTO Log ([productId]) VALUES (@productId)";
+            appender.AddParameter(productIdParam);
+            appender.ActivateOptions();
+
+            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
+            BasicConfigurator.Configure(rep, appender);
+            ILog log = LogManager.GetLogger(rep.Name, "NullPropertyProgmaticConfig");
+            
+            log.Debug("Message");
+            IDbCommand command = Log4NetCommand.MostRecentInstance;
+            IDbDataParameter param = (IDbDataParameter)command.Parameters["@productId"];
+            Assert.AreNotEqual(SystemInfo.NullText, param.Value);
+            Assert.AreEqual(DBNull.Value, param.Value);
         }
     }
 }