00001
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
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
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
00093
00094
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);
00111 NodoTrieS *n6=new NodoTrieS("MIGA", NULL, NULL, Pos(17,1));
00112 NodoTrieS *n4=new NodoTrieS("A", n6, n3, Pos(14,1));
00113
00114 NodoTrieS *rm = mezcla(ct, n4);
00115 ct = NULL;
00116 n4=NULL;
00117
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);
00162
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
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
00187 CPPUNIT_ASSERT(t.preorden() == "LAIBERARÁNOSSIVERDAD");
00188 NodoTrieS u;
00189 leeTexto("verdadlarga.txt", 1, u, false);
00190
00191 CPPUNIT_ASSERT(u.preorden() == "LAVERDADSINOSLIBERARÁSIABCDEFGHI");
00192
00193 NodoTrieS v;
00194 leeTexto("verdad.txt", 1, v, true);
00195
00196 CPPUNIT_ASSERT(v.preorden() == "LIBERARANOSSIVERDAD");
00197
00198 }
00199
00200 void NodoTrieSCasoPrueba::setUp()
00201 {
00202 return;
00203 }