コード例 #1
0
        public void TestHashSetEqualityComparer()
        {
            var data = new[] { "foo", "bar", "foobar" };
            var set1 = new HashSet <string>(data, StringComparer.Ordinal);
            var set2 = new HashSet <string>(data, StringComparer.OrdinalIgnoreCase);

            var comparer = HashSetEx <string> .CreateSetComparer();

            Assert.IsTrue(comparer.Equals(set1, set1));
            Assert.IsTrue(comparer.Equals(set1, set2));
            Assert.AreEqual(comparer.GetHashCode(set1), comparer.GetHashCode(set2));

            var set3 = new HashSet <string>(new[] { "foobar", "foo", "bar" });

            Assert.IsTrue(comparer.Equals(set1, set3));
            Assert.AreEqual(comparer.GetHashCode(set1), comparer.GetHashCode(set3));

            var set4 = new HashSet <string>(new[] { "oh", "hai", "folks" });

            Assert.IsFalse(comparer.Equals(set2, set4));
            Assert.AreNotEqual(comparer.GetHashCode(set2), comparer.GetHashCode(set4));

            Assert.IsTrue(comparer.Equals(null, null));
            // ReSharper disable once AssignNullToNotNullAttribute
            Assert.AreEqual(0, comparer.GetHashCode(null));
            Assert.IsFalse(comparer.Equals(set1, null));
        }