00001
00012 #include <sstream>
00013
00014 #include "comunCasoPrueba.hpp"
00015 #include "comun.hpp"
00016
00017 CPPUNIT_TEST_SUITE_REGISTRATION(comunCasoPrueba);
00018
00019 void comunCasoPrueba::prueba_estalla()
00020 {
00021 vector<string> r;
00022 r = estalla("", "a,b,c");
00023 CPPUNIT_ASSERT(r.size() == 0);
00024
00025 r = estalla(",", "");
00026 CPPUNIT_ASSERT(r.size() == 1);
00027 CPPUNIT_ASSERT(r[0] == "");
00028
00029 r = estalla(",", "a,b,c");
00030 CPPUNIT_ASSERT(r.size() == 3);
00031 CPPUNIT_ASSERT(r[0] == "a");
00032 CPPUNIT_ASSERT(r[1] == "b");
00033 CPPUNIT_ASSERT(r[2] == "c");
00034 }
00035
00036
00037 void comunCasoPrueba::prueba_verificaNombre()
00038 {
00039 char nrel[MAXLURL];
00040 CPPUNIT_ASSERT_THROW(verificaNombre(NULL, nrel),
00041 std::string);
00042 CPPUNIT_ASSERT_THROW(verificaNombre("indice.indice", NULL),
00043 std::string);
00044 CPPUNIT_ASSERT_THROW(verificaNombre("indice", nrel),
00045 std::string);
00046 stringstream nomar;
00047 for(unsigned int i = 0; i < MAXLURL + 10; i++) {
00048 nomar << "a";
00049 }
00050 nomar << ".indice";
00051
00052 CPPUNIT_ASSERT_THROW(verificaNombre(nomar.str().c_str(), nrel),
00053 std::string);
00054
00055 verificaNombre("indice.indice", nrel);
00056
00057 CPPUNIT_ASSERT(nrel == string("indice.relacion"));
00058 }
00059
00060
00061 void comunCasoPrueba::prueba_errorFormato()
00062 {
00063 stringstream is;
00064 CPPUNIT_ASSERT(errorFormato(is, "a") == "0: a");
00065 }
00066
00067
00068 void comunCasoPrueba::prueba_prefijo_comun_mas_largo()
00069 {
00070 CPPUNIT_ASSERT(prefijo_comun_mas_largo("", "") == "");
00071 CPPUNIT_ASSERT(prefijo_comun_mas_largo("a", "") == "");
00072 CPPUNIT_ASSERT(prefijo_comun_mas_largo("", "a") == "");
00073 CPPUNIT_ASSERT(prefijo_comun_mas_largo("a", "b") == "");
00074 CPPUNIT_ASSERT(prefijo_comun_mas_largo("a", "A") == "");
00075 CPPUNIT_ASSERT(prefijo_comun_mas_largo("a", "a") == "a");
00076 CPPUNIT_ASSERT(prefijo_comun_mas_largo("aa", "a") == "a");
00077 CPPUNIT_ASSERT(prefijo_comun_mas_largo("a", "aa") == "a");
00078 CPPUNIT_ASSERT(prefijo_comun_mas_largo("ab", "aa") == "a");
00079 CPPUNIT_ASSERT(prefijo_comun_mas_largo("abc", "aa") == "a");
00080 CPPUNIT_ASSERT(prefijo_comun_mas_largo("aac", "aa") == "aa");
00081 }
00082
00083
00084 void comunCasoPrueba::prueba_leeCad()
00085 {
00086 std::stringstream ss;
00087 ss.clear();
00088 ss << "";
00089 CPPUNIT_ASSERT(leeCad(ss)=="" );
00090 ss.clear();
00091 ss << "{";
00092 CPPUNIT_ASSERT(leeCad(ss) == "");
00093 ss.clear();
00094 ss << "a";
00095 CPPUNIT_ASSERT_THROW(leeCad(ss), std::string);
00096 ss.clear();
00097 ss << "a{";
00098 CPPUNIT_ASSERT(leeCad(ss) == "a");
00099 ss.clear();
00100 ss << "a{b";
00101 CPPUNIT_ASSERT(leeCad(ss) == "a");
00102 ss.str("");
00103
00104 ss.clear();
00105 ss << "123456789{";
00106 CPPUNIT_ASSERT(leeCad(ss) == "123456789");
00107 ss.clear();
00108 ss << "12345678901234567890123456789012{";
00109 CPPUNIT_ASSERT(leeCad(ss) == "12345678901234567890123456789012");
00110 ss.clear();
00111 ss << "123456789012345678901234567890123";
00112 CPPUNIT_ASSERT_THROW(leeCad(ss), std::string);
00113 ss.clear();
00114 ss << "a\0b{";
00115 CPPUNIT_ASSERT_THROW(leeCad(ss), std::string);
00116 }
00117
00118
00119 void comunCasoPrueba::prueba_leeHex()
00120 {
00121 std::stringstream ss;
00122 ss.clear();
00123 ss << "";
00124 CPPUNIT_ASSERT_THROW(leeHex(ss), std::string);
00125 ss.clear();
00126 ss << "1{";
00127 CPPUNIT_ASSERT_THROW(leeHex(ss), std::string);
00128 ss.clear();
00129 ss << "1234";
00130 CPPUNIT_ASSERT_THROW(leeHex(ss), std::string);
00131 ss.clear();
00132 ss << "00000001";
00133 CPPUNIT_ASSERT(leeHex(ss) == 1);
00134 ss.clear();
00135 ss << "0000000a";
00136 CPPUNIT_ASSERT(leeHex(ss) == 10);
00137 ss.clear();
00138 ss << "0000000abcd";
00139 CPPUNIT_ASSERT(leeHex(ss) == 10);
00140 string x;
00141 ss >> x;
00142 CPPUNIT_ASSERT(x == "bcd");
00143 ss.clear();
00144 ss << "000000ff";
00145 CPPUNIT_ASSERT(leeHex(ss) == 255);
00146 ss.clear();
00147 ss << "0000ffff";
00148 CPPUNIT_ASSERT(leeHex(ss) == 0xffff);
00149 ss.clear();
00150 ss << "ffffffff";
00151 CPPUNIT_ASSERT(leeHex(ss) == 0xffffffff);
00152 }
00153
00154 void comunCasoPrueba::prueba_lee128b()
00155 {
00156 std::stringstream ss;
00157 ss.clear();
00158 ss << "";
00159 CPPUNIT_ASSERT_THROW(lee128b(ss), std::string);
00160 ss.clear();
00161 ss << "1\n";
00162 CPPUNIT_ASSERT_THROW(lee128b(ss), std::string);
00163 ss.clear();
00164 ss << "12{";
00165 CPPUNIT_ASSERT_THROW(lee128b(ss), std::string);
00166 ss.clear();
00167 ss << "00001";
00168 CPPUNIT_ASSERT(lee128b(ss) == 1);
00169 ss.clear();
00170 ss << "0000" << (char)175;
00171 CPPUNIT_ASSERT(lee128b(ss) == 127);
00172 ss.clear();
00173 ss << "00010";
00174 CPPUNIT_ASSERT(lee128b(ss) == 128);
00175 ss.clear();
00176 ss << "00020";
00177 CPPUNIT_ASSERT(lee128b(ss) == 256);
00178 ss.clear();
00179 ss << "?" << (char)175 << (char)175 << (char)175
00180 << (char)175;
00181 CPPUNIT_ASSERT(lee128b(ss) == 0xffffffff);
00182 }
00183
00184 void comunCasoPrueba::prueba_escribeHex()
00185 {
00186 std::stringstream ss;
00187 ss.clear();
00188 ss.str("");
00189 escribeHex(ss, 0);
00190 CPPUNIT_ASSERT(ss.str() == "00000000" );
00191 ss.str("");
00192 escribeHex(ss, 10);
00193 CPPUNIT_ASSERT(ss.str() == "0000000a" );
00194 ss.str("");
00195 escribeHex(ss, 0xffffffff);
00196 CPPUNIT_ASSERT(ss.str() == "ffffffff" );
00197 ss.str("");
00198 CPPUNIT_ASSERT_THROW(escribeHex(ss, 0xfffffffff), std::string);
00199 }
00200
00201 void comunCasoPrueba::prueba_escribe128b()
00202 {
00203 std::stringstream ss;
00204 ss.clear();
00205 ss.str("");
00206 escribe128b(ss, 0);
00207 CPPUNIT_ASSERT(ss.str() == "00000" );
00208 ss.str("");
00209 escribe128b(ss, 128);
00210 CPPUNIT_ASSERT(ss.str() == "00010" );
00211 ss.str("");
00212 escribe128b(ss, 0xffffffff);
00213 CPPUNIT_ASSERT(ss.str() == "?¯¯¯¯" );
00214 ss.str("");
00215 CPPUNIT_ASSERT_THROW(escribe128b(ss, 0xfffffffff), std::string);
00216 }
00217
00218 void comunCasoPrueba::prueba_normalizaCaracter()
00219 {
00220 CPPUNIT_ASSERT(normalizaCaracter('a') == string("A"));
00221 CPPUNIT_ASSERT(normalizaCaracter(' ') == "");
00222 CPPUNIT_ASSERT(normalizaCaracter(':') == "");
00223 }
00224
00225 void comunCasoPrueba::prueba_normaliza()
00226 {
00227 CPPUNIT_ASSERT(normaliza("aBáÁñÉíóúü") == string("ABAAÑEIOUU"));
00228 CPPUNIT_ASSERT(normaliza(" ") == "");
00229 CPPUNIT_ASSERT(normaliza("titulo:nombre") == "TITULONOMBRE");
00230 CPPUNIT_ASSERT(normaliza("con") == "");
00231 CPPUNIT_ASSERT(normaliza("con.punto") == "CON.PUNTO");
00232 }
00233
00234 void comunCasoPrueba::prueba_car_utf8_a_latin1()
00235 {
00236 char l;
00237
00238 int n = car_utf8_a_latin1("a", &l);
00239
00240 CPPUNIT_ASSERT(n == 1 && l == 'a');
00241 n = car_utf8_a_latin1("ó", &l) ;
00242
00243 CPPUNIT_ASSERT(n == 2 && l == 'ó');
00244 }
00245
00246
00247 void comunCasoPrueba::prueba_utf8_a_latin1()
00248 {
00249 string r = utf8_a_latin1("a", 1);
00250
00251 CPPUNIT_ASSERT(r == "a");
00252 r = utf8_a_latin1("ac", 2);
00253 CPPUNIT_ASSERT(r == "ac");
00254 r = utf8_a_latin1("acc", 3);
00255 CPPUNIT_ASSERT(r == "acc");
00256 r = utf8_a_latin1("acci", 4);
00257 CPPUNIT_ASSERT(r == "acci");
00258 r = utf8_a_latin1("acción", 7);
00259 CPPUNIT_ASSERT(r == "acción");
00260 }
00261
00262
00263
00264 void comunCasoPrueba::prueba_directorio_temp()
00265 {
00266 string r = directorio_temp();
00267 cout << r << endl;
00268 CPPUNIT_ASSERT(r.size() > 0);
00269 }
00270
00271
00272
00273 void comunCasoPrueba::setUp()
00274 {
00275 return;
00276 }