// // $Id: iStandaloneGeometry.cpp,v 1.1 2001/02/03 22:54:12 hobbs Exp $ // // File: StandaloneGeometry_t.cpp // Purpose: Component test for StandaloneGeometry // Created: 2-FEB-2001 John D. Hobbs // // $Revision: 1.1 $ // // // Include files #include "silicon_geometry/utils/StandaloneGeometry.hpp" #include "d0stream/d0StreamFactory.hpp" #include "d0stream/d0Stream.hpp" // Global definitions static void write_geometry(const char* fname, d0_Ref smtgeo); // Constructors/Destructors // Accessors using namespace std; int main() { // Make the default in-memory geometry char **arglist; arglist = (char**)malloc(3*sizeof(char*)); arglist[0] = "-x"; arglist[1] = 0; StandaloneGeometry defsmt(1,arglist); vector leftovers; defsmt.get_modified_args(leftovers); if( leftovers.size() != 1 ) return 1; if( leftovers[0] != string(arglist[0]) ) return 2; d0_Ref smt1 = defsmt.get_geometry(); if( smt1.is_null() ) return 3; if( defsmt.get_file_name() != string("SiBaseGeometry") ) return 4; // Make a specific in memory geometry from RCP, and add an extra unknown // arguement arglist[0] = "-r=Si10TestGeometry"; arglist[1] = "-x"; arglist[2] = 0; StandaloneGeometry rcpsmt(2,arglist); if( rcpsmt.get_geometry().is_null() ) return 5; if( rcpsmt.get_file_name() != string("Si10TestGeometry") ) return 6; // Write out the default geometry write_geometry("/tmp/smt_ctest_geometry.evpack",smt1); // Read the geometry from the file just written arglist[0] = "-f=/tmp/smt_ctest_geometry.evpack"; arglist[1] = 0; StandaloneGeometry redefsmt(1,arglist); d0_Ref resmt = redefsmt.get_geometry(); if( *resmt != *smt1 ) return 7; return 0; } void write_geometry(const char* fname, d0_Ref smtgeo) { d0om_init("d0Writer"); d0StreamFactory* theFactory = d0StreamFactory::locateStreamFactory(); d0Stream* geomfile = theFactory->make_d0Stream(fname,"EVPACK",ios::out); if( !geomfile ) { cerr << "Error opening test output file" << fname << endl; throw "Cannot open output file"; } // Write the geometry geomfile->write(*smtgeo); geomfile->close(); }