File: test_minimum_load_factor.cc

package info (click to toggle)
libcuckoo 0.3.1-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,036 kB
  • sloc: cpp: 16,538; ansic: 72; python: 34; sh: 15; makefile: 9
file content (39 lines) | stat: -rw-r--r-- 1,156 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>

#include <catch.hpp>

#include "unit_test_util.hh"
#include <libcuckoo/cuckoohash_config.hh>
#include <libcuckoo/cuckoohash_map.hh>

TEST_CASE("minimum load factor initialized to default",
          "[minimum load factor]") {
  IntIntTable tbl;
  REQUIRE(tbl.minimum_load_factor() == libcuckoo::DEFAULT_MINIMUM_LOAD_FACTOR);
}

class BadHashFunction {
public:
  size_t operator()(int) { return 0; }
};

TEST_CASE("caps automatic expansion", "[minimum load fator]") {
  const size_t slot_per_bucket = 4;
  libcuckoo::cuckoohash_map<int, int, BadHashFunction, std::equal_to<int>,
                 std::allocator<std::pair<const int, int>>, slot_per_bucket>
      tbl(16);
  tbl.minimum_load_factor(0.6);

  for (size_t i = 0; i < 2 * slot_per_bucket; ++i) {
    tbl.insert(i, i);
  }

  REQUIRE_THROWS_AS(tbl.insert(2 * slot_per_bucket, 0),
                    libcuckoo::load_factor_too_low);
}

TEST_CASE("invalid minimum load factor", "[minimum load factor]") {
  IntIntTable tbl;
  REQUIRE_THROWS_AS(tbl.minimum_load_factor(-0.01), std::invalid_argument);
  REQUIRE_THROWS_AS(tbl.minimum_load_factor(1.01), std::invalid_argument);
}