This is an automated email from the ASF dual-hosted git repository. nightowl888 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/lucenenet.git
commit 837142507fa10a4096e3c431866727419a3ff096 Author: Shad Storhaug <[email protected]> AuthorDate: Sun Jun 28 15:22:47 2020 +0700 Lucene.Net.TestFramework: refactored collection asserts so aggressive mode can be passed as an optional parameter (true by default) --- .../Support/TestFramework/Assert.cs | 89 +++++++++++++++++++--- .../Support/JavaCompatibility/LuceneTestCase.cs | 25 +++--- 2 files changed, 95 insertions(+), 19 deletions(-) diff --git a/src/Lucene.Net.TestFramework.NUnit/Support/TestFramework/Assert.cs b/src/Lucene.Net.TestFramework.NUnit/Support/TestFramework/Assert.cs index b03a80b..303ce85 100644 --- a/src/Lucene.Net.TestFramework.NUnit/Support/TestFramework/Assert.cs +++ b/src/Lucene.Net.TestFramework.NUnit/Support/TestFramework/Assert.cs @@ -4,7 +4,9 @@ using System; using System.Collections; using System.Collections.Generic; using System.Linq; +using J2N.Text; using NUnit.Framework.Constraints; +using JCG = J2N.Collections.Generic; using _NUnit = NUnit.Framework; namespace Lucene.Net.TestFramework @@ -330,6 +332,84 @@ namespace Lucene.Net.TestFramework _NUnit.Assert.True(expected.Equals(actual), message); } + + private static JCG.SetEqualityComparer<T> GetSetComparer<T>(bool aggressive) + { + return aggressive + ? JCG.SetEqualityComparer<T>.Aggressive + : JCG.SetEqualityComparer<T>.Default; + } + + private static JCG.ListEqualityComparer<T> GetListComparer<T>(bool aggressive) + { + return aggressive + ? JCG.ListEqualityComparer<T>.Aggressive + : JCG.ListEqualityComparer<T>.Default; + } + + private static JCG.DictionaryEqualityComparer<TKey, TValue> GetDictionaryComparer<TKey, TValue>(bool aggressive) + { + return aggressive + ? JCG.DictionaryEqualityComparer<TKey, TValue>.Aggressive + : JCG.DictionaryEqualityComparer<TKey, TValue>.Default; + } + + public static string FormatCollection(object collection) + { + return string.Format(StringFormatter.CurrentCulture, "{0}", collection); + } + + public static void AreEqual<T>(ISet<T> expected, ISet<T> actual, bool aggressive = true) + { + if (!GetSetComparer<T>(aggressive).Equals(expected, actual)) + { + _NUnit.Assert.Fail("Expected: '{0}', Actual: '{1}'", FormatCollection(expected), FormatCollection(actual)); + } + } + + public static void AreEqual<T>(ISet<T> expected, ISet<T> actual, bool aggressive, string message, params object[] args) + { + if (!GetSetComparer<T>(aggressive).Equals(expected, actual)) + { + _NUnit.Assert.Fail(message, args); + } + } + + public static void AreEqual<T>(IList<T> expected, IList<T> actual, bool aggressive = true) + { + if (!GetListComparer<T>(aggressive).Equals(expected, actual)) + { + _NUnit.Assert.Fail("Expected: '{0}', Actual: '{1}'", FormatCollection(expected), FormatCollection(actual)); + } + + } + + public static void AreEqual<T>(IList<T> expected, IList<T> actual, bool aggressive, string message, params object[] args) + { + if (!GetListComparer<T>(aggressive).Equals(expected, actual)) + { + _NUnit.Assert.Fail(message, args); + } + } + + public static void AreEqual<TKey, TValue>(IDictionary<TKey, TValue> expected, IDictionary<TKey, TValue> actual, bool aggressive = true) + { + if (!GetDictionaryComparer<TKey, TValue>(aggressive).Equals(expected, actual)) + { + _NUnit.Assert.Fail("Expected: '{0}', Actual: '{1}'", FormatCollection(expected), FormatCollection(actual)); + } + + } + + public static void AreEqual<TKey, TValue>(IDictionary<TKey, TValue> expected, IDictionary<TKey, TValue> actual, bool aggressive, string message, params object[] args) + { + if (!GetDictionaryComparer<TKey, TValue>(aggressive).Equals(expected, actual)) + { + _NUnit.Assert.Fail(message, args); + } + } + + // From CollectionAssert public static void AreEqual<T>(T[] expected, T[] actual) { @@ -352,15 +432,6 @@ namespace Lucene.Net.TestFramework } } - public static void AreEqual<T, S>(IDictionary<T, S> expected, IDictionary<T, S> actual) - { - AreEqual(expected.Count, actual.Count); - foreach (var key in expected.Keys) - { - AreEqual(expected[key], actual[key]); - } - } - // From CollectionAssert public static void AreEqual(ICollection expected, ICollection actual) { diff --git a/src/Lucene.Net.TestFramework/Support/JavaCompatibility/LuceneTestCase.cs b/src/Lucene.Net.TestFramework/Support/JavaCompatibility/LuceneTestCase.cs index d02752f..e267119 100644 --- a/src/Lucene.Net.TestFramework/Support/JavaCompatibility/LuceneTestCase.cs +++ b/src/Lucene.Net.TestFramework/Support/JavaCompatibility/LuceneTestCase.cs @@ -138,24 +138,24 @@ namespace Lucene.Net.Util Assert.AreEqual(d1, d2, delta, msg); } - internal static void assertEquals<T>(ISet<T> expected, ISet<T> actual) + internal static void assertEquals<T>(ISet<T> expected, ISet<T> actual, bool aggressive = true) { - Assert.True(JCG.SetEqualityComparer<T>.Aggressive.Equals(expected, actual)); + Assert.AreEqual(expected, actual, aggressive); } - internal static void assertEquals<T>(string message, ISet<T> expected, ISet<T> actual) + internal static void assertEquals<T>(string message, ISet<T> expected, ISet<T> actual, bool aggressive = true) { - Assert.True(JCG.SetEqualityComparer<T>.Aggressive.Equals(expected, actual), message); + Assert.AreEqual(expected, actual, aggressive, message); } - internal static void assertEquals<T>(IList<T> expected, IList<T> actual) + internal static void assertEquals<T>(IList<T> expected, IList<T> actual, bool aggressive = true) { - Assert.True(JCG.ListEqualityComparer<T>.Aggressive.Equals(expected, actual)); + Assert.AreEqual(expected, actual, aggressive); } - internal static void assertEquals<T>(string message, IList<T> expected, IList<T> actual) + internal static void assertEquals<T>(string message, IList<T> expected, IList<T> actual, bool aggressive = true) { - Assert.True(JCG.SetEqualityComparer<T>.Aggressive.Equals(expected, actual), message); + Assert.AreEqual(expected, actual, aggressive, message); } internal static void assertEquals<T>(T[] expected, T[] actual) @@ -168,9 +168,14 @@ namespace Lucene.Net.Util Assert.AreEqual(expected, actual, message); } - internal static void assertEquals<T, S>(IDictionary<T, S> expected, IDictionary<T, S> actual) + internal static void assertEquals<TKey, TValue>(IDictionary<TKey, TValue> expected, IDictionary<TKey, TValue> actual, bool aggressive = true) { - Assert.AreEqual(expected, actual); + Assert.AreEqual(expected, actual, aggressive); + } + + internal static void assertEquals<TKey, TValue>(string message, IDictionary<TKey, TValue> expected, IDictionary<TKey, TValue> actual, bool aggressive = true) + { + Assert.AreEqual(expected, actual, aggressive, message); } internal static void assertNotSame(object unexpected, object actual)
