comunCasoPrueba.cpp

Ir a la documentación de este archivo.
00001 // vim: set expandtab tabstop=8 shiftwidth=8 foldmethod=marker:
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         //clog << "nrel='" << nrel << "'" << endl;
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("");  // Este es necesario para que el clear siguiente funcione.
00103         // clear solo borra flags de error.
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         //cout << "n = " << n << "l=" << l << endl;
00240         CPPUNIT_ASSERT(n == 1 && l == 'a');
00241         n = car_utf8_a_latin1("ó", &l) ;
00242         //cout << "n = " << n << "l=" << l << endl;
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         //cout << r << endl;
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 }

Generado el Wed Jan 6 06:58:21 2010 para Mt77 por  doxygen 1.5.4