#include <string>
#include <iostream>
#include "facilities/Util.h"
Go to the source code of this file.
Functions | |
int | main (int, char **) |
Definition in file testUtil.cxx.
int main | ( | int | , | |
char ** | ||||
) |
Miniscule program to test a couple modes of Util::expandEnvVar Caller should have an environment variable SRC with some sensible definition.
Definition at line 9 of file testUtil.cxx.
References showlog::err, genRecEmupikp::i, RawFileTools::itoa(), and deljobs::string.
00009 { 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 }