File indexing completed on 2023-03-17 11:02:34
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "cppunit/extensions/HelperMacros.h"
0010 #include <cstring>
0011 #include "FWCore/Framework/interface/DataKey.h"
0012 #include "FWCore/Framework/interface/HCTypeTag.h"
0013
0014 using namespace edm;
0015 using namespace edm::eventsetup;
0016
0017 class testDataKey : public CppUnit::TestFixture {
0018 CPPUNIT_TEST_SUITE(testDataKey);
0019
0020 CPPUNIT_TEST(nametagConstructionTest);
0021 CPPUNIT_TEST(nametagComparisonTest);
0022 CPPUNIT_TEST(nametagCopyTest);
0023 CPPUNIT_TEST(ConstructionTest);
0024 CPPUNIT_TEST(ComparisonTest);
0025 CPPUNIT_TEST(CopyTest);
0026 CPPUNIT_TEST(nocopyConstructionTest);
0027
0028 CPPUNIT_TEST_SUITE_END();
0029
0030 public:
0031 void setUp() {}
0032 void tearDown() {}
0033
0034 void nametagConstructionTest();
0035 void nametagComparisonTest();
0036 void nametagCopyTest();
0037 void ConstructionTest();
0038 void ComparisonTest();
0039 void CopyTest();
0040 void nocopyConstructionTest();
0041 };
0042
0043
0044 CPPUNIT_TEST_SUITE_REGISTRATION(testDataKey);
0045
0046 void testDataKey::nametagConstructionTest() {
0047 const NameTag defaultTag;
0048 CPPUNIT_ASSERT(0 == std::strcmp("", defaultTag.value()));
0049
0050 const NameTag namedTag("fred");
0051 CPPUNIT_ASSERT(0 == std::strcmp("fred", namedTag.value()));
0052 }
0053
0054 void testDataKey::nametagComparisonTest() {
0055 const NameTag defaultTag;
0056 CPPUNIT_ASSERT(defaultTag == defaultTag);
0057
0058 const NameTag fredTag("fred");
0059 CPPUNIT_ASSERT(fredTag == fredTag);
0060
0061 CPPUNIT_ASSERT(!(defaultTag == fredTag));
0062
0063 const NameTag barneyTag("barney");
0064
0065 CPPUNIT_ASSERT(barneyTag < fredTag);
0066 }
0067
0068 void testDataKey::nametagCopyTest() {
0069 const NameTag defaultTag;
0070 NameTag tester(defaultTag);
0071 CPPUNIT_ASSERT(tester == defaultTag);
0072
0073 const NameTag fredTag("fred");
0074 tester = fredTag;
0075 CPPUNIT_ASSERT(tester == fredTag);
0076 }
0077
0078 namespace datakey_t {
0079 class Dummy {};
0080 class Dummy2 {};
0081 }
0082 using datakey_t::Dummy;
0083 using datakey_t::Dummy2;
0084
0085 HCTYPETAG_HELPER_METHODS(Dummy)
0086 HCTYPETAG_HELPER_METHODS(Dummy2)
0087
0088 void testDataKey::ConstructionTest() {
0089 DataKey defaultKey;
0090 CPPUNIT_ASSERT(TypeTag() == defaultKey.type());
0091 CPPUNIT_ASSERT(0 == std::strcmp("", defaultKey.name().value()));
0092
0093 DataKey dummyKey(DataKey::makeTypeTag<Dummy>(), "");
0094 CPPUNIT_ASSERT(DataKey::makeTypeTag<Dummy>() == dummyKey.type());
0095 CPPUNIT_ASSERT(0 == std::strcmp("", dummyKey.name().value()));
0096
0097 DataKey namedDummyKey(DataKey::makeTypeTag<Dummy>(), "fred");
0098 CPPUNIT_ASSERT(DataKey::makeTypeTag<Dummy>() == namedDummyKey.type());
0099 CPPUNIT_ASSERT(0 == std::strcmp("fred", namedDummyKey.name().value()));
0100 }
0101
0102 void testDataKey::ComparisonTest() {
0103 const DataKey defaultKey;
0104 CPPUNIT_ASSERT(defaultKey == defaultKey);
0105 CPPUNIT_ASSERT(!(defaultKey < defaultKey));
0106
0107 const DataKey dummyKey(DataKey::makeTypeTag<Dummy>(), "");
0108 const DataKey fredDummyKey(DataKey::makeTypeTag<Dummy>(), "fred");
0109 const DataKey barneyDummyKey(DataKey::makeTypeTag<Dummy>(), "barney");
0110
0111 CPPUNIT_ASSERT(!(defaultKey == dummyKey));
0112 CPPUNIT_ASSERT(dummyKey == dummyKey);
0113 CPPUNIT_ASSERT(!(dummyKey == fredDummyKey));
0114
0115 CPPUNIT_ASSERT(barneyDummyKey == barneyDummyKey);
0116 CPPUNIT_ASSERT(barneyDummyKey < fredDummyKey);
0117 CPPUNIT_ASSERT(!(fredDummyKey < barneyDummyKey));
0118 CPPUNIT_ASSERT(!(barneyDummyKey == fredDummyKey));
0119
0120 const DataKey dummy2Key(DataKey::makeTypeTag<Dummy2>(), "");
0121
0122 CPPUNIT_ASSERT(!(dummy2Key == dummyKey));
0123 }
0124
0125 void testDataKey::CopyTest() {
0126 const DataKey defaultKey;
0127 DataKey tester(defaultKey);
0128 CPPUNIT_ASSERT(tester == defaultKey);
0129
0130 const DataKey dummyKey(DataKey::makeTypeTag<Dummy>(), "");
0131 tester = dummyKey;
0132 CPPUNIT_ASSERT(tester == dummyKey);
0133 const DataKey fredDummyKey(DataKey::makeTypeTag<Dummy>(), "fred");
0134 tester = fredDummyKey;
0135 CPPUNIT_ASSERT(tester == fredDummyKey);
0136
0137 DataKey tester2(fredDummyKey);
0138 CPPUNIT_ASSERT(tester2 == fredDummyKey);
0139 }
0140
0141 void testDataKey::nocopyConstructionTest() {
0142 const DataKey fredDummyKey(DataKey::makeTypeTag<Dummy>(), "fred");
0143 const DataKey noCopyFredDummyKey(DataKey::makeTypeTag<Dummy>(), "fred", DataKey::kDoNotCopyMemory);
0144
0145 CPPUNIT_ASSERT(fredDummyKey == noCopyFredDummyKey);
0146
0147 const DataKey copyFredDummyKey(noCopyFredDummyKey);
0148 CPPUNIT_ASSERT(copyFredDummyKey == noCopyFredDummyKey);
0149
0150 DataKey copy2FredDummyKey;
0151 copy2FredDummyKey = noCopyFredDummyKey;
0152 CPPUNIT_ASSERT(copy2FredDummyKey == noCopyFredDummyKey);
0153
0154 DataKey noCopyBarneyDummyKey(DataKey::makeTypeTag<Dummy>(), "barney", DataKey::kDoNotCopyMemory);
0155
0156 noCopyBarneyDummyKey = noCopyFredDummyKey;
0157 CPPUNIT_ASSERT(noCopyBarneyDummyKey == noCopyFredDummyKey);
0158 }