// Layer_t.cpp #include "Layer.h" #include "LayerPtr.h" #include #include #include #include #include "objstream/StdObjStream.hpp" #include "trfutil/trfstream.h" #include "LayerTest.h" #include "trfbase/SurfTest.h" #include "trfbase/ETrack.h" #include "trfbase/PropStat.h" #include "trfbase/PropDirectedTest.h" using std::cout; using std::cerr; using std::endl; using std::string; using std::ostringstream; using std::istringstream; using namespace trf; //********************************************************************** int main( ) { string component = "Layer"; string ok_prefix = component + " (I): "; string error_prefix = component + " test (E): "; cout << ok_prefix << "---------- Testing component " + component + ". ----------" << endl; // Make sure assert is enabled. bool assert_flag = false; assert ( ( assert_flag = true, assert_flag ) ); if ( ! assert_flag ) { cerr << "Assert is disabled" << endl; return 1; } //******************************************************************** cout << ok_prefix << "Test constructor." << endl; ObjTable::register_type(); LayerTest ltest1(10.,3); LayerTest ltest2(20.); cout << ltest1 << endl; cout << ltest1.get_type() << endl; cout << ltest2.get_type() << endl; assert( ltest1.get_type() == ltest2.get_type() ); assert( ltest1.has_clusters() ); assert( ltest1.get_clusters().size() == 0 ); //******************************************************************** cout << trf_format; cout << ok_prefix << "Construct propagator and track." << endl; PropTest prop; cout << prop << endl; SurfTest stest(2); TrackVector vec; TrackError err; ETrack tre( SurfacePtr(stest.new_pure_surface()), vec, err ); ETrack tre0 = tre; cout << tre << endl; //******************************************************************** cout << ok_prefix << "Propagate 1." << endl; LTrackList ltracks1; ltest1.propagate(tre,prop,ltracks1); assert( ltracks1.size() == 1 ); cout << ltracks1.front() << endl; const LayerStat& lstat1 = ltracks1.front().get_status(); assert( ! lstat1.at_exit() ); //******************************************************************** cout << ok_prefix << "Propagate 1." << endl; LTrackList ltracks2; ltest1.propagate(ltracks1.front(),prop,ltracks2); assert( ltracks2.size() == 1 ); cout << ltracks2.front() << endl; const LayerStat& lstat2 = ltracks2.front().get_status(); assert( ! lstat2.at_exit() ); //******************************************************************** cout << ok_prefix << "Propagate 3." << endl; LTrackList ltracks3; ltest1.propagate(ltracks2.front(),prop,ltracks3); assert( ltracks3.size() == 1 ); cout << ltracks3.front() << endl; const LayerStat& lstat3 = ltracks3.front().get_status(); assert( lstat3.at_exit() ); //******************************************************************** cout << ok_prefix << "Write object data." << endl; { LayerPtr plyr1( new LayerTest(11.1) ); ostringstream sstrm; StdObjStream obstrm(sstrm); obstrm.write_object("lyr1", plyr1); cout << sstrm.str() << endl; assert( sstrm.str().length() > 10 ); } //******************************************************************** cout << ok_prefix << "Read object data." << endl; { string str; str += "[ lyr2 LayerTest x=22.2 count=2 ]\n"; str += "[ lyr3 LayerTest x=33.3 count=3 ]\n"; istringstream sstrm(str); StdObjStream obstrm(sstrm); assert( obstrm.read_object() == "lyr2" ); Ptr plyr; ObjTable::get_object("lyr2",plyr); assert( *plyr == LayerTest(22.2,2) ); assert( obstrm.read_object() == "lyr3" ); ObjTable::get_object("lyr3",plyr); assert( *plyr == LayerTest(33.3,3) ); } //******************************************************************** cout << ok_prefix << "------------- All tests passed. -------------" << endl; return 0; //******************************************************************** }