1x90DataTests.cpp

Go to the documentation of this file.
00001 // Template for a test suite.
00002 
00003 #include <config.h>
00004 #include <cppunit/extensions/HelperMacros.h>
00005 #include <cppunit/Asserter.h>
00006 #include "Asserts.h"
00007 
00008 #include "CCAENV1x90Data.h"
00009 
00010 #ifdef HAVE_STD_NAMESPACE
00011   using namespace std;
00012 #endif
00013 
00014 using namespace CCAENV1x90Data;
00015 
00016 class DataTests : public CppUnit::TestFixture {
00017   CPPUNIT_TEST_SUITE(DataTests);
00018   CPPUNIT_TEST(DataTypes);
00019   CPPUNIT_TEST(GlobalHeaderFields);
00020   CPPUNIT_TEST(TDCHeaderFields);
00021   CPPUNIT_TEST(TDCChipNumber);
00022   CPPUNIT_TEST(EventIdTest);
00023   CPPUNIT_TEST(TDCWordCountTest);
00024   CPPUNIT_TEST(TestMeasurement);
00025   CPPUNIT_TEST(ErrorBitsTest);
00026   CPPUNIT_TEST(TriggerTimeTest);
00027   CPPUNIT_TEST(GlobalTrailerTest);
00028   CPPUNIT_TEST_SUITE_END();
00029 
00030 
00031 private:
00032 
00033 public:
00034   void setUp() {
00035   }
00036   void tearDown() {
00037   }
00038 protected:
00039   void DataTypes();
00040   void GlobalHeaderFields();
00041   void TDCHeaderFields();
00042   void TDCChipNumber();
00043   void EventIdTest();
00044   void TDCWordCountTest();
00045   void TestMeasurement();
00046   void ErrorBitsTest();
00047   void TriggerTimeTest();
00048   void GlobalTrailerTest();
00049 };
00050 
00051 
00052 
00053 CPPUNIT_TEST_SUITE_REGISTRATION(DataTests);
00054 
00055 
00056 // Various test data:
00057 
00058 
00059 static const int GlobalHeader(0x40000aac); // Board 12(10), Event 0x55.
00060 static const int TDCHeader(0x0e123567); // TDC header:
00061                                         // chip 2, event 0x123, bunch 0x567.
00062 static const int Measurement(0x06281234); // TDC data:
00063                                           // Trailing, Channel 69, value 0x1234
00064 static const int TDCTrailer(0x1a321666);  // TDC Trailer word:
00065                                           // Chip 2, Event id 0x321, word count
00066                                           // 0x666
00067 static const int TDCError(0x25ff5a5a);    // TDC chip error...
00068                                           // Chip 1 (extra bits),
00069                                           // Every other error bit (evens)
00070 static const int TTimeTag(0x88789abc);    // Extended trigger time tag:
00071                                           // Time 0x789abc.
00072 static const int GlobalTrailer(0x87f033e5); // Global trailer:
00073                                             // overflow, tdc error, trigger lost.
00074                                             // Word count = 0x819f, Geo = 5.
00075 static const int Filler(0xc7ffffff);        // Filler with bunches of extra bits set.
00076 
00077 
00078 // Check that all the test data can be identified, and none of them wrongly so.
00079 //
00080 void
00081 DataTests::DataTypes()
00082 {
00083   // Global header:
00084 
00085   ASSERT(isGlobalHeader(GlobalHeader));
00086   ASSERT(!isGlobalTrailer(GlobalHeader));
00087   ASSERT(!isTDCHeader(GlobalHeader));
00088   ASSERT(!isTDCTrailer(GlobalHeader));
00089   ASSERT(!isTDCError(GlobalHeader));
00090   ASSERT(!isMeasurement(GlobalHeader));
00091   ASSERT(!isTriggerTimeTag(GlobalHeader));
00092   ASSERT(!isFiller(GlobalHeader));
00093 
00094   // TDC Header:
00095 
00096   ASSERT(!isGlobalHeader(TDCHeader));
00097   ASSERT(!isGlobalTrailer(TDCHeader));
00098   ASSERT(isTDCHeader(TDCHeader));
00099   ASSERT(!isTDCTrailer(TDCHeader));
00100   ASSERT(!isTDCError(TDCHeader));
00101   ASSERT(!isMeasurement(TDCHeader));
00102   ASSERT(!isTriggerTimeTag(TDCHeader));
00103   ASSERT(!isFiller(TDCHeader));
00104 
00105 
00106   // Measurement:
00107 
00108   ASSERT(!isGlobalHeader(Measurement));
00109   ASSERT(!isGlobalTrailer(Measurement));
00110   ASSERT(!isTDCHeader(Measurement));
00111   ASSERT(!isTDCTrailer(Measurement));
00112   ASSERT(!isTDCError(Measurement));
00113   ASSERT(isMeasurement(Measurement));
00114   ASSERT(!isTriggerTimeTag(Measurement));
00115   ASSERT(!isFiller(Measurement));
00116 
00117   // TDC Trailer:
00118 
00119   ASSERT(!isGlobalHeader(TDCTrailer));
00120   ASSERT(!isGlobalTrailer(TDCTrailer));
00121   ASSERT(!isTDCHeader(TDCTrailer));
00122   ASSERT(isTDCTrailer(TDCTrailer));
00123   ASSERT(!isTDCError(TDCTrailer));
00124   ASSERT(!isMeasurement(TDCTrailer));
00125   ASSERT(!isTriggerTimeTag(TDCTrailer));
00126   ASSERT(!isFiller(TDCTrailer));
00127 
00128   // TDCError:
00129 
00130   ASSERT(!isGlobalHeader(TDCError));
00131   ASSERT(!isGlobalTrailer(TDCError));
00132   ASSERT(!isTDCHeader(TDCError));
00133   ASSERT(!isTDCTrailer(TDCError));
00134   ASSERT(isTDCError(TDCError));
00135   ASSERT(!isMeasurement(TDCError));
00136   ASSERT(!isTriggerTimeTag(TDCError));
00137   ASSERT(!isFiller(TDCError));
00138 
00139   // Extended time tag:
00140 
00141   ASSERT(!isGlobalHeader(TTimeTag));
00142   ASSERT(!isGlobalTrailer(TTimeTag));
00143   ASSERT(!isTDCHeader(TTimeTag));
00144   ASSERT(!isTDCTrailer(TTimeTag));
00145   ASSERT(!isTDCError(TTimeTag));
00146   ASSERT(!isMeasurement(TTimeTag));
00147   ASSERT(isTriggerTimeTag(TTimeTag));
00148   ASSERT(!isFiller(TTimeTag));
00149 
00150   // Global trailer:
00151 
00152   ASSERT(!isGlobalHeader(GlobalTrailer));
00153   ASSERT(isGlobalTrailer(GlobalTrailer));
00154   ASSERT(!isTDCHeader(GlobalTrailer));
00155   ASSERT(!isTDCTrailer(GlobalTrailer));
00156   ASSERT(!isTDCError(GlobalTrailer));
00157   ASSERT(!isMeasurement(GlobalTrailer));
00158   ASSERT(!isTriggerTimeTag(GlobalTrailer));
00159   ASSERT(!isFiller(GlobalTrailer));
00160 
00161   // Filler:
00162 
00163   ASSERT(!isGlobalHeader(Filler));
00164   ASSERT(!isGlobalTrailer(Filler));
00165   ASSERT(!isTDCHeader(Filler));
00166   ASSERT(!isTDCTrailer(Filler));
00167   ASSERT(!isTDCError(Filler));
00168   ASSERT(!isMeasurement(Filler));
00169   ASSERT(!isTriggerTimeTag(Filler));
00170   ASSERT(isFiller(Filler));
00171 }
00172 
00177 void
00178 DataTests::GlobalHeaderFields()
00179 {
00180   // Using a real global header we should be able to pick out the header
00181   // fields correctly:
00182 
00183   EQMSG("Global header Trigger Number", 0x55, TriggerNumber(GlobalHeader));
00184   EQMSG("Global header Board Number",   (unsigned int)12,   BoardNumber(GlobalHeader));
00185 
00186   // Using a bad global header, we should get string exceptions.
00187 
00188   EXCEPTION(TriggerNumber(Filler), string);
00189   EXCEPTION(BoardNumber(Filler),   string);
00190 
00191 }
00197 void
00198 DataTests::TDCHeaderFields()
00199 {
00200   EQMSG("TDC Chip", 2, (int)TDCChip(TDCHeader));
00201   EQMSG("TDC Event", 0x123, (int)EventId(TDCHeader));
00202   EQMSG("TDC Bunchid", 0x567, (int)BunchId(TDCHeader));
00203 
00204   // Those should all fail throwing string exceptions if
00205   // I hand them a global header:
00206 
00207 
00208   EXCEPTION(TDCChip(GlobalHeader), string);
00209   EXCEPTION(EventId(GlobalHeader), string);
00210   EXCEPTION(BunchId(GlobalHeader), string);
00211 
00212 }
00216 void
00217 DataTests::TDCChipNumber()
00218 {
00219   EQMSG("Trailer ", 2, (int) TDCChip(TDCTrailer));
00220   EQMSG("Error   ", 1, (int) TDCChip(TDCError));
00221 }
00225 void
00226 DataTests::EventIdTest()
00227 {
00228   EQMSG("Trailer: ", 0x321, (int)EventId(TDCTrailer));
00229 }
00233 void
00234 DataTests::TDCWordCountTest()
00235 {
00236   EQMSG("TDC trailer word count ",
00237         0x666, (int)TDCWordCount(TDCTrailer));
00238 
00239   EXCEPTION(TDCWordCount(Filler), string);
00240 
00241 }
00245 void
00246 DataTests::TestMeasurement()
00247 {
00248 
00249   // Extract the fields from a valid datum:
00250 
00251   EQMSG("isTrailing:    ", true, isTrailing(Measurement));
00252   EQMSG("ChannelNumber: ", 69, ChannelNumber(Measurement));
00253   EQMSG("Channel value: ", 0x1234L, ChannelValue(Measurement));
00254 
00255   // ensure exceptions get thrown for invalid datum:
00256 
00257   EXCEPTION(isTrailing(Filler),    string);
00258   EXCEPTION(ChannelNumber(Filler), string);
00259   EXCEPTION(ChannelValue(Filler),  string);
00260 
00261 }
00262 
00266 void
00267 DataTests::ErrorBitsTest()
00268 {
00269   EQMSG(" Error Bits", 0x5a5a, (int)TDCErrorBits(TDCError));
00270 
00271   EXCEPTION((TDCErrorBits(Filler)), string)
00272 
00273 
00274 }
00278 void 
00279 DataTests::TriggerTimeTest()
00280 {
00281   EQMSG(" TriggerTime ", 0x789abcUL , ExtendedTriggerTime(TTimeTag));
00282 
00283   EXCEPTION(ExtendedTriggerTime(Filler), string);
00284 }
00288 void
00289 DataTests::GlobalTrailerTest()
00290 {
00291   // The real global trailer should work:
00292 
00293   EQMSG("Overflow   ", true, Overflow(GlobalTrailer));
00294   EQMSG("Error      ", true, Error(GlobalTrailer));
00295   EQMSG("Lost       ", true, Lost(GlobalTrailer));
00296   EQMSG("GEO        ", 5,    (int)BoardNumber(GlobalTrailer));
00297   EQMSG("Event Size ", 0x819f, (int)EventSize(GlobalTrailer));
00298 
00299   // The fake should vomit strings:
00300 
00301   EXCEPTION(Overflow(Filler),    string);
00302   EXCEPTION(Error(Filler),       string);
00303   EXCEPTION(Lost(Filler),        string);
00304   EXCEPTION(BoardNumber(Filler), string);
00305   EXCEPTION(EventSize(Filler),   string);
00306 
00307 }

Generated on Wed Sep 17 08:38:09 2008 for NSCL Device support. by  doxygen 1.5.1