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
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
00046 std::string intStr;
00047 facilities::Util::itoa(12, intStr);
00048 std::cout << "My String is " << intStr << std::endl;
00049
00050
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
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
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
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
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