Line Code
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 40 41 42 43 44 45 46 47 48 49 50 51
#include <catch.hpp>

#include "FWCore/Utilities/interface/IndexSet.h"

TEST_CASE("IndexSet basic operations", "[IndexSet]") {
  edm::IndexSet set;
  REQUIRE(set.empty());
  REQUIRE(set.size() == 0);
  REQUIRE(!set.has(0));

  set.reserve(10);

  REQUIRE(set.empty());
  REQUIRE(set.size() == 0);
  REQUIRE(!set.has(0));

  set.insert(0);
  REQUIRE(!set.empty());
  REQUIRE(set.size() == 1);
  REQUIRE(set.has(0));
  REQUIRE(!set.has(1));

  set.insert(2);
  REQUIRE(set.size() == 2);
  REQUIRE(set.has(0));
  REQUIRE(!set.has(1));
  REQUIRE(set.has(2));
  REQUIRE(!set.has(3));

  set.insert(20);
  REQUIRE(set.size() == 3);
  REQUIRE(set.has(0));
  REQUIRE(!set.has(1));
  REQUIRE(set.has(2));
  REQUIRE(!set.has(3));
  REQUIRE(!set.has(19));
  REQUIRE(set.has(20));
  REQUIRE(!set.has(21));

  set.insert(2);
  REQUIRE(set.size() == 3);
  REQUIRE(set.has(2));

  set.clear();
  REQUIRE(set.empty());
  REQUIRE(set.size() == 0);
  REQUIRE(!set.has(0));
  REQUIRE(!set.has(1));
  REQUIRE(!set.has(2));
  REQUIRE(!set.has(3));
}