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 52 53 54 55 56 57 58 59 60 61 62
#include "catch.hpp"

#include "DataFormats/Common/interface/RefCore.h"
#include "DataFormats/Common/interface/RefCoreWithIndex.h"
#include "DataFormats/Common/interface/EDProductGetter.h"
#include "SimpleEDProductGetter.h"

TEST_CASE("RefCore", "[RefCore]") {
  SECTION("default constructor") {
    edm::RefCore default_refcore;
    REQUIRE(default_refcore.isNull());
    REQUIRE(default_refcore.isNonnull() == false);
    REQUIRE(!default_refcore);
    REQUIRE(default_refcore.productGetter() == 0);
    REQUIRE(default_refcore.id().isValid() == false);
  }

  SECTION("non-default constructor") {
    SimpleEDProductGetter getter;
    edm::ProductID id(1, 201U);
    REQUIRE(id.isValid());
    edm::RefCore refcore(id, 0, &getter, false);
    REQUIRE(refcore.isNull() == false);
    REQUIRE(refcore.isNonnull());
    REQUIRE(!!refcore);
    REQUIRE(refcore.productGetter() == &getter);
    REQUIRE(refcore.id().isValid());
  }
}

TEST_CASE("RefCoreWithIndex", "[RefCore]") {
  SECTION("default constructor") {
    edm::RefCoreWithIndex default_refcore;
    REQUIRE(default_refcore.isNull());
    REQUIRE(default_refcore.isNonnull() == false);
    REQUIRE(!default_refcore);
    REQUIRE(default_refcore.productGetter() == 0);
    REQUIRE(default_refcore.id().isValid() == false);
    REQUIRE(default_refcore.index() == edm::key_traits<unsigned int>::value);
    edm::RefCore compareTo;
    edm::RefCore const& converted = default_refcore.toRefCore();
    REQUIRE(compareTo.productGetter() == converted.productGetter());
    REQUIRE(compareTo.id() == converted.id());
  }

  SECTION("non-default constructor") {
    SimpleEDProductGetter getter;
    edm::ProductID id(1, 201U);
    REQUIRE(id.isValid());
    edm::RefCoreWithIndex refcore(id, 0, &getter, false, 1);
    REQUIRE(refcore.isNull() == false);
    REQUIRE(refcore.isNonnull());
    REQUIRE(!!refcore);
    REQUIRE(refcore.productGetter() == &getter);
    REQUIRE(refcore.id().isValid());
    REQUIRE(refcore.index() == 1);
    edm::RefCore compareTo(id, 0, &getter, false);
    edm::RefCore const& converted = refcore.toRefCore();
    REQUIRE(compareTo.productGetter() == converted.productGetter());
    REQUIRE(compareTo.id() == converted.id());
  }
}