File indexing completed on 2023-10-25 09:39:16
0001
0002
0003
0004
0005 #include "DataFormats/L1GlobalCaloTrigger/interface/L1GctInternHtMiss.h"
0006
0007 #include <cassert>
0008 #include <iostream>
0009 #include <sstream>
0010 #include <cstdlib>
0011
0012 using namespace std;
0013
0014 uint16_t gCapBlockVal = 0x582;
0015 uint16_t gCapIndexVal = 3;
0016 int16_t gBxVal = 55;
0017 uint32_t gRawVal1 = 0xf9ef8ecf;
0018 uint32_t gRawVal2 = 0x394e1d9f;
0019
0020
0021 void terminateIfAssertNotWorking();
0022 void testMethodsOfNullVariant();
0023 void testMethodsOfHtxVariant();
0024 void testMethodsOfHtyVariant();
0025 void testMethodsOfHtxHtyVariant();
0026 void testInequalityOperatorsBetweenCtors();
0027
0028 int main() {
0029 terminateIfAssertNotWorking();
0030
0031 testMethodsOfNullVariant();
0032 testMethodsOfHtxVariant();
0033 testMethodsOfHtyVariant();
0034 testMethodsOfHtxHtyVariant();
0035 testInequalityOperatorsBetweenCtors();
0036
0037 cout << "Unit test for L1GctInternHtMiss passed successfully." << endl;
0038 return 0;
0039 }
0040
0041 void terminateIfAssertNotWorking() {
0042 bool assertsWork = false;
0043 assert(assertsWork = true);
0044 if (assertsWork) {
0045 return;
0046 }
0047
0048 cout << "ERROR! Cannot run unit test as the assert() function is being\n"
0049 "optimised away by the compiler. Please recompile test with\n"
0050 "the debug options enabled and without #define NDEBUG"
0051 << endl;
0052 exit(1);
0053 }
0054
0055 void testMethodsOfNullVariant() {
0056 L1GctInternHtMiss testObj1;
0057
0058 assert(testObj1.type() == L1GctInternHtMiss::nulltype);
0059 assert(testObj1.capBlock() == 0);
0060 assert(testObj1.capIndex() == 0);
0061 assert(testObj1.bx() == 0);
0062 assert(testObj1.isThereHtx() == false);
0063 assert(testObj1.isThereHty() == false);
0064 assert(testObj1.raw() == 0);
0065 assert(testObj1.htx() == 0);
0066 assert(testObj1.hty() == 0);
0067 assert(testObj1.overflow() == false);
0068
0069 ostringstream oss;
0070 oss << testObj1;
0071 string expectedStr =
0072 " L1GctInternHtMiss: htx=n/a, hty=n/a;"
0073 " cap block=0x0, index=0, BX=0";
0074 assert(oss.str() == expectedStr);
0075 }
0076
0077 void testMethodsOfHtxVariant() {
0078 L1GctInternHtMiss testObj1 = L1GctInternHtMiss::unpackerMissHtx(gCapBlockVal, gCapIndexVal, gBxVal, gRawVal1);
0079
0080 assert(testObj1.type() == L1GctInternHtMiss::miss_htx);
0081 assert(testObj1.capBlock() == gCapBlockVal);
0082 assert(testObj1.capIndex() == gCapIndexVal);
0083 assert(testObj1.bx() == gBxVal);
0084 assert(testObj1.isThereHtx() == true);
0085 assert(testObj1.isThereHty() == false);
0086 assert(testObj1.raw() == (gRawVal1 & 0x4000ffff));
0087 assert(testObj1.htx() == -28977);
0088 assert(testObj1.hty() == 0);
0089 assert(testObj1.overflow() == true);
0090
0091 L1GctInternHtMiss testObj2 = L1GctInternHtMiss::unpackerMissHtx(gCapBlockVal, gCapIndexVal, gBxVal, gRawVal2);
0092 assert(testObj2.raw() == (gRawVal2 & 0x4000ffff));
0093 assert(testObj2.htx() == 7583);
0094 assert(testObj2.hty() == 0);
0095 assert(testObj2.overflow() == false);
0096
0097 L1GctInternHtMiss testObj3(testObj1);
0098
0099 assert(testObj1 == testObj3);
0100 assert(testObj1 != testObj2);
0101
0102 testObj2 = testObj3;
0103
0104 assert(testObj1 == testObj2);
0105
0106 ostringstream oss;
0107 oss << testObj1;
0108 string expectedStr =
0109 " L1GctInternHtMiss: htx=-28977, hty=n/a; overflow set;"
0110 " cap block=0x582, index=3, BX=55";
0111 assert(oss.str() == expectedStr);
0112 }
0113
0114 void testMethodsOfHtyVariant() {
0115 L1GctInternHtMiss testObj1 = L1GctInternHtMiss::unpackerMissHty(gCapBlockVal, gCapIndexVal, gBxVal, gRawVal1);
0116
0117 assert(testObj1.type() == L1GctInternHtMiss::miss_hty);
0118 assert(testObj1.capBlock() == gCapBlockVal);
0119 assert(testObj1.capIndex() == gCapIndexVal);
0120 assert(testObj1.bx() == gBxVal);
0121 assert(testObj1.isThereHtx() == false);
0122 assert(testObj1.isThereHty() == true);
0123 assert(testObj1.raw() == (gRawVal1 & 0x4000ffff));
0124 assert(testObj1.htx() == 0);
0125 assert(testObj1.hty() == -28977);
0126 assert(testObj1.overflow() == true);
0127
0128 L1GctInternHtMiss testObj2 = L1GctInternHtMiss::unpackerMissHty(gCapBlockVal, gCapIndexVal, gBxVal, gRawVal2);
0129 assert(testObj2.raw() == (gRawVal2 & 0x4000ffff));
0130 assert(testObj2.htx() == 0);
0131 assert(testObj2.hty() == 7583);
0132 assert(testObj2.overflow() == false);
0133
0134 L1GctInternHtMiss testObj3(testObj1);
0135
0136 assert(testObj1 == testObj3);
0137 assert(testObj1 != testObj2);
0138
0139 testObj2 = testObj3;
0140
0141 assert(testObj1 == testObj2);
0142
0143 ostringstream oss;
0144 oss << testObj1;
0145 string expectedStr =
0146 " L1GctInternHtMiss: htx=n/a, hty=-28977; overflow set;"
0147 " cap block=0x582, index=3, BX=55";
0148 assert(oss.str() == expectedStr);
0149 }
0150
0151 void testMethodsOfHtxHtyVariant() {
0152 L1GctInternHtMiss testObj1 = L1GctInternHtMiss::unpackerMissHtxHty(gCapBlockVal, gCapIndexVal, gBxVal, gRawVal1);
0153
0154 assert(testObj1.type() == L1GctInternHtMiss::miss_htx_and_hty);
0155 assert(testObj1.capBlock() == gCapBlockVal);
0156 assert(testObj1.capIndex() == gCapIndexVal);
0157 assert(testObj1.bx() == gBxVal);
0158 assert(testObj1.isThereHtx() == true);
0159 assert(testObj1.isThereHty() == true);
0160 assert(testObj1.raw() == (gRawVal1 & 0x3fffbfff));
0161 assert(testObj1.htx() == 3791);
0162 assert(testObj1.hty() == -1553);
0163 assert(testObj1.overflow() == true);
0164
0165 L1GctInternHtMiss testObj2 = L1GctInternHtMiss::unpackerMissHtxHty(gCapBlockVal, gCapIndexVal, gBxVal, gRawVal2);
0166 assert(testObj2.raw() == (gRawVal2 & 0x3fffbfff));
0167 assert(testObj2.htx() == 7583);
0168 assert(testObj2.hty() == -1714);
0169 assert(testObj2.overflow() == false);
0170
0171 L1GctInternHtMiss testObj3(testObj1);
0172
0173 assert(testObj1 == testObj3);
0174 assert(testObj1 != testObj2);
0175
0176 testObj2 = testObj3;
0177
0178 assert(testObj1 == testObj2);
0179
0180 ostringstream oss;
0181 oss << testObj1;
0182 string expectedStr =
0183 " L1GctInternHtMiss: htx=3791, hty=-1553; overflow set;"
0184 " cap block=0x582, index=3, BX=55";
0185 assert(oss.str() == expectedStr);
0186 }
0187
0188 void testInequalityOperatorsBetweenCtors() {
0189 L1GctInternHtMiss testObj1 = L1GctInternHtMiss::unpackerMissHtx(gCapBlockVal, gCapIndexVal, gBxVal, gRawVal1);
0190 L1GctInternHtMiss testObj2 = L1GctInternHtMiss::unpackerMissHty(gCapBlockVal, gCapIndexVal, gBxVal, gRawVal1);
0191 L1GctInternHtMiss testObj3 = L1GctInternHtMiss::unpackerMissHtxHty(gCapBlockVal, gCapIndexVal, gBxVal, gRawVal1);
0192
0193 assert(testObj1 != testObj2);
0194 assert(testObj1 != testObj3);
0195 assert(testObj2 != testObj3);
0196 }