// InteractingLayer_t.cpp #include "InteractingLayer.h" #include #include #include #include "objstream/StdObjStream.hpp" #include "trfutil/trfstream.h" #include "trfbase/InteractorPtr.h" #include "trfbase/InteractorTest.h" #include "trfbase/SurfTest.h" #include "trfbase/ETrack.h" #include "trfbase/PropStat.h" #include "trfbase/PropDirectedTest.h" #include "LayerTest.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 = "InteractingLayer"; 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; cout << trf_format; ObjTable::register_type(); ObjTable::register_type(); ObjTable::register_type(); LayerPtr pltest1( new LayerTest(10.,3) ); LayerPtr pltest2( new LayerTest(20.) ); InteractorPtr pinter( new InteractorTest(1.0) ); InteractingLayer intltest1( pltest1, pinter ); InteractingLayer intltest2( pltest2, pinter ); cout << intltest1 << endl; cout << intltest1.get_type() << endl; cout << intltest2.get_type() << endl; assert( intltest1.get_type() == intltest2.get_type() ); assert( intltest1.has_clusters() ); assert( intltest1.get_clusters().size() == 0 ); assert( intltest1.get_layer() == pltest1 ); assert( intltest1.get_interactor() == pinter ); //******************************************************************** cout << ok_prefix << "Write object stream." << endl; { StdObjStream out(cout); out.write_object("LTest1", pltest1); out.write_object("LTest2", pltest2); out.write_object("Inter1", pinter); out.write_object("Test_int_layer",intltest1); out.write_object("Test_int_layer",intltest2); cout << endl; } //******************************************************************** 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"; str += "[ int2 InteractorTest errfac=2. ]\n"; str += "[ ilyr1 InteractingLayer layer=@lyr2 interactor=@int2 ]"; InteractorPtr pinter; istringstream sstrm(str); StdObjStream obstrm(sstrm); assert( obstrm.read_object() == "lyr2" ); assert( obstrm.read_object() == "lyr3" ); assert( obstrm.read_object() == "int2" ); assert( obstrm.read_object() == "ilyr1" ); ConstLayerPtr plyr; InteractorPtr pint; Ptr pintlyr; ObjTable::get_object("lyr2",plyr); ObjTable::get_object("int2",pint); ObjTable::get_object("ilyr1",pintlyr); assert( pintlyr->get_layer() == plyr ); assert( pintlyr->get_interactor() == pint ); } //******************************************************************** cout << ok_prefix << "Construct propagator and track." << endl; PropTest prop; cout << prop << endl; SurfTest stest(2); TrackVector vec; TrackError err; err(0,0) = 1.0; ETrack tre( SurfacePtr(stest.new_pure_surface()), vec, err ); ETrack tre0 = tre; cout << tre << endl; //******************************************************************** cout << ok_prefix << "------------- All tests passed. -------------" << endl; return 0; //******************************************************************** }