C# ошибка Expected: not equal to 0 But was: 0

488
04 июня 2018, 09:10

Решаю данную задачу https://ulearn.me/Course/basicprogramming2/Praktika_Readonly_bytes__1a5e39b3-9b7f-46c5-bb3c-ab024f2c8714

По заданию создал класс ReadonlyBytes

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace hashes
{
    public class ReadonlyBytes : IEnumerable<byte>
    {
        private readonly byte[] byteArray;
        private readonly int hashCode;
        public int Length { get; }
        public ReadonlyBytes(params byte[] array)
        {
            if (array == null)
            {
                throw new ArgumentNullException();
            }
            Length = array.Length;
            byteArray = array;
            hashCode = GetHashCode();
        }
        public override string ToString()
        {
            var result = new StringBuilder("[");
            result.Append(String.Join(", ", byteArray));
            result.Append("]");
            return result.ToString();
        }
        public override int GetHashCode()
        {
            UInt64 result = 0;
            UInt64 p = 16777619;
            var shift = Length / 50;
            for (var i = 0; i < Length; i += 1 + shift)
            {
                result ^= (uint)byteArray[i];
                result = (result * p) % int.MaxValue;
            }
            return (int)(result);
        }
        public override bool Equals(object obj)
        {
            if (ReferenceEquals(null, obj)) return false;
            if (ReferenceEquals(this, obj)) return true;
            var castedObj = obj as ReadonlyBytes;
            if (this.hashCode != castedObj.hashCode || this.Length != castedObj.Length)
            {
                return false;
            }
            else
            {
                for (var i = 0; i < this.Length; i++)
                    if (this[i] != castedObj[i])
                        return false;
                return true;
            }
        }
        public byte this[int index] => byteArray[index];
        public IEnumerator<byte> GetEnumerator()
        {
            for (var i = 0; i < Length; i++)
                yield return byteArray[i];
        }
        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
    }
} 

Все тесты данный код проходит, но при попытке послать данное решение выводит лог

Как минимум один из тестов не пройден! Название теста: HashCodeDiffers_IfArraysDiffersOnTheLastElementOnly Сообщение:
Expected: not equal to 0 But was: 0

Стек вызовов: at checking.ReadonlyBytes_HiddenTests.HashCodeDiffers_IfArraysDiffersOnTheLastElementOnly() Когда может возникать эта ошибка? И как это можно исправить?

READ ALSO
Создание кастомного checkbox

Создание кастомного checkbox

Как создать кастомный вариант checkbox в виде кнопки? Был бы благодарен примеру и краткими объяснениями

239
Конвертирование Enum в C#

Конвертирование Enum в C#

Возможно глупый вопросМожно ли преобразовать один enum в другой? К пример Namespace1

200
ContexMenuStrip картинка

ContexMenuStrip картинка

Как и дальше убирать место для картинки?!

223
3d объект на 2d сцене

3d объект на 2d сцене

Можно ли такое сделать? Есть поле, и на нем должен появляться 3д объект, само поле в 2д, камера сверхуБудет ли взаимодействовать физика 3д объекта...

182