00001
00013 #include <sstream>
00014 #include <vector>
00015
00016 #include "DocCasoPrueba.hpp"
00017
00018 CPPUNIT_TEST_SUITE_REGISTRATION(DocCasoPrueba);
00019
00020 void DocCasoPrueba::prueba_base()
00021 {
00022 Doc d("u", "c", "2009-09-30");
00023 CPPUNIT_ASSERT(d.URL == "u");
00024 CPPUNIT_ASSERT(d.cond == "c");
00025 CPPUNIT_ASSERT(d.fecha == "2009-09-30");
00026
00027 std::stringstream ss;
00028 ss.clear();
00029 ss.str("");
00030
00031 ss << d ;
00032 CPPUNIT_ASSERT(ss.str() == "u c 2009-09-30\n");
00033
00034 Doc g("con\nnoimp", "c", "2010-01-05");
00035 ss.clear();
00036 ss.str("");
00037 ss << g ;
00038
00039 string cc = "con\%0anoimp c 2010-01-05\n";
00040
00041 CPPUNIT_ASSERT(ss.str() == cc);
00042
00043 ss.clear();
00044 ss.str("");
00045 for (unsigned int i = 0; i < MAXLURL; i++) {
00046 ss << "aa";
00047 }
00048
00049 g.URL = ss.str();
00050 CPPUNIT_ASSERT_THROW(ss << g, std::string);
00051
00052
00053 d.numoc=1;
00054 Doc e("u", "c", "2009-09-30");
00055 e.numoc=2;
00056 CPPUNIT_ASSERT(d < e);
00057 Doc f("u", "c", "2009-09-29");
00058 CPPUNIT_ASSERT(f < d);
00059 CPPUNIT_ASSERT(f < e);
00060
00061 }
00062
00063 void DocCasoPrueba::prueba_escribeDocs()
00064 {
00065
00066 vector<Doc> vdoc;
00067
00068 vdoc.push_back(Doc("x","y","2009-09-30"));
00069
00070 std::stringstream sos;
00071
00072 sos.clear();
00073 sos << "";
00074 escribeDocs(sos, vdoc);
00075 CPPUNIT_ASSERT(sos.str() == "x y 2009-09-30\n" );
00076
00077 vdoc.push_back(Doc("u","v","2008-09-30"));
00078 sos.clear();
00079 sos.str("");
00080 escribeDocs(sos, vdoc);
00081 CPPUNIT_ASSERT(sos.str() == "x y 2009-09-30\nu v 2008-09-30\n" );
00082
00083 sos.clear();
00084 sos.str("");
00085 vector<long> reord;
00086 reord.push_back(1);
00087 reord.push_back(0);
00088 escribeDocs(sos, vdoc, &reord);
00089 CPPUNIT_ASSERT(sos.str() == "u v 2008-09-30\nx y 2009-09-30\n" );
00090 }
00091
00092 void DocCasoPrueba::prueba_leeDocs()
00093 {
00094 std::stringstream ss;
00095 ss.clear();
00096 ss.str("");
00097 vector<Doc> vdoc;
00098 vdoc = leeDocs(ss);
00099 CPPUNIT_ASSERT(vdoc.size() == 0);
00100 ss.clear();
00101 ss.str("a");
00102 CPPUNIT_ASSERT_THROW(leeDocs(ss), std::string);
00103 ss.clear();
00104 ss.str("a b");
00105 CPPUNIT_ASSERT_THROW(leeDocs(ss), std::string);
00106 ss.clear();
00107 ss.str("a b c");
00108 CPPUNIT_ASSERT_THROW(leeDocs(ss), std::string);
00109 ss.clear();
00110 ss.str("a b 2009-01");
00111 CPPUNIT_ASSERT_THROW(leeDocs(ss), std::string);
00112
00113 ss.clear();
00114 ss.str("a\n b 2009-01");
00115 CPPUNIT_ASSERT_THROW(leeDocs(ss), std::string);
00116
00117 ss.clear();
00118 ss.str("a b 2009-01-\n");
00119 CPPUNIT_ASSERT_THROW(leeDocs(ss), std::string);
00120
00121 ss.clear();
00122 ss.str("a b 2009-01-01");
00123 CPPUNIT_ASSERT_THROW(leeDocs(ss), std::string);
00124
00125
00126
00127 ss.clear();
00128 ss.str("a b 2009-01-01\n");
00129 vdoc = leeDocs(ss);
00130
00131 CPPUNIT_ASSERT(vdoc.size() == 1);
00132 CPPUNIT_ASSERT(vdoc[0].URL == "a");
00133 CPPUNIT_ASSERT(vdoc[0].cond == "b");
00134 CPPUNIT_ASSERT(vdoc[0].fecha == "2009-01-01");
00135 }
00136
00137
00138 void DocCasoPrueba::prueba_mezclaDocs()
00139 {
00140 std::stringstream ss;
00141 ss.clear();
00142 ss << "";
00143
00144 vector<Doc> docs1;
00145 docs1.push_back(Doc("a", "d", "2001-01-01"));
00146 vector<Doc> docs2;
00147 docs2.push_back(Doc("a", "b", "2009-01-01"));
00148 docs1.push_back(Doc("b", "b", "2009-01-01"));
00149
00150 vector<long> renum = mezclaDocs(docs1, docs2);
00151 CPPUNIT_ASSERT(renum.size() == 2);
00152 CPPUNIT_ASSERT(renum[0] == 0);
00153 CPPUNIT_ASSERT(docs1.size() == 2);
00154 CPPUNIT_ASSERT(docs2.size() == 2);
00155 CPPUNIT_ASSERT(docs2[0].URL == "a");
00156 CPPUNIT_ASSERT(docs2[0].cond == "d");
00157 CPPUNIT_ASSERT(docs2[0].fecha == "2001-01-01");
00158 }
00159