Skip to content

Improve code coverage of the bloomfilter library #666

@jeltsch

Description

@jeltsch

This issue calls for improving code coverage of the bloomfilter library.

A code coverage report was created by executing cabal test --enable-coverage lsm-tree:bloomfilter-tests on the main branch as of 2 April 2025, concretely on commit 441f194.

The individual coverage deficits of all modules in the bloomfilter library where examined. All non-trivial cases of missing coverage are listed below. Each case is described by either of the following:

  • A situation that never occurred, which led to code not being executed
  • A value that was never used (in which case the description contains the phrase “never used”)

Missing coverage of the following kinds is not mentioned here:

  • Lack of coverage that follows from the program logic (impossible situations and unneeded values)
  • Derived class instantiations
  • Instantiations of NFData
  • Field selectors
  • Error message strings or parts thereof
  • Explicit ()

Data.BloomFilter

  • freeze
    • Never used
  • thaw
    • Never used
  • empty
    • Never used
  • singleton
    • Never used
  • elemHashes
    • Bit in Bloom filter not set
  • length
    • Never used
  • unfold
    • Never used

Data.BloomFilter.BitVec64

  • prefetchIndex
    • Never used
  • new
    • 128 or more words
  • unsafeWrite
    • Bit to be cleared
  • unsafeRead
    • Never used
  • freeze
    • Never used
  • thaw
    • Never used

Data.BloomFilter.Calc

  • falsePositiveProb
    • Never used

Data.BloomFilter.Easy

  • easyList
    • Empty set
  • easyNew
    • Never used
  • safeSuggestSizing
    • Non-positive expected maximum capacity
    • Expected maximum capacity too large
    • Invalid desired FPR
  • primes
    • All above 1021 never used
  • suggestSizing
    • Invalid expected maximum capacity
    • Invalid desired FPR

Data.BloomFilter.Hash

  • hashSalt64 @ByteArray
    • Never used
  • hashByteArray
    • Never used
  • update @Word32
    • Never used
  • update @Char
    • Never used
  • makeHashes @RealHashes
    • Never used
  • evalHashes @RealHashes
    • Never used
  • Prim (CheapHashes a)
    • Never used
  • indexLo
    • Never used
  • indexHi
    • Never used

Data.BloomFilter.Internal

  • (==) @(Bloom' h a)
    • Size divisible by 64
  • Show (Bloom' h a)
    • Never used

Data.BloomFilter.Mutable

  • new
    • No bits in filter
    • 2⁴⁸ − 1 or more bits in filter1
  • elem
    • Never used
  • elemHashes
    • Never used
  • length
    • Never used

Data.BloomFilter.Mutable.Internal

  • Show (MBloom' s h a)
    • Never used

Footnotes

  1. I actually wonder whether the corresponding guard should say > instead of >=, thus referring to 2⁴⁸ or more bits.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions