| #region Apache License | 
 | // | 
 | // Licensed to the Apache Software Foundation (ASF) under one or more  | 
 | // contributor license agreements. See the NOTICE file distributed with | 
 | // this work for additional information regarding copyright ownership.  | 
 | // The ASF licenses this file to you under the Apache License, Version 2.0 | 
 | // (the "License"); you may not use this file except in compliance with  | 
 | // the License. You may obtain a copy of the License at | 
 | // | 
 | // http://www.apache.org/licenses/LICENSE-2.0 | 
 | // | 
 | // Unless required by applicable law or agreed to in writing, software | 
 | // distributed under the License is distributed on an "AS IS" BASIS, | 
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | // See the License for the specific language governing permissions and | 
 | // limitations under the License. | 
 | // | 
 | #endregion | 
 |  | 
 | using System; | 
 | using System.Globalization; | 
 |  | 
 | using log4net.Config; | 
 | using log4net.Core; | 
 | using log4net.Layout; | 
 | using log4net.Repository; | 
 | using log4net.Tests.Appender; | 
 | using log4net.Tests.Layout; | 
 |  | 
 | using NUnit.Framework; | 
 |  | 
 | namespace log4net.Tests.Core | 
 | { | 
 |   /// <summary> | 
 |   /// Used for internal unit testing the <see cref="PatternLayoutTest"/> class. | 
 |   /// </summary> | 
 |   /// <remarks> | 
 |   /// Used for internal unit testing the <see cref="PatternLayoutTest"/> class. | 
 |   /// </remarks> | 
 |   [TestFixture] | 
 |   public class StringFormatTest | 
 |   { | 
 | #if !NETSTANDARD1_3 | 
 |     private CultureInfo _currentCulture; | 
 |     private CultureInfo _currentUICulture; | 
 |  | 
 |     [SetUp] | 
 |     public void SetUp() | 
 |     { | 
 |       // set correct thread culture | 
 |       _currentCulture = System.Threading.Thread.CurrentThread.CurrentCulture; | 
 |       _currentUICulture = System.Threading.Thread.CurrentThread.CurrentUICulture; | 
 |       System.Threading.Thread.CurrentThread.CurrentCulture = System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.InvariantCulture; | 
 |     } | 
 |  | 
 |     [TearDown] | 
 |     public void TearDown() | 
 |     { | 
 |       // restore previous culture | 
 |       System.Threading.Thread.CurrentThread.CurrentCulture = _currentCulture; | 
 |       System.Threading.Thread.CurrentThread.CurrentUICulture = _currentUICulture; | 
 |     } | 
 | #endif | 
 |  | 
 |     [Test] | 
 |     public void TestFormatString() | 
 |     { | 
 |       StringAppender stringAppender = new StringAppender(); | 
 |       stringAppender.Layout = new PatternLayout("%message"); | 
 |  | 
 |       ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); | 
 |       BasicConfigurator.Configure(rep, stringAppender); | 
 |  | 
 |       ILog log1 = LogManager.GetLogger(rep.Name, "TestFormatString"); | 
 |  | 
 |       // *** | 
 |       log1.Info("TestMessage"); | 
 |       Assert.AreEqual("TestMessage", stringAppender.GetString(), "Test simple INFO event"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |  | 
 |       // *** | 
 |       log1.DebugFormat("Before {0} After", "Middle"); | 
 |       Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted DEBUG event"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat("Before {0} After", "Middle"); | 
 |       Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted INFO event"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.WarnFormat("Before {0} After", "Middle"); | 
 |       Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted WARN event"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.ErrorFormat("Before {0} After", "Middle"); | 
 |       Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted ERROR event"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.FatalFormat("Before {0} After", "Middle"); | 
 |       Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted FATAL event"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat("Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("Before Middle After End", stringAppender.GetString(), "Test simple formatted INFO event 2"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat("IGNORE THIS WARNING - EXCEPTION EXPECTED Before {0} After {1} {2}", "Middle", "End"); | 
 |       Assert.AreEqual(STRING_FORMAT_ERROR, stringAppender.GetString(), "Test formatting error"); | 
 |       stringAppender.Reset(); | 
 |     } | 
 |  | 
 |     private const string STRING_FORMAT_ERROR = "<log4net.Error>Exception during StringFormat: Index (zero based) must be greater than or equal to zero and less than the size of the argument list. <format>IGNORE THIS WARNING - EXCEPTION EXPECTED Before {0} After {1} {2}</format><args>{Middle, End}</args></log4net.Error>"; | 
 |  | 
 |  | 
 |     [Test] | 
 |     public void TestLogFormatApi_Debug() | 
 |     { | 
 |       StringAppender stringAppender = new StringAppender(); | 
 |       stringAppender.Layout = new PatternLayout("%level:%message"); | 
 |  | 
 |       ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); | 
 |       BasicConfigurator.Configure(rep, stringAppender); | 
 |  | 
 |       ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Debug"); | 
 |  | 
 |       // *** | 
 |       log1.Debug("TestMessage"); | 
 |       Assert.AreEqual("DEBUG:TestMessage", stringAppender.GetString(), "Test simple DEBUG event 1"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Debug("TestMessage", null); | 
 |       Assert.AreEqual("DEBUG:TestMessage", stringAppender.GetString(), "Test simple DEBUG event 2"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Debug("TestMessage", new Exception("Exception message")); | 
 |       Assert.AreEqual("DEBUG:TestMessageSystem.Exception: Exception message" + Environment.NewLine, stringAppender.GetString(), "Test simple DEBUG event 3"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.DebugFormat("a{0}", "1"); | 
 |       Assert.AreEqual("DEBUG:a1", stringAppender.GetString(), "Test formatted DEBUG event with 1 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.DebugFormat("a{0}b{1}", "1", "2"); | 
 |       Assert.AreEqual("DEBUG:a1b2", stringAppender.GetString(), "Test formatted DEBUG event with 2 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.DebugFormat("a{0}b{1}c{2}", "1", "2", "3"); | 
 |       Assert.AreEqual("DEBUG:a1b2c3", stringAppender.GetString(), "Test formatted DEBUG event with 3 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |  | 
 |       // *** | 
 |       log1.DebugFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); | 
 |       Assert.AreEqual("DEBUG:aQbWcEdReTf", stringAppender.GetString(), "Test formatted DEBUG event with 5 parms (only 4 used)"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.DebugFormat(null, "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("DEBUG:Before Middle After End", stringAppender.GetString(), "Test formatting with null provider"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.DebugFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("DEBUG:Before Middle After End", stringAppender.GetString(), "Test formatting with 'en' provider"); | 
 |       stringAppender.Reset(); | 
 |     } | 
 |  | 
 |     [Test] | 
 |     public void TestLogFormatApi_NoDebug() | 
 |     { | 
 |       StringAppender stringAppender = new StringAppender(); | 
 |       stringAppender.Threshold = Level.Info; | 
 |       stringAppender.Layout = new PatternLayout("%level:%message"); | 
 |  | 
 |       ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); | 
 |       BasicConfigurator.Configure(rep, stringAppender); | 
 |  | 
 |       ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Debug"); | 
 |  | 
 |       // *** | 
 |       log1.Debug("TestMessage"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple DEBUG event 1"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Debug("TestMessage", null); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple DEBUG event 2"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Debug("TestMessage", new Exception("Exception message")); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple DEBUG event 3"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.DebugFormat("a{0}", "1"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted DEBUG event with 1 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.DebugFormat("a{0}b{1}", "1", "2"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted DEBUG event with 2 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.DebugFormat("a{0}b{1}c{2}", "1", "2", "3"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted DEBUG event with 3 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |  | 
 |       // *** | 
 |       log1.DebugFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted DEBUG event with 5 parms (only 4 used)"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.DebugFormat(null, "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatting with null provider"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.DebugFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatting with 'en' provider"); | 
 |       stringAppender.Reset(); | 
 |     } | 
 |  | 
 |  | 
 |     [Test] | 
 |     public void TestLogFormatApi_Info() | 
 |     { | 
 |       StringAppender stringAppender = new StringAppender(); | 
 |       stringAppender.Layout = new PatternLayout("%level:%message"); | 
 |  | 
 |       ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); | 
 |       BasicConfigurator.Configure(rep, stringAppender); | 
 |  | 
 |       ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Info"); | 
 |  | 
 |       // *** | 
 |       log1.Info("TestMessage"); | 
 |       Assert.AreEqual("INFO:TestMessage", stringAppender.GetString(), "Test simple INFO event 1"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Info("TestMessage", null); | 
 |       Assert.AreEqual("INFO:TestMessage", stringAppender.GetString(), "Test simple INFO event 2"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Info("TestMessage", new Exception("Exception message")); | 
 |       Assert.AreEqual("INFO:TestMessageSystem.Exception: Exception message" + Environment.NewLine, stringAppender.GetString(), "Test simple INFO event 3"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat("a{0}", "1"); | 
 |       Assert.AreEqual("INFO:a1", stringAppender.GetString(), "Test formatted INFO event with 1 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat("a{0}b{1}", "1", "2"); | 
 |       Assert.AreEqual("INFO:a1b2", stringAppender.GetString(), "Test formatted INFO event with 2 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat("a{0}b{1}c{2}", "1", "2", "3"); | 
 |       Assert.AreEqual("INFO:a1b2c3", stringAppender.GetString(), "Test formatted INFO event with 3 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); | 
 |       Assert.AreEqual("INFO:aQbWcEdReTf", stringAppender.GetString(), "Test formatted INFO event with 5 parms (only 4 used)"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat(null, "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("INFO:Before Middle After End", stringAppender.GetString(), "Test formatting with null provider"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("INFO:Before Middle After End", stringAppender.GetString(), "Test formatting with 'en' provider"); | 
 |       stringAppender.Reset(); | 
 |     } | 
 |  | 
 |     [Test] | 
 |     public void TestLogFormatApi_NoInfo() | 
 |     { | 
 |       StringAppender stringAppender = new StringAppender(); | 
 |       stringAppender.Threshold = Level.Warn; | 
 |       stringAppender.Layout = new PatternLayout("%level:%message"); | 
 |  | 
 |       ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); | 
 |       BasicConfigurator.Configure(rep, stringAppender); | 
 |  | 
 |       ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Info"); | 
 |  | 
 |       // *** | 
 |       log1.Info("TestMessage"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple INFO event 1"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Info("TestMessage", null); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple INFO event 2"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Info("TestMessage", new Exception("Exception message")); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple INFO event 3"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat("a{0}", "1"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 1 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat("a{0}b{1}", "1", "2"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 2 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat("a{0}b{1}c{2}", "1", "2", "3"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 3 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 5 parms (only 4 used)"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat(null, "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatting with null provider"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.InfoFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatting with 'en' provider"); | 
 |       stringAppender.Reset(); | 
 |     } | 
 |  | 
 |  | 
 |     [Test] | 
 |     public void TestLogFormatApi_Warn() | 
 |     { | 
 |       StringAppender stringAppender = new StringAppender(); | 
 |       stringAppender.Layout = new PatternLayout("%level:%message"); | 
 |  | 
 |       ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); | 
 |       BasicConfigurator.Configure(rep, stringAppender); | 
 |  | 
 |       ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Warn"); | 
 |  | 
 |       // *** | 
 |       log1.Warn("TestMessage"); | 
 |       Assert.AreEqual("WARN:TestMessage", stringAppender.GetString(), "Test simple WARN event 1"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Warn("TestMessage", null); | 
 |       Assert.AreEqual("WARN:TestMessage", stringAppender.GetString(), "Test simple WARN event 2"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Warn("TestMessage", new Exception("Exception message")); | 
 |       Assert.AreEqual("WARN:TestMessageSystem.Exception: Exception message" + Environment.NewLine, stringAppender.GetString(), "Test simple WARN event 3"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.WarnFormat("a{0}", "1"); | 
 |       Assert.AreEqual("WARN:a1", stringAppender.GetString(), "Test formatted WARN event with 1 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.WarnFormat("a{0}b{1}", "1", "2"); | 
 |       Assert.AreEqual("WARN:a1b2", stringAppender.GetString(), "Test formatted WARN event with 2 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.WarnFormat("a{0}b{1}c{2}", "1", "2", "3"); | 
 |       Assert.AreEqual("WARN:a1b2c3", stringAppender.GetString(), "Test formatted WARN event with 3 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |  | 
 |       // *** | 
 |       log1.WarnFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); | 
 |       Assert.AreEqual("WARN:aQbWcEdReTf", stringAppender.GetString(), "Test formatted WARN event with 5 parms (only 4 used)"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.WarnFormat(null, "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("WARN:Before Middle After End", stringAppender.GetString(), "Test formatting with null provider"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.WarnFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("WARN:Before Middle After End", stringAppender.GetString(), "Test formatting with 'en' provider"); | 
 |       stringAppender.Reset(); | 
 |     } | 
 |  | 
 |     [Test] | 
 |     public void TestLogFormatApi_NoWarn() | 
 |     { | 
 |       StringAppender stringAppender = new StringAppender(); | 
 |       stringAppender.Threshold = Level.Error; | 
 |       stringAppender.Layout = new PatternLayout("%level:%message"); | 
 |  | 
 |       ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); | 
 |       BasicConfigurator.Configure(rep, stringAppender); | 
 |  | 
 |       ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Warn"); | 
 |  | 
 |       // *** | 
 |       log1.Warn("TestMessage"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple WARN event 1"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Warn("TestMessage", null); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple WARN event 2"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Warn("TestMessage", new Exception("Exception message")); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple WARN event 3"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.WarnFormat("a{0}", "1"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted WARN event with 1 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.WarnFormat("a{0}b{1}", "1", "2"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted WARN event with 2 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.WarnFormat("a{0}b{1}c{2}", "1", "2", "3"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted WARN event with 3 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |  | 
 |       // *** | 
 |       log1.WarnFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted WARN event with 5 parms (only 4 used)"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.WarnFormat(null, "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatting with null provider"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.WarnFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatting with 'en' provider"); | 
 |       stringAppender.Reset(); | 
 |     } | 
 |  | 
 |  | 
 |     [Test] | 
 |     public void TestLogFormatApi_Error() | 
 |     { | 
 |       StringAppender stringAppender = new StringAppender(); | 
 |       stringAppender.Layout = new PatternLayout("%level:%message"); | 
 |  | 
 |       ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); | 
 |       BasicConfigurator.Configure(rep, stringAppender); | 
 |  | 
 |       ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Error"); | 
 |  | 
 |       // *** | 
 |       log1.Error("TestMessage"); | 
 |       Assert.AreEqual("ERROR:TestMessage", stringAppender.GetString(), "Test simple ERROR event 1"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Error("TestMessage", null); | 
 |       Assert.AreEqual("ERROR:TestMessage", stringAppender.GetString(), "Test simple ERROR event 2"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Error("TestMessage", new Exception("Exception message")); | 
 |       Assert.AreEqual("ERROR:TestMessageSystem.Exception: Exception message" + Environment.NewLine, stringAppender.GetString(), "Test simple ERROR event 3"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.ErrorFormat("a{0}", "1"); | 
 |       Assert.AreEqual("ERROR:a1", stringAppender.GetString(), "Test formatted ERROR event with 1 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.ErrorFormat("a{0}b{1}", "1", "2"); | 
 |       Assert.AreEqual("ERROR:a1b2", stringAppender.GetString(), "Test formatted ERROR event with 2 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.ErrorFormat("a{0}b{1}c{2}", "1", "2", "3"); | 
 |       Assert.AreEqual("ERROR:a1b2c3", stringAppender.GetString(), "Test formatted ERROR event with 3 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |  | 
 |       // *** | 
 |       log1.ErrorFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); | 
 |       Assert.AreEqual("ERROR:aQbWcEdReTf", stringAppender.GetString(), "Test formatted ERROR event with 5 parms (only 4 used)"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.ErrorFormat(null, "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("ERROR:Before Middle After End", stringAppender.GetString(), "Test formatting with null provider"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.ErrorFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("ERROR:Before Middle After End", stringAppender.GetString(), "Test formatting with 'en' provider"); | 
 |       stringAppender.Reset(); | 
 |     } | 
 |  | 
 |     [Test] | 
 |     public void TestLogFormatApi_NoError() | 
 |     { | 
 |       StringAppender stringAppender = new StringAppender(); | 
 |       stringAppender.Threshold = Level.Fatal; | 
 |       stringAppender.Layout = new PatternLayout("%level:%message"); | 
 |  | 
 |       ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); | 
 |       BasicConfigurator.Configure(rep, stringAppender); | 
 |  | 
 |       ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Error"); | 
 |  | 
 |       // *** | 
 |       log1.Error("TestMessage"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple ERROR event 1"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Error("TestMessage", null); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple ERROR event 2"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Error("TestMessage", new Exception("Exception message")); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple ERROR event 3"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.ErrorFormat("a{0}", "1"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted ERROR event with 1 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.ErrorFormat("a{0}b{1}", "1", "2"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted ERROR event with 2 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.ErrorFormat("a{0}b{1}c{2}", "1", "2", "3"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted ERROR event with 3 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |  | 
 |       // *** | 
 |       log1.ErrorFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted ERROR event with 5 parms (only 4 used)"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.ErrorFormat(null, "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatting with null provider"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.ErrorFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatting with 'en' provider"); | 
 |       stringAppender.Reset(); | 
 |     } | 
 |  | 
 |  | 
 |     [Test] | 
 |     public void TestLogFormatApi_Fatal() | 
 |     { | 
 |       StringAppender stringAppender = new StringAppender(); | 
 |       stringAppender.Layout = new PatternLayout("%level:%message"); | 
 |  | 
 |       ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); | 
 |       BasicConfigurator.Configure(rep, stringAppender); | 
 |  | 
 |       ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Fatal"); | 
 |  | 
 |       // *** | 
 |       log1.Fatal("TestMessage"); | 
 |       Assert.AreEqual("FATAL:TestMessage", stringAppender.GetString(), "Test simple FATAL event 1"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Fatal("TestMessage", null); | 
 |       Assert.AreEqual("FATAL:TestMessage", stringAppender.GetString(), "Test simple FATAL event 2"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Fatal("TestMessage", new Exception("Exception message")); | 
 |       Assert.AreEqual("FATAL:TestMessageSystem.Exception: Exception message" + Environment.NewLine, stringAppender.GetString(), "Test simple FATAL event 3"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.FatalFormat("a{0}", "1"); | 
 |       Assert.AreEqual("FATAL:a1", stringAppender.GetString(), "Test formatted FATAL event with 1 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.FatalFormat("a{0}b{1}", "1", "2"); | 
 |       Assert.AreEqual("FATAL:a1b2", stringAppender.GetString(), "Test formatted FATAL event with 2 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.FatalFormat("a{0}b{1}c{2}", "1", "2", "3"); | 
 |       Assert.AreEqual("FATAL:a1b2c3", stringAppender.GetString(), "Test formatted FATAL event with 3 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |  | 
 |       // *** | 
 |       log1.FatalFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); | 
 |       Assert.AreEqual("FATAL:aQbWcEdReTf", stringAppender.GetString(), "Test formatted FATAL event with 5 parms (only 4 used)"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.FatalFormat(null, "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("FATAL:Before Middle After End", stringAppender.GetString(), "Test formatting with null provider"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.FatalFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("FATAL:Before Middle After End", stringAppender.GetString(), "Test formatting with 'en' provider"); | 
 |       stringAppender.Reset(); | 
 |     } | 
 |  | 
 |     [Test] | 
 |     public void TestLogFormatApi_NoFatal() | 
 |     { | 
 |       StringAppender stringAppender = new StringAppender(); | 
 |       stringAppender.Threshold = Level.Off; | 
 |       stringAppender.Layout = new PatternLayout("%level:%message"); | 
 |  | 
 |       ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); | 
 |       BasicConfigurator.Configure(rep, stringAppender); | 
 |  | 
 |       ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Fatal"); | 
 |  | 
 |       // *** | 
 |       log1.Fatal("TestMessage"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple FATAL event 1"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Fatal("TestMessage", null); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple FATAL event 2"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.Fatal("TestMessage", new Exception("Exception message")); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test simple FATAL event 3"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.FatalFormat("a{0}", "1"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted FATAL event with 1 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.FatalFormat("a{0}b{1}", "1", "2"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted FATAL event with 2 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.FatalFormat("a{0}b{1}c{2}", "1", "2", "3"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted FATAL event with 3 parm"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |  | 
 |       // *** | 
 |       log1.FatalFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatted FATAL event with 5 parms (only 4 used)"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.FatalFormat(null, "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatting with null provider"); | 
 |       stringAppender.Reset(); | 
 |  | 
 |       // *** | 
 |       log1.FatalFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); | 
 |       Assert.AreEqual("", stringAppender.GetString(), "Test formatting with 'en' provider"); | 
 |       stringAppender.Reset(); | 
 |     } | 
 |   } | 
 | } |