/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Calibration/facilities/facilities-00-00-04/src/test/testUtil.cxx

Go to the documentation of this file.
00001 
00002 #include <string>
00003 #include <iostream>
00004 #include "facilities/Util.h"
00009 int main(int, char**) {
00010   std::string name = std::string("${GLAST_EXT}/xerces");
00011   std::string nameAgain = std::string("${GLAST_EXT}/xerces");
00012   std::string oDelim = std::string ("${");
00013   std::string cDelim = std::string ("}");
00014   int ntrans;
00015 
00016   std::cout << "Test expandEnvVar: " << std::endl;
00017   try {
00018     ntrans = facilities::Util::expandEnvVar(&name, oDelim, cDelim);
00019     std::cout << "Translated name (right delimiters) is " 
00020               << name << std::endl;  
00021     ntrans = facilities::Util::expandEnvVar(&nameAgain);
00022     std::cout << "Translated name (wrong delimiters) is " 
00023               << nameAgain << std::endl;  
00024   }
00025   catch (facilities::Untranslatable err) {
00026     std::cout << "Failed to completely translate " << name << std::endl;
00027   }
00028 
00029 
00030 
00031   // Process running this must have environment variable SRC
00032   std::string multi = std::string("$(FACILITIESROOT)/$(SRC)");
00033 
00034   try {
00035     ntrans = facilities::Util::expandEnvVar(&multi);
00036 
00037     std::cout << "Translated name is " << multi << std::endl;
00038     std::cout << ntrans << " variables were translated." << std::endl;
00039   }
00040   catch (facilities::Untranslatable err) {
00041     std::cout << "Failed to completely translate " << multi << std::endl;
00042   }
00043 
00044   std::cout << std::endl << "Test itoa " << std::endl;
00045   // Test the new itoa routine
00046   std::string intStr;
00047   facilities::Util::itoa(12, intStr);
00048   std::cout << "My String is " << intStr << std::endl;
00049 
00050   // basename & stringTokenize
00051   std::string unixname("/a/path/myUnixFile.txt");
00052   std::string wname("C:\\a\\longer\\path\\myWindowsFile.txt");
00053 
00054   std::vector<std::string> tokens;
00055   unsigned int i;
00056 
00057   std::cout << std::endl << "Test stringTokenize and basename" << std::endl;
00058   facilities::Util::stringTokenize(unixname, "/", tokens);
00059 
00060   std::cout << "Processing string " << unixname << std::endl;
00061   for (i = 0; i < tokens.size(); i++) {
00062     std::cout << "Token " << i << " is: " << tokens[i] << std::endl;
00063   }
00064 
00065   std::cout << "basename is " << facilities::Util::basename(unixname) << std::endl;
00066 
00067   facilities::Util::stringTokenize(wname, "\\", tokens);
00068 
00069   std::cout << "Processing string " << wname << std::endl;
00070   for (i = 0; i < tokens.size(); i++) {
00071     std::cout << "Token " << i << " is: " << tokens[i] << std::endl;
00072   }
00073 
00074   std::cout << "basename is " << facilities::Util::basename(wname) << std::endl;
00075 
00076   //test keyValueTokenize to map routine
00077   std::cout << std::endl << "Test keyValueTokenize " << std::endl;
00078   std::string input1("apple=green,lemon=yellow,blueberry=blue");
00079   std::cout << "Input string: '" << input1 << "'" << std::endl;
00080   std::map<std::string,std::string> maptokens;
00081   facilities::Util::keyValueTokenize(input1,",",maptokens,"=", false);
00082   std::map<std::string,std::string>::const_iterator tokens_itr=maptokens.begin();
00083   while (tokens_itr!=maptokens.end()) {
00084     std::cout << "Token key " <<(*tokens_itr).first  << " and value: " 
00085               << (*tokens_itr).second << std::endl;
00086     tokens_itr++;
00087   }
00088 
00089   std::cout <<"appending to previous map:"<<std::endl;
00090   std::string input2("apple2/green2,lemon2/yellow2,blueberry2/blue2");
00091   std::cout << "New string is '" << input2 << "'" << std::endl;
00092   facilities::Util::keyValueTokenize(input2,",",maptokens,"/",false);
00093   tokens_itr=maptokens.begin();
00094   while (tokens_itr!=maptokens.end()) {
00095     std::cout << "Token key " <<(*tokens_itr).first  << " and value: " 
00096               << (*tokens_itr).second << std::endl;
00097     tokens_itr++;
00098   }
00099   
00100   std::cout <<"clearing the map first:"<<std::endl;
00101   facilities::Util::keyValueTokenize(input2,",",maptokens,"/",true);
00102   tokens_itr=maptokens.begin();
00103   while (tokens_itr!=maptokens.end()) {
00104     std::cout << "Token key " <<(*tokens_itr).first  << " and value: " 
00105               << (*tokens_itr).second << std::endl;
00106     tokens_itr++;
00107   }
00108 
00109   std::cout << "Use a multi-character pairDelimiter argument " << std::endl;
00110   std::string input3("apple2:=green2 lemon2:=yellow2 blueberry2:=blue2");
00111   std::cout << "input is: '" << input3 << "'" << std::endl;
00112   facilities::Util::keyValueTokenize(input3," ",maptokens,":=");
00113   tokens_itr=maptokens.begin();
00114   while (tokens_itr!=maptokens.end()) {
00115     std::cout << "Token key " <<(*tokens_itr).first  << " and value: " 
00116               << (*tokens_itr).second << std::endl;
00117     tokens_itr++;
00118   }
00119 
00120 
00121   // Test stringToDouble routine
00122   std::cout << std::endl << "Test stringToDouble " << std::endl;
00123   std::string okDouble("3.14159");
00124   std::string badDouble("3.garbage56");
00125 
00126   double result = -1;
00127 
00128   try {
00129     result = facilities::Util::stringToDouble(okDouble);
00130     std::cout << "Converted (string) " << okDouble << " to (double) " 
00131               << result << std::endl;
00132   }
00133   catch (facilities::WrongType ex) {
00134     std::cout << "Failed with exception   " << ex.getMsg() 
00135               << std::endl;
00136   }
00137 
00138   try {
00139     result = facilities::Util::stringToDouble(badDouble);
00140     std::cout << "Converted (string) " << badDouble << " to (double) " 
00141               << result << std::endl;
00142   }
00143   catch (facilities::WrongType ex) {
00144     std::cout << "Failed with exception   " << ex.getMsg() 
00145               << std::endl;
00146   }
00147 
00148   // Test stringToInt routine
00149   std::cout << std::endl << "Test stringToInt " << std::endl;
00150 
00151   std::string okInt("33550");
00152   std::string badInt1("3garbage56");
00153   std::string badInt2("garbage356");
00154 
00155   int intResult = -1;
00156 
00157   try {
00158     intResult = facilities::Util::stringToInt(okInt);
00159     std::cout << "Converted (string) " << okInt << " to (int) " 
00160               << intResult << std::endl;
00161   }
00162   catch (facilities::WrongType ex) {
00163     std::cout << "Failed with exception   " << ex.getMsg() 
00164               << std::endl;
00165   }
00166 
00167   try {
00168     intResult = facilities::Util::stringToInt(badInt1);
00169     std::cout << "Converted (string) " << badInt1 << " to (int) " 
00170               << intResult << std::endl;
00171   }
00172   catch (facilities::WrongType ex) {
00173     std::cout << "Failed with exception  " << ex.getMsg() 
00174               << std::endl;
00175   }
00176 
00177   try {
00178     intResult = facilities::Util::stringToInt(badInt2);
00179     std::cout << "Converted (string) " << badInt2 << " to (int) " 
00180               << intResult << std::endl;
00181   }
00182   catch (facilities::WrongType ex) {
00183     std::cout << "Failed with exception  " << ex.getMsg() 
00184               << std::endl;
00185   }
00186 
00187   // Try out trimTrailing method
00188   std::cout << std::endl << "Test trimTrailing " << std::endl;
00189   std::string string1("ends with 2 blanks  ");
00190   std::string string2("ends with newline\n");
00191   std::string string3("no trailing whitespace");
00192 
00193   unsigned nTrimmed = facilities::Util::trimTrailing(&string1);
00194   std::cout << "Trimmed " << nTrimmed << " from string1; has new value : "
00195             << string1 << "*EOS*" << std::endl;
00196 
00197   nTrimmed = facilities::Util::trimTrailing(&string2);
00198   std::cout << "Trimmed " << nTrimmed << " from string2; has new value : "
00199             << string2 << "*EOS" <<  std::endl;
00200 
00201   nTrimmed = facilities::Util::trimTrailing(&string3);
00202   std::cout << "Trimmed " << nTrimmed << " from string3; has new value : "
00203             << string3 << "*EOS" << std::endl;
00204 
00205 
00206 
00207   return 0;
00208 }
00209 
00210   

Generated on Tue Nov 29 22:57:56 2016 for BOSS_7.0.2 by  doxygen 1.4.7