beacon-biosignals/Onda.jl

Missing method for `Base.hash`

Closed this issue · 0 comments

Onda defines isequal (and ==) but not hash, allowing two samples to be isequal but have different hashes (which breaks the docstring of isequal along with dicts etc):

Onda.jl/src/samples.jl

Lines 61 to 75 in 9a45862

"""
==(a::Samples, b::Samples)
Returns `a.encoded == b.encoded && a.info == b.info && a.data == b.data`.
"""
Base.:(==)(a::Samples, b::Samples) = a.encoded == b.encoded && a.info == b.info && a.data == b.data
"""
isequal(a::Samples, b::Samples)
Checks if each field of `a` and `b` are `isequal` to each other; specifically, this function returns `isequal(a.encoded, b.encoded) && isequal(a.info, b.info) && isequal(a.data, b.data)`.
"""
function Base.isequal(a::Samples, b::Samples)
return isequal(a.encoded, b.encoded) && isequal(a.info, b.info) && isequal(a.data, b.data)
end

We should define hash in the same way as isequal to make them consistent.