public void GetHashCode_ReturnsDifferentHashCodes_ForDifferentArrays()
        {
            var r1 = _comparer.GetHashCode(new[] { 1, 2, 3 });
            var r2 = _comparer.GetHashCode(new[] { 1, 2, 4 });

            Assert.AreNotEqual(r1, r2);
        }
    static void Main()
    {
        byte[] x = { 1, 2, 3 };
        byte[] y = { 1, 2, 3 };
        byte[] z = { 4, 5, 6 };

        var comparer = new ArrayEqualityComparer <byte>();

        Console.WriteLine(comparer.GetHashCode(x));
        Console.WriteLine(comparer.GetHashCode(y));
        Console.WriteLine(comparer.GetHashCode(z));
        Console.WriteLine(comparer.Equals(x, y));
        Console.WriteLine(comparer.Equals(x, z));
    }
        public void ArrayEqualityComparerGetHashCodeReturnsDefaultHashCodeIfArrayIsEmpty()
        {
            const int expectedHashCode = 23;

            var comparer = new ArrayEqualityComparer <int>();

            int[] array = new int[0];

            int result = comparer.GetHashCode(array);

            Assert.AreEqual(expectedHashCode, result);
        }
        public void ArrayEqualityComparerGetHashCodeReturnsZeroIfArrayIsNull()
        {
            const int expectedHashCode = 0;

            var comparer = new ArrayEqualityComparer <int>();

            int[] array = null;

            int result = comparer.GetHashCode(array);

            Assert.AreEqual(expectedHashCode, result);
        }
        static void Main(string[] args)
        {
            int[] x = { 1, 2, 3 };
            int[] y = { 1, 2, 3 };
            int[] z = { 4, 5, 6 };

            var comparer = new ArrayEqualityComparer <int>();

            Console.WriteLine(comparer.GetHashCode(x));
            Console.WriteLine(comparer.GetHashCode(y));
            Console.WriteLine(comparer.GetHashCode(z));
            Console.WriteLine(comparer.Equals(x, y));
            Console.WriteLine(comparer.Equals(x, z));


            Console.WriteLine();
            Console.WriteLine("Byte comparers");
            byte[] x1 = { 1, 2, 3 };
            byte[] y1 = { 1, 2, 3 };
            byte[] z1 = { 4, 5, 6 };

            var comparer1 = new ByteArrayEqualityComparer();

            Console.WriteLine(comparer1.GetHashCode(x1));
            Console.WriteLine(comparer1.GetHashCode(y1));
            Console.WriteLine(comparer1.GetHashCode(z1));
            Console.WriteLine(comparer1.Equals(x1, y1));
            Console.WriteLine(comparer1.Equals(x1, z1));

            var t = new Dictionary <byte[], string>(comparer1);

            t.Add(x1, "x");
            t.Add(z1, "z");

            Console.WriteLine($"t[y] = {t[y1]} ");

            Console.WriteLine("Press [Enter] for continue ...");
            Console.ReadLine();
        }
        public void ArrayEqualityComparerGetHashCodeReturnsSameHashCodeIfArrayContainsNullElements()
        {
            var comparer = new ArrayEqualityComparer <int?>();

            int?[] array = new int?[] { 1, 2, null, 4, 5 };

            //get the HashCode 2000 times to confirm it is consistent for lifetime of the array
            HashSet <int> hashes = new HashSet <int>();

            for (int i = 0; i < 2000; i++)
            {
                hashes.Add(comparer.GetHashCode(array));
            }

            Assert.AreEqual(1, hashes.Count);
        }
Beispiel #7
0
 public static int GetArrayHashCode <T> (this T[] array)
 {
     return(ArrayEqualityComparer <T> .GetHashCode(array));
 }
Beispiel #8
0
 public override int GetHashCode()
 {
     return(DataComparer.GetHashCode(_data));
 }