00001
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
00034
00035 void setUp() {
00036 m_pModule = new CCAENV1x90(1, 0, ModuleBase);
00037 m_pModule->Reset();
00038 }
00039
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
00056
00057 void
00058 MatchTiming::MatchWindowTest()
00059 {
00060
00061
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
00071
00072 EXCEPTION((m_pModule->SetWindowWidth(0x1000)), Require);
00073 EXCEPTION((m_pModule->SetWindowWidth(0)), Require);
00074
00075 }
00076
00077
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
00089
00090 EXCEPTION((m_pModule->SetWindowOffset(-2049)), Require);
00091 EXCEPTION((m_pModule->SetWindowOffset(41)), Require);
00092 }
00093
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
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
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 }