You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by bo...@apache.org on 2016/09/07 04:26:04 UTC

svn commit: r1759541 - in /logging/log4net/trunk: src/Util/PatternStringConverters/NewLinePatternConverter.cs src/Util/SystemInfo.cs tests/src/Util/SystemInfoTest.cs

Author: bodewig
Date: Wed Sep  7 04:26:03 2016
New Revision: 1759541

URL: http://svn.apache.org/viewvc?rev=1759541&view=rev
Log:
add a null-safe EqualsIgnoringCase method

patch by Jonas Baehr

Modified:
    logging/log4net/trunk/src/Util/PatternStringConverters/NewLinePatternConverter.cs
    logging/log4net/trunk/src/Util/SystemInfo.cs
    logging/log4net/trunk/tests/src/Util/SystemInfoTest.cs

Modified: logging/log4net/trunk/src/Util/PatternStringConverters/NewLinePatternConverter.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/src/Util/PatternStringConverters/NewLinePatternConverter.cs?rev=1759541&r1=1759540&r2=1759541&view=diff
==============================================================================
--- logging/log4net/trunk/src/Util/PatternStringConverters/NewLinePatternConverter.cs (original)
+++ logging/log4net/trunk/src/Util/PatternStringConverters/NewLinePatternConverter.cs Wed Sep  7 04:26:03 2016
@@ -67,11 +67,11 @@ namespace log4net.Util.PatternStringConv
 		/// </remarks>
 		public void ActivateOptions()
 		{
-			if (Option.ToUpperInvariant() == "DOS")
+			if (SystemInfo.EqualsIgnoringCase(Option, "DOS"))
 			{
 				Option = "\r\n";
 			}
-			else if (Option.ToUpperInvariant() == "UNIX")
+			else if (SystemInfo.EqualsIgnoringCase(Option, "UNIX"))
 			{
 				Option = "\n";
 			}

Modified: logging/log4net/trunk/src/Util/SystemInfo.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/src/Util/SystemInfo.cs?rev=1759541&r1=1759540&r2=1759541&view=diff
==============================================================================
--- logging/log4net/trunk/src/Util/SystemInfo.cs (original)
+++ logging/log4net/trunk/src/Util/SystemInfo.cs Wed Sep  7 04:26:03 2016
@@ -18,7 +18,9 @@
 #endregion
 
 using System;
-#if !NETSTANDARD1_3
+#if NETSTANDARD1_3
+using System.Globalization;
+#else
 using System.Configuration;
 #endif
 using System.Reflection;
@@ -1057,6 +1059,29 @@ namespace log4net.Util
 #endif
 		}
 
+        /// <summary>
+        /// Tests two strings for equality, the ignoring case.
+        /// </summary>
+        /// <remarks>
+        /// If the platform permits, culture information is ignored completely (ordinal comparison).
+        /// The aim of this method is to provide a fast comparison that deals with <c>null</c> and ignores different casing.
+        /// It is not supposed to deal with various, culture-specific habits.
+        /// Use it to compare against pure ASCII constants, like keywords etc.
+        /// </remarks>
+        /// <param name="a">The one string.</param>
+        /// <param name="b">The other string.</param>
+        /// <returns><c>true</c> if the strings are equal, <c>false</c> otherwise.</returns>
+        public static Boolean EqualsIgnoringCase(String a, String b)
+        {
+#if NET_1_0 || NET_1_1 || NETCF_1_0
+            return string.Compare(a, b, true, System.Globalization.CultureInfo.InvariantCulture) == 0
+#elif NETSTANDARD1_3
+            return CultureInfo.InvariantCulture.CompareInfo.Compare(a, b, CompareOptions.IgnoreCase) == 0;
+#else // >= .NET-2.0
+            return String.Equals(a, b, StringComparison.OrdinalIgnoreCase);
+#endif
+        }
+
 		#endregion Public Static Methods
 
 		#region Private Static Methods

Modified: logging/log4net/trunk/tests/src/Util/SystemInfoTest.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Util/SystemInfoTest.cs?rev=1759541&r1=1759540&r2=1759541&view=diff
==============================================================================
--- logging/log4net/trunk/tests/src/Util/SystemInfoTest.cs (original)
+++ logging/log4net/trunk/tests/src/Util/SystemInfoTest.cs Wed Sep  7 04:26:03 2016
@@ -170,5 +170,41 @@ namespace log4net.Tests.Util
 			return SystemInfo.GetTypeFromString(typeName, throwOnError, ignoreCase);
 #endif
 		}
+
+        [Test]
+        public void EqualsIgnoringCase_BothNull_true()
+        {
+            Assert.True(SystemInfo.EqualsIgnoringCase(null, null));
+        }
+
+        [Test]
+        public void EqualsIgnoringCase_LeftNull_false()
+        {
+            Assert.False(SystemInfo.EqualsIgnoringCase(null, "foo"));
+        }
+
+        [Test]
+        public void EqualsIgnoringCase_RightNull_false()
+        {
+            Assert.False(SystemInfo.EqualsIgnoringCase("foo", null));
+        }
+
+        [Test]
+        public void EqualsIgnoringCase_SameStringsSameCase_true()
+        {
+            Assert.True(SystemInfo.EqualsIgnoringCase("foo", "foo"));
+        }
+
+        [Test]
+        public void EqualsIgnoringCase_SameStringsDifferentCase_true()
+        {
+            Assert.True(SystemInfo.EqualsIgnoringCase("foo", "FOO"));
+        }
+
+        [Test]
+        public void EqualsIgnoringCase_DifferentStrings_false()
+        {
+            Assert.False(SystemInfo.EqualsIgnoringCase("foo", "foobar"));
+        }
 	}
 }