PSEvt/test/psevt-source-unit-test.cpp

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 // File and Version Information:
00003 //      $Id: psevt-source-unit-test.cpp 7815 2014-03-09 07:47:26Z salnikov@SLAC.STANFORD.EDU $
00004 //
00005 // Description:
00006 //      Test suite case for the PSEvt::Source.
00007 //
00008 //------------------------------------------------------------------------
00009 
00010 //---------------
00011 // C++ Headers --
00012 //---------------
00013 #include <boost/lexical_cast.hpp>
00014 
00015 //-------------------------------
00016 // Collaborating Class Headers --
00017 //-------------------------------
00018 #include "PSEvt/Source.h"
00019 #include "PSEvt/Exceptions.h"
00020 
00021 using namespace PSEvt;
00022 using namespace Pds;
00023 using namespace boost;
00024 
00025 #define BOOST_TEST_MODULE psevt-source-unit-test
00026 #include <boost/test/included/unit_test.hpp>
00027 
00028 namespace {
00029   
00030   AliasMap amap;
00031   Src src_no_src;
00032   DetInfo dinfo1(0, DetInfo::Detector(0), 0, DetInfo::Device(0), 0);
00033   DetInfo dinfo2(1, DetInfo::Detector(1), 1, DetInfo::Device(1), 1);
00034   ProcInfo pinfo1(Pds::Level::Control, 0, 0x01010101);
00035   ProcInfo pinfo2(Pds::Level::Control, 0, 0x70707070);
00036   BldInfo binfo1(0, BldInfo::EBeam);
00037   BldInfo binfo2(0, BldInfo::PhaseCavity);
00038 
00039   
00040   void checkAny(Source xsrc)
00041   {
00042     Source::SrcMatch src = xsrc.srcMatch(amap);
00043 
00044     BOOST_CHECK( not src.isNoSource() ) ;
00045     BOOST_CHECK( not src.isExact() ) ;
00046 
00047     BOOST_CHECK( src.match(src_no_src) ) ;
00048 
00049     BOOST_CHECK( src.match(dinfo1) ) ;
00050     BOOST_CHECK( src.match(dinfo2) ) ;
00051 
00052     BOOST_CHECK( src.match(pinfo1) ) ;
00053     BOOST_CHECK( src.match(pinfo2) ) ;
00054 
00055     BOOST_CHECK( src.match(binfo1) ) ;
00056     BOOST_CHECK( src.match(binfo2) ) ;
00057   }
00058   
00059   void checkNoSrc(Source xsrc)
00060   {
00061     Source::SrcMatch src = xsrc.srcMatch(amap);
00062 
00063     BOOST_CHECK( src.isNoSource() ) ;
00064     BOOST_CHECK( src.isExact() ) ;
00065 
00066     BOOST_CHECK( src.match(src_no_src) ) ;
00067 
00068     BOOST_CHECK( not src.match(dinfo1) ) ;
00069     BOOST_CHECK( not src.match(dinfo2) ) ;
00070 
00071     BOOST_CHECK( not src.match(pinfo1) ) ;
00072     BOOST_CHECK( not src.match(pinfo2) ) ;
00073 
00074     BOOST_CHECK( not src.match(binfo1) ) ;
00075     BOOST_CHECK( not src.match(binfo2) ) ;
00076   }
00077   
00078   void checkAnyDetInfo(Source xsrc)
00079   {
00080     Source::SrcMatch src = xsrc.srcMatch(amap);
00081 
00082     BOOST_CHECK( not src.isNoSource() ) ;
00083     BOOST_CHECK( not src.isExact() ) ;
00084 
00085     BOOST_CHECK( not src.match(src_no_src) ) ;
00086 
00087     BOOST_CHECK( src.match(dinfo1) ) ;
00088     BOOST_CHECK( src.match(dinfo2) ) ;
00089 
00090     BOOST_CHECK( not src.match(pinfo1) ) ;
00091     BOOST_CHECK( not src.match(pinfo2) ) ;
00092 
00093     BOOST_CHECK( not src.match(binfo1) ) ;
00094     BOOST_CHECK( not src.match(binfo2) ) ;
00095   }
00096 
00097   void checkDetInfo0000(Source xsrc)
00098   {
00099     Source::SrcMatch src = xsrc.srcMatch(amap);
00100 
00101     BOOST_CHECK( not src.isNoSource() ) ;
00102     BOOST_CHECK( src.isExact() ) ;
00103 
00104     BOOST_CHECK( not src.match(src_no_src) ) ;
00105 
00106     BOOST_CHECK( src.match(dinfo1) ) ;
00107     BOOST_CHECK( not src.match(dinfo2) ) ;
00108 
00109     BOOST_CHECK( not src.match(pinfo1) ) ;
00110     BOOST_CHECK( not src.match(pinfo2) ) ;
00111 
00112     BOOST_CHECK( not src.match(binfo1) ) ;
00113     BOOST_CHECK( not src.match(binfo2) ) ;
00114   }
00115   
00116   void checkDetInfo1111(Source xsrc)
00117   {
00118     Source::SrcMatch src = xsrc.srcMatch(amap);
00119 
00120     BOOST_CHECK( not src.isNoSource() ) ;
00121     BOOST_CHECK( src.isExact() ) ;
00122 
00123     BOOST_CHECK( not src.match(src_no_src) ) ;
00124 
00125     BOOST_CHECK( not src.match(dinfo1) ) ;
00126     BOOST_CHECK( src.match(dinfo2) ) ;
00127 
00128     BOOST_CHECK( not src.match(pinfo1) ) ;
00129     BOOST_CHECK( not src.match(pinfo2) ) ;
00130 
00131     BOOST_CHECK( not src.match(binfo1) ) ;
00132     BOOST_CHECK( not src.match(binfo2) ) ;
00133   }
00134 
00135   void checkDetInfo(Source xsrc, Pds::DetInfo::Detector det, unsigned detId, Pds::DetInfo::Device dev, unsigned devId)
00136   {
00137     Source::SrcMatch src = xsrc.srcMatch(amap);
00138 
00139     BOOST_CHECK( not src.isNoSource() ) ;
00140     BOOST_CHECK( src.isExact() ) ;
00141 
00142     const Pds::Src& psrc = src.src();
00143     BOOST_CHECK_EQUAL(psrc.level(), Pds::Level::Source) ;
00144 
00145     const Pds::DetInfo& deti = static_cast<const Pds::DetInfo&>(psrc);
00146     BOOST_CHECK_EQUAL(deti.detector(), det) ;
00147     BOOST_CHECK_EQUAL(deti.detId(), detId) ;
00148     BOOST_CHECK_EQUAL(deti.device(), dev) ;
00149     BOOST_CHECK_EQUAL(deti.devId(), devId) ;
00150   }
00151 
00152   void checkDetInfoMatch(Source xsrc)
00153   {
00154     Source::SrcMatch src = xsrc.srcMatch(amap);
00155 
00156     BOOST_CHECK( not src.isNoSource() ) ;
00157     BOOST_CHECK( not src.isExact() ) ;
00158 
00159     BOOST_CHECK( not src.match(src_no_src) ) ;
00160 
00161     BOOST_CHECK( src.match(dinfo1) ) ;
00162     BOOST_CHECK( not src.match(dinfo2) ) ;
00163 
00164     BOOST_CHECK( not src.match(pinfo1) ) ;
00165     BOOST_CHECK( not src.match(pinfo2) ) ;
00166 
00167     BOOST_CHECK( not src.match(binfo1) ) ;
00168     BOOST_CHECK( not src.match(binfo2) ) ;
00169   }
00170   
00171   void checkBldInfoEBeam(Source xsrc)
00172   {
00173     Source::SrcMatch src = xsrc.srcMatch(amap);
00174 
00175     BOOST_CHECK( not src.isNoSource() ) ;
00176     BOOST_CHECK( src.isExact() ) ;
00177 
00178     BOOST_CHECK( not src.match(src_no_src) ) ;
00179 
00180     BOOST_CHECK( not src.match(dinfo1) ) ;
00181     BOOST_CHECK( not src.match(dinfo2) ) ;
00182 
00183     BOOST_CHECK( not src.match(pinfo1) ) ;
00184     BOOST_CHECK( not src.match(pinfo2) ) ;
00185 
00186     BOOST_CHECK( src.match(binfo1) ) ;
00187     BOOST_CHECK( not src.match(binfo2) ) ;
00188   }
00189   
00190   void checkBldInfo(Source xsrc, Pds::BldInfo::Type type)
00191   {
00192     Source::SrcMatch src = xsrc.srcMatch(amap);
00193 
00194     BOOST_CHECK( not src.isNoSource() ) ;
00195     BOOST_CHECK( src.isExact() ) ;
00196 
00197     const Pds::Src& psrc = src.src();
00198     BOOST_CHECK_EQUAL(psrc.level(), Pds::Level::Reporter) ;
00199 
00200     const Pds::BldInfo& bld = static_cast<const Pds::BldInfo&>(psrc);
00201     BOOST_CHECK_EQUAL(bld.type(), type) ;
00202   }
00203 
00204   void checkAnyBldInfo(Source xsrc)
00205   {
00206     Source::SrcMatch src = xsrc.srcMatch(amap);
00207 
00208     BOOST_CHECK( not src.isNoSource() ) ;
00209     BOOST_CHECK( not src.isExact() ) ;
00210 
00211     BOOST_CHECK( not src.match(src_no_src) ) ;
00212 
00213     BOOST_CHECK( not src.match(dinfo1) ) ;
00214     BOOST_CHECK( not src.match(dinfo2) ) ;
00215 
00216     BOOST_CHECK( not src.match(pinfo1) ) ;
00217     BOOST_CHECK( not src.match(pinfo2) ) ;
00218 
00219     BOOST_CHECK( src.match(binfo1) ) ;
00220     BOOST_CHECK( src.match(binfo2) ) ;
00221   }
00222   
00223   void checkAnyProcInfo(Source xsrc)
00224   {
00225     Source::SrcMatch src = xsrc.srcMatch(amap);
00226 
00227     BOOST_CHECK( not src.isNoSource() ) ;
00228     BOOST_CHECK( not src.isExact() ) ;
00229 
00230     BOOST_CHECK( not src.match(src_no_src) ) ;
00231 
00232     BOOST_CHECK( not src.match(dinfo1) ) ;
00233     BOOST_CHECK( not src.match(dinfo2) ) ;
00234 
00235     BOOST_CHECK( src.match(pinfo1) ) ;
00236     BOOST_CHECK( src.match(pinfo2) ) ;
00237 
00238     BOOST_CHECK( not src.match(binfo1) ) ;
00239     BOOST_CHECK( not src.match(binfo2) ) ;
00240   }
00241   
00242   void checkProcInfo1(Source xsrc)
00243   {
00244     Source::SrcMatch src = xsrc.srcMatch(amap);
00245 
00246     BOOST_CHECK( not src.isNoSource() ) ;
00247     BOOST_CHECK( src.isExact() ) ;
00248 
00249     BOOST_CHECK( not src.match(src_no_src) ) ;
00250 
00251     BOOST_CHECK( not src.match(dinfo1) ) ;
00252     BOOST_CHECK( not src.match(dinfo2) ) ;
00253 
00254     BOOST_CHECK( src.match(pinfo1) ) ;
00255     BOOST_CHECK( not src.match(pinfo2) ) ;
00256 
00257     BOOST_CHECK( not src.match(binfo1) ) ;
00258     BOOST_CHECK( not src.match(binfo2) ) ;
00259   }
00260   
00261   
00262 }
00263 
00264 
00265 /**
00266  * Simple test suite for module psevt-source-unit-test.
00267  * See http://www.boost.org/doc/libs/1_36_0/libs/test/doc/html/index.html
00268  */
00269 
00270 // ==============================================================
00271 
00272 BOOST_AUTO_TEST_CASE( test_any )
00273 {
00274   Source src;
00275 
00276   ::checkAny(src);
00277 }
00278 
00279 // ==============================================================
00280 
00281 BOOST_AUTO_TEST_CASE( test_no_source )
00282 {
00283   Source src(Source::null);
00284   
00285   ::checkNoSrc(src);
00286 }
00287 
00288 // ==============================================================
00289 
00290 BOOST_AUTO_TEST_CASE( test_detinfo1 )
00291 {
00292   Source src(DetInfo::Detector(0), 0, DetInfo::Device(0), 0);
00293   
00294   ::checkDetInfo0000(src);
00295 }
00296 
00297 // ==============================================================
00298 
00299 BOOST_AUTO_TEST_CASE( test_detinfo2 )
00300 {
00301   Source src(DetInfo(0, DetInfo::Detector(0), 0, DetInfo::Device(0), 0));
00302   
00303   ::checkDetInfo0000(src);
00304 }
00305 
00306 // ==============================================================
00307 
00308 BOOST_AUTO_TEST_CASE( test_bldinfo1 )
00309 {
00310   Source src(BldInfo::EBeam);
00311   
00312   ::checkBldInfoEBeam(src);
00313 }
00314 
00315 // ==============================================================
00316 
00317 BOOST_AUTO_TEST_CASE( test_bldinfo2 )
00318 {
00319   Source src(BldInfo(0, BldInfo::EBeam));
00320   
00321   ::checkBldInfoEBeam(src);
00322 }
00323 
00324 // ==============================================================
00325 
00326 BOOST_AUTO_TEST_CASE( test_str_any )
00327 {
00328   Source src("");
00329 
00330   ::checkAny(src);
00331 }
00332 
00333 // ==============================================================
00334 
00335 BOOST_AUTO_TEST_CASE( test_str_any_detinfo )
00336 {
00337   ::checkAnyDetInfo(Source("DetInfo()"));
00338   ::checkAnyDetInfo(Source("DetInfo(*.*:*.*)"));
00339   ::checkAnyDetInfo(Source("DetInfo(*:*)"));
00340   ::checkAnyDetInfo(Source("DetInfo(:)"));
00341   ::checkAnyDetInfo(Source("DetInfo(.*:.*)"));
00342   ::checkAnyDetInfo(Source("DetInfo(*)"));
00343   ::checkAnyDetInfo(Source("DetInfo(:*)"));
00344   ::checkAnyDetInfo(Source("DetInfo(*-*|*-*)"));
00345 }
00346 
00347 // ==============================================================
00348 
00349 BOOST_AUTO_TEST_CASE( test_str_detinfo )
00350 {
00351   ::checkDetInfo0000(Source("DetInfo(NoDetector.0:NoDevice.0)"));
00352   ::checkDetInfo0000(Source("NoDetector.0:NoDevice.0"));
00353 
00354   ::checkDetInfo(Source("DetInfo(NoDetector.0:NoDevice.0)"), Pds::DetInfo::NoDetector, 0, Pds::DetInfo::NoDevice, 0);
00355   ::checkDetInfo(Source("DetInfo(AmoGasdet.5:Princeton.9)"), Pds::DetInfo::AmoGasdet, 5, Pds::DetInfo::Princeton, 9);
00356 }
00357 
00358 // ==============================================================
00359 
00360 BOOST_AUTO_TEST_CASE( test_str_detinfo_det )
00361 {
00362   ::checkDetInfoMatch(Source("DetInfo(NoDetector.*:NoDevice.0)"));
00363   ::checkDetInfoMatch(Source("DetInfo(:NoDevice)"));
00364   ::checkDetInfoMatch(Source("DetInfo(NoDetector)"));
00365   ::checkDetInfoMatch(Source("DetInfo(NoDetector.0:*.0)"));
00366   ::checkDetInfoMatch(Source("DetInfo(NoDetector.0:*.*)"));
00367   ::checkDetInfoMatch(Source("DetInfo(*.0:*.*)"));
00368   ::checkDetInfoMatch(Source("DetInfo(NoDetector.*:*.*)"));
00369   ::checkDetInfoMatch(Source("DetInfo(*.*:NoDevice.0)"));
00370   ::checkDetInfoMatch(Source("DetInfo(*.*:NoDevice.*)"));
00371   ::checkDetInfoMatch(Source("DetInfo(*.*:*.0)"));
00372 
00373   ::checkDetInfoMatch(Source("NoDetector.*:NoDevice.0"));
00374   ::checkDetInfoMatch(Source("NoDetector"));
00375 }
00376 
00377 // ==============================================================
00378 
00379 BOOST_AUTO_TEST_CASE( test_str_any_bldinfo )
00380 {
00381   ::checkAnyBldInfo(Source("BldInfo()"));
00382 }
00383 
00384 // ==============================================================
00385 
00386 BOOST_AUTO_TEST_CASE( test_str_bldinfo )
00387 {
00388   ::checkBldInfoEBeam(Source("BldInfo(EBeam)"));
00389   ::checkBldInfoEBeam(Source("EBeam"));
00390 
00391   ::checkBldInfo(Source("BldInfo(EBeam)"), Pds::BldInfo::EBeam);
00392   ::checkBldInfo(Source("BldInfo(PhaseCavity)"), Pds::BldInfo::PhaseCavity);
00393   ::checkBldInfo(Source("BldInfo(FEEGasDetEnergy)"), Pds::BldInfo::FEEGasDetEnergy);
00394 }
00395 
00396 // ==============================================================
00397 
00398 BOOST_AUTO_TEST_CASE( test_str_any_procinfo )
00399 {
00400   ::checkAnyProcInfo(Source("ProcInfo()"));
00401 }
00402 
00403 // ==============================================================
00404 
00405 BOOST_AUTO_TEST_CASE( test_str_procinfo )
00406 {
00407   ::checkProcInfo1(Source("ProcInfo(1.1.1.1)"));
00408 }
00409 
00410 // ==============================================================
00411 
00412 BOOST_AUTO_TEST_CASE( test_str_valid )
00413 {
00414   BOOST_CHECK_NO_THROW(Source("DetInfo()").srcMatch(amap));
00415   BOOST_CHECK_NO_THROW(Source("DetInfo(:)").srcMatch(amap));
00416   BOOST_CHECK_NO_THROW(Source("DetInfo(.:)").srcMatch(amap));
00417   BOOST_CHECK_NO_THROW(Source("DetInfo(:.)").srcMatch(amap));
00418   BOOST_CHECK_NO_THROW(Source("DetInfo(.:.)").srcMatch(amap));
00419   BOOST_CHECK_NO_THROW(Source("DetInfo(|)").srcMatch(amap));
00420   BOOST_CHECK_NO_THROW(Source("DetInfo(-|)").srcMatch(amap));
00421   BOOST_CHECK_NO_THROW(Source("DetInfo(|-)").srcMatch(amap));
00422   BOOST_CHECK_NO_THROW(Source("DetInfo(-|-)").srcMatch(amap));
00423   
00424   BOOST_CHECK_NO_THROW(Source("DetInfo(NoDetector)").srcMatch(amap));
00425   BOOST_CHECK_NO_THROW(Source("DetInfo(AmoIMS)").srcMatch(amap));
00426   BOOST_CHECK_NO_THROW(Source("DetInfo(AmoGD)").srcMatch(amap));
00427   BOOST_CHECK_NO_THROW(Source("DetInfo(AmoETOF)").srcMatch(amap));
00428   BOOST_CHECK_NO_THROW(Source("DetInfo(AmoITOF)").srcMatch(amap));
00429   BOOST_CHECK_NO_THROW(Source("DetInfo(AmoMBES)").srcMatch(amap));
00430   BOOST_CHECK_NO_THROW(Source("DetInfo(AmoVMI)").srcMatch(amap));
00431   BOOST_CHECK_NO_THROW(Source("DetInfo(AmoBPS)").srcMatch(amap));
00432   BOOST_CHECK_NO_THROW(Source("DetInfo(Camp)").srcMatch(amap));
00433   BOOST_CHECK_NO_THROW(Source("DetInfo(EpicsArch)").srcMatch(amap));
00434   BOOST_CHECK_NO_THROW(Source("DetInfo(BldEb)").srcMatch(amap));
00435   BOOST_CHECK_NO_THROW(Source("DetInfo(SxrBeamline)").srcMatch(amap));
00436   BOOST_CHECK_NO_THROW(Source("DetInfo(SxrEndstation)").srcMatch(amap));
00437   BOOST_CHECK_NO_THROW(Source("DetInfo(XppSb1Ipm)").srcMatch(amap));
00438   BOOST_CHECK_NO_THROW(Source("DetInfo(XppSb1Pim)").srcMatch(amap));
00439   BOOST_CHECK_NO_THROW(Source("DetInfo(XppMonPim)").srcMatch(amap));
00440   BOOST_CHECK_NO_THROW(Source("DetInfo(XppSb2Ipm)").srcMatch(amap));
00441   BOOST_CHECK_NO_THROW(Source("DetInfo(XppSb3Ipm)").srcMatch(amap));
00442   BOOST_CHECK_NO_THROW(Source("DetInfo(XppSb3Pim)").srcMatch(amap));
00443   BOOST_CHECK_NO_THROW(Source("DetInfo(XppSb4Pim)").srcMatch(amap));
00444   BOOST_CHECK_NO_THROW(Source("DetInfo(XppGon)").srcMatch(amap));
00445   BOOST_CHECK_NO_THROW(Source("DetInfo(XppLas)").srcMatch(amap));
00446   BOOST_CHECK_NO_THROW(Source("DetInfo(XppEndstation)").srcMatch(amap));
00447   BOOST_CHECK_NO_THROW(Source("DetInfo(AmoEndstation)").srcMatch(amap));
00448   BOOST_CHECK_NO_THROW(Source("DetInfo(CxiEndstation)").srcMatch(amap));
00449   BOOST_CHECK_NO_THROW(Source("DetInfo(XcsEndstation)").srcMatch(amap));
00450   BOOST_CHECK_NO_THROW(Source("DetInfo(MecEndstation)").srcMatch(amap));
00451   BOOST_CHECK_NO_THROW(Source("DetInfo(CxiDg1)").srcMatch(amap));
00452   BOOST_CHECK_NO_THROW(Source("DetInfo(CxiDg2)").srcMatch(amap));
00453   BOOST_CHECK_NO_THROW(Source("DetInfo(CxiDg3)").srcMatch(amap));
00454   BOOST_CHECK_NO_THROW(Source("DetInfo(CxiDg4)").srcMatch(amap));
00455   BOOST_CHECK_NO_THROW(Source("DetInfo(CxiKb1)").srcMatch(amap));
00456   BOOST_CHECK_NO_THROW(Source("DetInfo(CxiDs1)").srcMatch(amap));
00457   BOOST_CHECK_NO_THROW(Source("DetInfo(CxiDs2)").srcMatch(amap));
00458   BOOST_CHECK_NO_THROW(Source("DetInfo(CxiDsu)").srcMatch(amap));
00459   BOOST_CHECK_NO_THROW(Source("DetInfo(CxiSc1)").srcMatch(amap));
00460   
00461   BOOST_CHECK_NO_THROW(Source("DetInfo(:NoDevice)").srcMatch(amap));
00462   BOOST_CHECK_NO_THROW(Source("DetInfo(:Evr)").srcMatch(amap));
00463   BOOST_CHECK_NO_THROW(Source("DetInfo(:Acqiris)").srcMatch(amap));
00464   BOOST_CHECK_NO_THROW(Source("DetInfo(:Opal1000)").srcMatch(amap));
00465   BOOST_CHECK_NO_THROW(Source("DetInfo(:Tm6740)").srcMatch(amap));
00466   BOOST_CHECK_NO_THROW(Source("DetInfo(:pnCCD)").srcMatch(amap));
00467   BOOST_CHECK_NO_THROW(Source("DetInfo(:Princeton)").srcMatch(amap));
00468   BOOST_CHECK_NO_THROW(Source("DetInfo(:Fccd)").srcMatch(amap));
00469   BOOST_CHECK_NO_THROW(Source("DetInfo(:Ipimb)").srcMatch(amap));
00470   BOOST_CHECK_NO_THROW(Source("DetInfo(:Encoder)").srcMatch(amap));
00471   BOOST_CHECK_NO_THROW(Source("DetInfo(:Cspad)").srcMatch(amap));
00472   BOOST_CHECK_NO_THROW(Source("DetInfo(:AcqTDC)").srcMatch(amap));
00473 
00474   BOOST_CHECK_NO_THROW(Source("DetInfo(.1:.2)").srcMatch(amap));
00475   BOOST_CHECK_NO_THROW(Source("DetInfo(.1:)").srcMatch(amap));
00476   BOOST_CHECK_NO_THROW(Source("DetInfo(:.2)").srcMatch(amap));
00477   BOOST_CHECK_NO_THROW(Source("DetInfo(*.1:*.2)").srcMatch(amap));
00478   BOOST_CHECK_NO_THROW(Source("DetInfo(*.1:*)").srcMatch(amap));
00479   BOOST_CHECK_NO_THROW(Source("DetInfo(*:*.2)").srcMatch(amap));
00480 
00481   BOOST_CHECK_NO_THROW(Source("DetInfo(*-1|*-2)").srcMatch(amap));
00482   
00483   BOOST_CHECK_NO_THROW(Source("BldInfo()").srcMatch(amap));
00484   BOOST_CHECK_NO_THROW(Source("BldInfo(EBeam)").srcMatch(amap));
00485   BOOST_CHECK_NO_THROW(Source("BldInfo(PhaseCavity)").srcMatch(amap));
00486   BOOST_CHECK_NO_THROW(Source("BldInfo(FEEGasDetEnergy)").srcMatch(amap));
00487   BOOST_CHECK_NO_THROW(Source("BldInfo(NH2-SB1-IPM-01)").srcMatch(amap));
00488   
00489   BOOST_CHECK_NO_THROW(Source("ProcInfo()").srcMatch(amap));
00490   BOOST_CHECK_NO_THROW(Source("ProcInfo(0.0.0.0)").srcMatch(amap));
00491   BOOST_CHECK_NO_THROW(Source("ProcInfo(1.1.1.1)").srcMatch(amap));
00492   BOOST_CHECK_NO_THROW(Source("ProcInfo(255.255.255.255)").srcMatch(amap));
00493 }
00494 
00495 // ==============================================================
00496 
00497 BOOST_AUTO_TEST_CASE( test_str_invalid )
00498 {
00499   BOOST_CHECK_THROW(Source("G").srcMatch(amap), ExceptionSourceFormat);
00500   BOOST_CHECK_THROW(Source("!").srcMatch(amap), ExceptionSourceFormat);
00501   BOOST_CHECK_THROW(Source("Info()").srcMatch(amap), ExceptionSourceFormat);
00502   
00503   BOOST_CHECK_THROW(Source("DetInfo(Unknown)").srcMatch(amap), ExceptionSourceFormat);
00504   BOOST_CHECK_THROW(Source("DetInfo(:Unknown)").srcMatch(amap), ExceptionSourceFormat);
00505   BOOST_CHECK_THROW(Source("DetInfo(.Unknown)").srcMatch(amap), ExceptionSourceFormat);
00506 
00507   BOOST_CHECK_THROW(Source("BldInfo(Unknown)").srcMatch(amap), ExceptionSourceFormat);
00508   BOOST_CHECK_THROW(Source("BldInfo(.EBeam)").srcMatch(amap), ExceptionSourceFormat);
00509 
00510   BOOST_CHECK_THROW(Source("ProcInfo(1)").srcMatch(amap), ExceptionSourceFormat);
00511   BOOST_CHECK_THROW(Source("ProcInfo(1.1.1)").srcMatch(amap), ExceptionSourceFormat);
00512   BOOST_CHECK_THROW(Source("ProcInfo(1.1.1.1.1)").srcMatch(amap), ExceptionSourceFormat);
00513   BOOST_CHECK_THROW(Source("ProcInfo(1024.1.1.1)").srcMatch(amap), ExceptionSourceFormat);
00514   BOOST_CHECK_THROW(Source("ProcInfo(psimport.slac.stanford.edu)").srcMatch(amap), ExceptionSourceFormat);
00515 }
00516 
00517 // ==============================================================
00518 
00519 BOOST_AUTO_TEST_CASE( test_src_format )
00520 {
00521   Source src;
00522   src = Source(Pds::DetInfo::NoDetector, 255, Pds::DetInfo::NoDevice, 0);
00523   BOOST_CHECK_EQUAL(lexical_cast<std::string>(src), "DetInfo(NoDetector.*:NoDevice.0)");
00524   src = Source(Pds::DetInfo::Detector(255), 255, Pds::DetInfo::NoDevice, 255);
00525   BOOST_CHECK_EQUAL(lexical_cast<std::string>(src), "DetInfo(*.*:NoDevice.*)");
00526   src = Source(Pds::DetInfo::NoDetector, 255, Pds::DetInfo::Device(255), 255);
00527   BOOST_CHECK_EQUAL(lexical_cast<std::string>(src), "DetInfo(NoDetector.*:*.*)");
00528   src = Source(Pds::DetInfo::NoDetector, 0, Pds::DetInfo::Device(255), 0);
00529   BOOST_CHECK_EQUAL(lexical_cast<std::string>(src), "DetInfo(NoDetector.0:*.0)");
00530   src = Source(Pds::DetInfo::NoDetector, 0, Pds::DetInfo::Device(255), 255);
00531   BOOST_CHECK_EQUAL(lexical_cast<std::string>(src), "DetInfo(NoDetector.0:*.*)");
00532   src = Source(Pds::DetInfo::Detector(255), 0, Pds::DetInfo::Device(255), 255);
00533   BOOST_CHECK_EQUAL(lexical_cast<std::string>(src), "DetInfo(*.0:*.*)");
00534   src = Source(Pds::DetInfo::NoDetector, 255, Pds::DetInfo::Device(255), 255);
00535   BOOST_CHECK_EQUAL(lexical_cast<std::string>(src), "DetInfo(NoDetector.*:*.*)");
00536   src = Source(Pds::DetInfo::Detector(255), 55, Pds::DetInfo::NoDevice, 0);
00537   BOOST_CHECK_EQUAL(lexical_cast<std::string>(src), "DetInfo(*.55:NoDevice.0)");
00538   src = Source(Pds::DetInfo::Detector(255), 1, Pds::DetInfo::NoDevice, 2);
00539   BOOST_CHECK_EQUAL(lexical_cast<std::string>(src), "DetInfo(*.1:NoDevice.2)");
00540   src = Source(Pds::DetInfo::Detector(255), 255, Pds::DetInfo::Device(255), 254);
00541   BOOST_CHECK_EQUAL(lexical_cast<std::string>(src), "DetInfo(*.*:*.254)");
00542   src = Source(Pds::DetInfo::Detector(255), 255, Pds::DetInfo::Device(255), 255);
00543   BOOST_CHECK_EQUAL(lexical_cast<std::string>(src), "DetInfo(*.*:*.*)");
00544 
00545   src = Source(Pds::BldInfo::EBeam);
00546   BOOST_CHECK_EQUAL(lexical_cast<std::string>(src), "BldInfo(EBeam)");
00547   src = Source(Pds::BldInfo::Type(0xffffffff));
00548   BOOST_CHECK_EQUAL(lexical_cast<std::string>(src), "BldInfo()");
00549 }
00550 
00551 // ==============================================================
00552 
00553 BOOST_AUTO_TEST_CASE( test_src_alias )
00554 {
00555   amap.add("dinfo1", dinfo1);
00556   amap.add("dinfo2", dinfo2);
00557   amap.add("pinfo1", pinfo1);
00558   amap.add("pinfo2", pinfo2);
00559   amap.add("binfo1", binfo1);
00560   amap.add("binfo2", binfo2);
00561 
00562   ::checkDetInfo0000(Source("dinfo1"));
00563   ::checkDetInfo1111(Source("dinfo2"));
00564   ::checkBldInfo(Source("binfo1"), Pds::BldInfo::EBeam);
00565   ::checkBldInfo(Source("binfo2"), Pds::BldInfo::PhaseCavity);
00566   ::checkProcInfo1(Source("pinfo1"));
00567   BOOST_CHECK_THROW(Source("pinfo3").srcMatch(amap), ExceptionSourceFormat);
00568 }
00569 
00570 // ==============================================================
00571 
00572 BOOST_AUTO_TEST_CASE( test_src_in_any )
00573 {
00574   Source::SrcMatch any = Source().srcMatch(amap);
00575   BOOST_CHECK(any.in(any));
00576 
00577   Source::SrcMatch nosrc = Source(Source::null).srcMatch(amap);
00578   BOOST_CHECK(nosrc.in(any));
00579   BOOST_CHECK(not any.in(nosrc));
00580 
00581   Source::SrcMatch match1 = Source("DetInfo(NoDetector.*:NoDevice.0)").srcMatch(amap);
00582   BOOST_CHECK(match1.in(any));
00583   BOOST_CHECK(not any.in(match1));
00584 
00585   Source::SrcMatch match2 = Source("DetInfo()").srcMatch(amap);
00586   BOOST_CHECK(match2.in(any));
00587   BOOST_CHECK(not any.in(match2));
00588 
00589   Source::SrcMatch match3 = Source("BldInfo(EBeam)").srcMatch(amap);
00590   BOOST_CHECK(match3.in(any));
00591   BOOST_CHECK(not any.in(match3));
00592 
00593   Source::SrcMatch match4 = Source("BldInfo()").srcMatch(amap);
00594   BOOST_CHECK(match4.in(any));
00595   BOOST_CHECK(not any.in(match4));
00596 
00597   Source::SrcMatch match5 = Source("ProcInfo(1.2.3.4)").srcMatch(amap);
00598   BOOST_CHECK(match5.in(any));
00599   BOOST_CHECK(not any.in(match5));
00600 
00601   Source::SrcMatch match6 = Source("ProcInfo()").srcMatch(amap);
00602   BOOST_CHECK(match6.in(any));
00603   BOOST_CHECK(not any.in(match6));
00604 
00605   Source::SrcMatch match7 = Source("").srcMatch(amap);
00606   BOOST_CHECK(match7.in(any));
00607   BOOST_CHECK(any.in(match7));
00608 }
00609 
00610 // ==============================================================
00611 
00612 BOOST_AUTO_TEST_CASE( test_src_in_nosrc )
00613 {
00614   Source::SrcMatch nosrc = Source(Source::null).srcMatch(amap);
00615   BOOST_CHECK(nosrc.in(nosrc));
00616 
00617   Source::SrcMatch match1 = Source("DetInfo(NoDetector.*:NoDevice.0)").srcMatch(amap);
00618   BOOST_CHECK(not match1.in(nosrc));
00619   BOOST_CHECK(not nosrc.in(match1));
00620 
00621   Source::SrcMatch match2 = Source("DetInfo()").srcMatch(amap);
00622   BOOST_CHECK(not match2.in(nosrc));
00623   BOOST_CHECK(not nosrc.in(match2));
00624 
00625   Source::SrcMatch match3 = Source("BldInfo(EBeam)").srcMatch(amap);
00626   BOOST_CHECK(not match3.in(nosrc));
00627   BOOST_CHECK(not nosrc.in(match3));
00628 
00629   Source::SrcMatch match4 = Source("BldInfo()").srcMatch(amap);
00630   BOOST_CHECK(not match4.in(nosrc));
00631   BOOST_CHECK(not nosrc.in(match4));
00632 
00633   Source::SrcMatch match5 = Source("ProcInfo(1.2.3.4)").srcMatch(amap);
00634   BOOST_CHECK(not match5.in(nosrc));
00635   BOOST_CHECK(not nosrc.in(match5));
00636 
00637   Source::SrcMatch match6 = Source("ProcInfo()").srcMatch(amap);
00638   BOOST_CHECK(not match6.in(nosrc));
00639   BOOST_CHECK(not nosrc.in(match6));
00640 
00641   Source::SrcMatch match7 = Source("").srcMatch(amap);
00642   BOOST_CHECK(not match7.in(nosrc));
00643   BOOST_CHECK(nosrc.in(match7));
00644 }
00645 
00646 // ==============================================================
00647 
00648 BOOST_AUTO_TEST_CASE( test_src_in_bld )
00649 {
00650   Source::SrcMatch any = Source().srcMatch(amap);
00651   Source::SrcMatch nosrc = Source(Source::null).srcMatch(amap);
00652 
00653   Source::SrcMatch match1 = Source("BldInfo(EBeam)").srcMatch(amap);
00654   Source::SrcMatch match2 = Source("BldInfo(PhaseCavity)").srcMatch(amap);
00655   Source::SrcMatch match3 = Source("BldInfo()").srcMatch(amap);
00656 
00657   BOOST_CHECK(match1.in(any));
00658   BOOST_CHECK(match2.in(any));
00659   BOOST_CHECK(match3.in(any));
00660   BOOST_CHECK(not match1.in(nosrc));
00661   BOOST_CHECK(not match2.in(nosrc));
00662   BOOST_CHECK(not match3.in(nosrc));
00663   BOOST_CHECK(match1.in(match3));
00664   BOOST_CHECK(match2.in(match3));
00665   BOOST_CHECK(not match1.in(match2));
00666   BOOST_CHECK(not match2.in(match1));
00667   BOOST_CHECK(not match3.in(match2));
00668   BOOST_CHECK(not match3.in(match1));
00669 
00670   Source::SrcMatch match4 = Source("DetInfo()").srcMatch(amap);
00671   Source::SrcMatch match5 = Source("ProcInfo()").srcMatch(amap);
00672   BOOST_CHECK(not match1.in(match4));
00673   BOOST_CHECK(not match2.in(match4));
00674   BOOST_CHECK(not match3.in(match4));
00675   BOOST_CHECK(not match4.in(match1));
00676   BOOST_CHECK(not match4.in(match2));
00677   BOOST_CHECK(not match4.in(match3));
00678   BOOST_CHECK(not match1.in(match5));
00679   BOOST_CHECK(not match2.in(match5));
00680   BOOST_CHECK(not match3.in(match5));
00681   BOOST_CHECK(not match5.in(match1));
00682   BOOST_CHECK(not match5.in(match2));
00683   BOOST_CHECK(not match5.in(match3));
00684 }
00685 
00686 // ==============================================================
00687 
00688 BOOST_AUTO_TEST_CASE( test_src_in_det )
00689 {
00690   Source::SrcMatch any = Source().srcMatch(amap);
00691   Source::SrcMatch nosrc = Source(Source::null).srcMatch(amap);
00692 
00693   Source::SrcMatch match1 = Source("DetInfo(NoDetector.10:NoDevice.20)").srcMatch(amap);
00694   Source::SrcMatch match2 = Source("DetInfo(NoDetector.*:NoDevice.20)").srcMatch(amap);
00695   Source::SrcMatch match3 = Source("DetInfo(NoDetector.10:NoDevice.*)").srcMatch(amap);
00696   Source::SrcMatch match4 = Source("DetInfo(*.10:NoDevice.20)").srcMatch(amap);
00697   Source::SrcMatch match5 = Source("DetInfo(NoDetector.10:*.20)").srcMatch(amap);
00698   Source::SrcMatch match6 = Source("DetInfo(AmoIms.1:Evr.1)").srcMatch(amap);
00699 
00700   BOOST_CHECK(match1.in(any));
00701   BOOST_CHECK(match2.in(any));
00702   BOOST_CHECK(match3.in(any));
00703   BOOST_CHECK(match4.in(any));
00704   BOOST_CHECK(match5.in(any));
00705   BOOST_CHECK(match6.in(any));
00706   BOOST_CHECK(not match1.in(nosrc));
00707   BOOST_CHECK(not match2.in(nosrc));
00708   BOOST_CHECK(not match3.in(nosrc));
00709   BOOST_CHECK(not match4.in(nosrc));
00710   BOOST_CHECK(not match5.in(nosrc));
00711   BOOST_CHECK(not match6.in(nosrc));
00712   BOOST_CHECK(match1.in(match2));
00713   BOOST_CHECK(match1.in(match3));
00714   BOOST_CHECK(match1.in(match4));
00715   BOOST_CHECK(match1.in(match5));
00716   BOOST_CHECK(not match2.in(match1));
00717   BOOST_CHECK(not match3.in(match1));
00718   BOOST_CHECK(not match4.in(match1));
00719   BOOST_CHECK(not match5.in(match1));
00720   BOOST_CHECK(not match2.in(match3));
00721   BOOST_CHECK(not match3.in(match2));
00722   BOOST_CHECK(not match4.in(match5));
00723   BOOST_CHECK(not match5.in(match4));
00724 
00725   BOOST_CHECK(not match1.in(match6));
00726   BOOST_CHECK(not match6.in(match1));
00727 
00728   BOOST_CHECK(not match6.in(match2));
00729   BOOST_CHECK(not match6.in(match3));
00730   BOOST_CHECK(not match6.in(match4));
00731   BOOST_CHECK(not match6.in(match5));
00732 
00733   Source::SrcMatch match8 = Source("BldInfo()").srcMatch(amap);
00734   Source::SrcMatch match9 = Source("ProcInfo()").srcMatch(amap);
00735   BOOST_CHECK(not match1.in(match8));
00736   BOOST_CHECK(not match2.in(match8));
00737   BOOST_CHECK(not match3.in(match8));
00738   BOOST_CHECK(not match4.in(match8));
00739   BOOST_CHECK(not match5.in(match8));
00740   BOOST_CHECK(not match6.in(match8));
00741   BOOST_CHECK(not match8.in(match1));
00742   BOOST_CHECK(not match8.in(match2));
00743   BOOST_CHECK(not match8.in(match3));
00744   BOOST_CHECK(not match8.in(match4));
00745   BOOST_CHECK(not match8.in(match5));
00746   BOOST_CHECK(not match8.in(match6));
00747   BOOST_CHECK(not match1.in(match9));
00748   BOOST_CHECK(not match2.in(match9));
00749   BOOST_CHECK(not match3.in(match9));
00750   BOOST_CHECK(not match4.in(match9));
00751   BOOST_CHECK(not match5.in(match9));
00752   BOOST_CHECK(not match6.in(match9));
00753   BOOST_CHECK(not match9.in(match1));
00754   BOOST_CHECK(not match9.in(match2));
00755   BOOST_CHECK(not match9.in(match3));
00756   BOOST_CHECK(not match9.in(match4));
00757   BOOST_CHECK(not match9.in(match5));
00758   BOOST_CHECK(not match9.in(match6));
00759 }
00760 
00761 // ==============================================================
00762 
00763 BOOST_AUTO_TEST_CASE( test_src_in_proc )
00764 {
00765   Source::SrcMatch any = Source().srcMatch(amap);
00766   Source::SrcMatch nosrc = Source(Source::null).srcMatch(amap);
00767 
00768   Source::SrcMatch match1 = Source("ProcInfo(1.1.1.1)").srcMatch(amap);
00769   Source::SrcMatch match2 = Source("ProcInfo(2.2.2.2)").srcMatch(amap);
00770   Source::SrcMatch match3 = Source("ProcInfo()").srcMatch(amap);
00771 
00772   BOOST_CHECK(match1.in(any));
00773   BOOST_CHECK(match2.in(any));
00774   BOOST_CHECK(match3.in(any));
00775   BOOST_CHECK(not match1.in(nosrc));
00776   BOOST_CHECK(not match2.in(nosrc));
00777   BOOST_CHECK(not match3.in(nosrc));
00778   BOOST_CHECK(match1.in(match3));
00779   BOOST_CHECK(match2.in(match3));
00780   BOOST_CHECK(not match1.in(match2));
00781   BOOST_CHECK(not match2.in(match1));
00782   BOOST_CHECK(not match3.in(match2));
00783   BOOST_CHECK(not match3.in(match1));
00784 
00785   Source::SrcMatch match4 = Source("DetInfo()").srcMatch(amap);
00786   Source::SrcMatch match5 = Source("BldInfo()").srcMatch(amap);
00787   BOOST_CHECK(not match1.in(match4));
00788   BOOST_CHECK(not match2.in(match4));
00789   BOOST_CHECK(not match3.in(match4));
00790   BOOST_CHECK(not match4.in(match1));
00791   BOOST_CHECK(not match4.in(match2));
00792   BOOST_CHECK(not match4.in(match3));
00793   BOOST_CHECK(not match1.in(match5));
00794   BOOST_CHECK(not match2.in(match5));
00795   BOOST_CHECK(not match3.in(match5));
00796   BOOST_CHECK(not match5.in(match1));
00797   BOOST_CHECK(not match5.in(match2));
00798   BOOST_CHECK(not match5.in(match3));
00799 }
00800 
00801 // ==============================================================

Generated on 19 Dec 2016 for PSANAclasses by  doxygen 1.4.7