1x90MatchTiming.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 #include "CCAENV1x90.h"
00008 #include "DesignByContract.h"
00009 #include <Iostream.h>
00010 
00011 #ifdef HAVE_STD_NAMESPACE
00012 using namespace std;
00013 #endif
00014 
00015 using namespace DesignByContract;
00016 
00017 extern long ModuleBase;
00018 
00019 class MatchTiming : public CppUnit::TestFixture {
00020   CPPUNIT_TEST_SUITE(MatchTiming);
00021   CPPUNIT_TEST(MatchWindowTest);
00022   CPPUNIT_TEST(WindowOffsetTest);
00023   CPPUNIT_TEST(ExtraSearchTest);
00024   CPPUNIT_TEST(RejectMarginTest);
00025   CPPUNIT_TEST(TriggerSubtractTest);
00026   CPPUNIT_TEST_SUITE_END();
00027 
00028 
00029 private:
00030   CCAENV1x90* m_pModule;
00031 
00032 public:
00033   // Construct a module in powered up condition:
00034 
00035   void setUp() {
00036     m_pModule = new CCAENV1x90(1, 0, ModuleBase);
00037     m_pModule->Reset();
00038   }
00039   // Delete the module to prevent resource leaks.
00040 
00041   void tearDown() {
00042     delete m_pModule;
00043   }
00044 protected:
00045   void MatchWindowTest();
00046   void WindowOffsetTest();
00047   void ExtraSearchTest();
00048   void RejectMarginTest();
00049   void TriggerSubtractTest();
00050 };
00051 
00052 CPPUNIT_TEST_SUITE_REGISTRATION(MatchTiming);
00053 
00054 
00055 // Test that the match window can be set:
00056 
00057 void
00058 MatchTiming::MatchWindowTest()
00059 {
00060 
00061   // Test legal values that check all bits.
00062 
00063   for(unsigned int i =1; i <= 0xfff; i = (i << 1) | 1) {
00064     m_pModule->SetWindowWidth(i);
00065     CCAENV1x90::TriggerConfiguration current = 
00066                                     m_pModule->GetTriggerConfiguration();
00067     EQ(i, m_pModule->GetMatchWindow(current));
00068   }
00069 
00070   // Now Test  illegal values:
00071 
00072   EXCEPTION((m_pModule->SetWindowWidth(0x1000)), Require);
00073   EXCEPTION((m_pModule->SetWindowWidth(0)),      Require);
00074 
00075 }
00076 
00077 // Test the window offset can be set.
00078 
00079 void MatchTiming::WindowOffsetTest()
00080 {
00081   for(int i = -2048; i < 41; i += 83) {
00082     m_pModule->SetWindowOffset(i);
00083     CCAENV1x90::TriggerConfiguration current = 
00084       m_pModule->GetTriggerConfiguration();
00085     EQ(i, m_pModule->GetWindowOffset(current));
00086   }
00087 
00088   // Test illegal values:
00089 
00090   EXCEPTION((m_pModule->SetWindowOffset(-2049)), Require);
00091   EXCEPTION((m_pModule->SetWindowOffset(41)),    Require);
00092 }
00093 //  Test extra search margin:
00094 
00095 void
00096 MatchTiming::ExtraSearchTest()
00097 {
00098   for(unsigned int i = 0; i < 2048; i += 73) {
00099     m_pModule->SetExtraSearchMargin(i);
00100     CCAENV1x90::TriggerConfiguration current = 
00101       m_pModule->GetTriggerConfiguration();
00102 
00103     EQ(i, m_pModule->GetExtraSearchMargin(current));
00104   }
00105 
00106   EXCEPTION(m_pModule->SetExtraSearchMargin(2048), Require);
00107 
00108 }
00109 // Test reject margin:
00110 
00111 void
00112 MatchTiming::RejectMarginTest()
00113 {
00114   for(unsigned int i = 0; i <= 0x3ff; i = (i << 1) | 1) {
00115     m_pModule->SetRejectMargin(i);
00116     CCAENV1x90::TriggerConfiguration current = 
00117       m_pModule->GetTriggerConfiguration();
00118     EQ(i, m_pModule->GetRejectMargin(current));
00119   }
00120   EXCEPTION(m_pModule->SetRejectMargin(2048), Require);
00121 
00122 }
00123 
00124 //  Test ability to toggle in/out of trigger subtraction mode.
00125 
00126 void
00127 MatchTiming::TriggerSubtractTest()
00128 {
00129   CCAENV1x90::TriggerConfiguration  current;
00130 
00131   m_pModule->EnableTriggerTimeSubtraction();
00132   current = m_pModule->GetTriggerConfiguration();
00133   EQ(true, m_pModule->isTriggerTimeSubtracted(current));
00134 
00135   m_pModule->DisableTriggerTimeSubtraction();
00136   current = m_pModule->GetTriggerConfiguration();
00137   EQ(false, m_pModule->isTriggerTimeSubtracted(current));
00138 
00139   
00140 }

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