NodoTrieSCasoPrueba.cpp

Ir a la documentación de este archivo.
00001 // vim: set expandtab tabstop=8 shiftwidth=8 foldmethod=marker:
00013 #include <sstream>
00014 
00015 #include "NodoTrieSCasoPrueba.hpp"
00016 #include "NodoTrieS.hpp"
00017 
00018 CPPUNIT_TEST_SUITE_REGISTRATION(NodoTrieSCasoPrueba);
00019 
00020 void NodoTrieSCasoPrueba::prueba_constructora()
00021 {
00022         NodoTrieS *ct = new NodoTrieS();
00023 
00024         CPPUNIT_ASSERT(ct->preorden() == "");
00025 
00026         CPPUNIT_ASSERT(ct->busca("hola").size() == 0);
00027 }
00028 
00029 void NodoTrieSCasoPrueba::prueba_inserta()
00030 {
00031         NodoTrieS *ct = new NodoTrieS();
00032 
00033         ct->inserta("BUEN", Pos(1,1));
00034         CPPUNIT_ASSERT(ct->preorden() == "BUEN");
00035         ct->inserta("PODEROSO", Pos(1,2));
00036         CPPUNIT_ASSERT(ct->preorden() == "BUENPODEROSO");
00037         ct->inserta("BUENO", Pos(1,3));
00038         CPPUNIT_ASSERT(ct->preorden() == "BUENOPODEROSO");
00039         ct->inserta("BUENOS", Pos(1,4));
00040         CPPUNIT_ASSERT(ct->preorden() == "BUENOSPODEROSO");
00041         ct->inserta("A", Pos(1,5));
00042         CPPUNIT_ASSERT(ct->preorden() == "ABUENOSPODEROSO");
00043         ct->inserta("C", Pos(1,6));
00044         CPPUNIT_ASSERT(ct->preorden() == "ABUENOSCPODEROSO");
00045         ct->inserta("BUEN", Pos(1,7));
00046         CPPUNIT_ASSERT(ct->preorden() == "ABUENOSCPODEROSO");
00047         ct->inserta("BUENA", Pos(1,8));
00048         CPPUNIT_ASSERT(ct->preorden() == "ABUENAOSCPODEROSO");
00049         ct->inserta("BUENO", Pos(1,9));
00050         CPPUNIT_ASSERT(ct->preorden() == "ABUENAOSCPODEROSO");
00051         ct->inserta("BUENZ", Pos(1,10));
00052         CPPUNIT_ASSERT(ct->preorden() == "ABUENAOSZCPODEROSO");
00053         ct->inserta("BU", Pos(1,11));
00054         CPPUNIT_ASSERT(ct->preorden() == "ABUENAOSZCPODEROSO");
00055         ct->inserta("BUS", Pos(1,12));
00056         CPPUNIT_ASSERT(ct->preorden() == "ABUENAOSZSCPODEROSO");
00057         ct->inserta("AMIGO", Pos(1,13));
00058         CPPUNIT_ASSERT(ct->preorden() == "AMIGOBUENAOSZSCPODEROSO");
00059         ct->inserta("AMIGZ", Pos(1,14));
00060         //      clog << ct->preorden() << endl;
00061         CPPUNIT_ASSERT(ct->preorden() == "AMIGOZBUENAOSZSCPODEROSO");
00062 }
00063 
00064 void NodoTrieSCasoPrueba::prueba_insertaConEtiqueta()
00065 {
00066         NodoTrieS *ct = new NodoTrieS();
00067 
00068         ct->insertaConEtiqueta("nombre", "titulo", 1, 1);
00069         CPPUNIT_ASSERT( ct->preorden() == "TITULO:NOMBRE");
00070         ct->insertaConEtiqueta("nombre con espacio", "titulo", 1, 1);
00071         stringstream ss;
00072         ct->aDotty(ss, "");
00073         //cout << ss.str() << endl;
00074         CPPUNIT_ASSERT( ss.str().size() > 0);
00075 
00076         cout << ct->preorden() << endl;
00077         CPPUNIT_ASSERT( ct->preorden() == "TITULO:CONESPACIONOMBRE");
00078         ct->insertaConEtiqueta("nombre.con.punto", "titulo", 1, 1);
00079         CPPUNIT_ASSERT( ct->preorden() == "TITULO:CONESPACIONOMBRE.CON.PUNTO");
00080 
00081         ct->insertaConEtiqueta("nombre.con.punto.perodeverdadmuypermuyperomuyperosuficientelargocomoparaquetengaquecortarse", "otro", 1, 1);
00082         CPPUNIT_ASSERT( ct->preorden() == "OTRO:NOMBRE.CON.PUNTO.PERODEVERDTITULO:CONESPACIONOMBRE.CON.PUNTO");
00083         delete ct;
00084 
00085         ct = new NodoTrieS();
00086         ct->insertaConEtiqueta("nombre.con.punto.perodeverd.aaa", "otro", 1, 1);
00087         CPPUNIT_ASSERT( ct->preorden() == "OTRO:NOMBRE.CON.PUNTO.PERODEVERD");
00088         delete ct;
00089 
00090         ct = new NodoTrieS();
00091         ct->insertaConEtiqueta("nombre.cdefghijklmnopqrstuv w", "otro", 1, 1);
00092         /*      ct->aDotty(ss, "");
00093                 cout << ss.str() << endl; 
00094                 cout << ct->preorden() << endl; */
00095         CPPUNIT_ASSERT( ct->preorden() == "OTRO:NOMBRE.CDEFGHIJKLMNOPQRSTUVW");
00096         delete ct;
00097 
00098 
00099 
00100 }
00101 
00102 
00103 void NodoTrieSCasoPrueba::prueba_mezcla()
00104 {
00105         NodoTrieS *ct = new NodoTrieS();
00106 
00107         NodoTrieS *n7=new NodoTrieS("PODEROSS", NULL, NULL, Pos(18,1));
00108         NodoTrieS *n5=new NodoTrieS("CASA", NULL, n7, Pos(16,1));
00109         NodoTrieS *n2=new NodoTrieS("CAD1", NULL, NULL, Pos(15,1));
00110         NodoTrieS *n3=new NodoTrieS("B", n2, n5); //resp de liberar n2 pasa a n3
00111         NodoTrieS *n6=new NodoTrieS("MIGA", NULL, NULL, Pos(17,1));
00112         NodoTrieS *n4=new NodoTrieS("A", n6, n3, Pos(14,1)); // resp de liberar n3 pasa a n4
00113 
00114         NodoTrieS *rm = mezcla(ct, n4);
00115         ct = NULL;
00116         n4=NULL;
00117         //cout << rm->preorden() << endl;
00118         CPPUNIT_ASSERT(rm->preorden() == "AMIGABCAD1CASAPODEROSS");
00119         delete rm;
00120 
00121         ct = new NodoTrieS("AMIGA", NULL, NULL, Pos(1,1));
00122         n4 = new NodoTrieS("AMIGA", NULL, NULL, Pos(2,1));
00123         rm = mezcla(ct, n4);
00124         CPPUNIT_ASSERT(rm->preorden() == "AMIGA");
00125         delete rm;
00126 
00127         ct = new NodoTrieS("AMIGA", NULL, NULL, Pos(1,1));
00128         n4 = new NodoTrieS("AMIGO", NULL, NULL, Pos(2,1));
00129         rm = mezcla(ct, n4);
00130         CPPUNIT_ASSERT(rm->preorden() == "AMIGAO");
00131         delete rm;
00132 
00133         ct = new NodoTrieS("AMIGO", NULL, NULL, Pos(1,1));
00134         n4 = new NodoTrieS("AMIGA", NULL, NULL, Pos(2,1));
00135         rm = mezcla(ct, n4);
00136         CPPUNIT_ASSERT(rm->preorden() == "AMIGAO");
00137         delete rm;
00138 
00139 
00140         ct = new NodoTrieS("AMIG", NULL, NULL, Pos(1,1));
00141         n4 = new NodoTrieS("AMIGO", NULL, NULL, Pos(2,1));
00142         rm = mezcla(ct, n4);
00143         CPPUNIT_ASSERT(rm->preorden() == "AMIGO");
00144         delete rm;
00145 
00146         ct = new NodoTrieS("AMIGO", NULL, NULL, Pos(1,1));
00147         n4 = new NodoTrieS("AMIG", NULL, NULL, Pos(2,1));
00148         rm = mezcla(ct, n4);
00149         CPPUNIT_ASSERT(rm->preorden() == "AMIGO");
00150         delete rm;
00151 
00152 
00153 
00154 
00155 }
00156 
00157 void NodoTrieSCasoPrueba::prueba_renumeraDocs()
00158 {
00159         NodoTrieS *n=new NodoTrieS("PODEROSO", NULL, NULL, Pos(1,18));
00160         vector<long> renum;
00161         renum.push_back(1); // 0->1   indicando que documento 1 pasa a ser 2
00162         // pues al renumerar se usa indexado de vector en lugar del indexado Pos
00163         n->renumeraDocs(renum);
00164         set<Pos> sp = n->busca("PODEROSO");
00165         CPPUNIT_ASSERT(sp.size() == 1);
00166         set<Pos>::iterator cpi;
00167         cpi = sp.begin();
00168         CPPUNIT_ASSERT((*cpi).numd == 2 && (*cpi).numb == 18);
00169         delete n;
00170 
00171         NodoTrieS *her=new NodoTrieS("B", NULL, NULL, Pos(1,1));
00172         NodoTrieS *hij=new NodoTrieS("B", NULL, NULL, Pos(1,2));
00173         n = new NodoTrieS("A", her, hij, Pos(1,3));
00174         n->renumeraDocs(renum);
00175         stringstream ss;
00176         ss << n->depuracpos();
00177         //clog << "ss=" << ss.str() << endl;
00178         CPPUNIT_ASSERT(ss.str() == "{(2,3)}");
00179         delete n;
00180 }
00181 
00182 void NodoTrieSCasoPrueba::prueba_leeTexto()
00183 {
00184         NodoTrieS t;
00185         leeTexto("verdad.txt", 1, t, false);
00186         //clog << "t=" << t.preorden() << endl;
00187         CPPUNIT_ASSERT(t.preorden() == "LAIBERARÁNOSSIVERDAD");
00188         NodoTrieS u;
00189         leeTexto("verdadlarga.txt", 1, u, false);
00190         //clog << "u=" << u.preorden() << endl;
00191         CPPUNIT_ASSERT(u.preorden() == "LAVERDADSINOSLIBERARÁSIABCDEFGHI");
00192 
00193         NodoTrieS v;
00194         leeTexto("verdad.txt", 1, v, true);
00195         //clog << "v=" << v.preorden() << endl;
00196         CPPUNIT_ASSERT(v.preorden() == "LIBERARANOSSIVERDAD");
00197 
00198 }
00199 
00200 void NodoTrieSCasoPrueba::setUp()
00201 {
00202         return;
00203 }

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