Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

cArticle.cc File Reference

#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include "Logger.h"
#include "Article.h"

Go to the source code of this file.

Functions

int checkArticle (const char *artfn)
int main (int argc, char *argv[])

Variables

char * articleList [] = { "article5283", "article9621", "article9622" }
Logger slog
Article art1


Function Documentation

int checkArticle const char *  artfn  ) 
 

Definition at line 19 of file cArticle.cc.

References art1, Article::c_str(), Article::getfield(), Article::has_field(), Article::length(), Article::read(), Article::setfield(), Article::settext(), and Article::write().

Referenced by main().

00020 {
00021         char buf[256];
00022         int la1;
00023         ifstream is;
00024         ofstream os;
00025         Article *art2;
00026 
00027         sprintf(buf, "%s.in", artfn);
00028         is.open(buf);
00029         art1.read(is);
00030         is.close();
00031         la1 = art1.length();
00032 
00033         art2 = new Article(art1);
00034         if (strcmp(art1.c_str(), art2->c_str()))
00035                 return -11;
00036         if (la1 != art1.length() || la1 != art2->length())
00037                 return -12;
00038 
00039         art1.settext(art2->gettext());
00040         if (strcmp(art1.c_str(), art2->c_str()))
00041                 return -21;
00042         if (la1 != art1.length() || la1 != art2->length())
00043                 return -22;
00044 
00045         strcpy(buf, artfn);
00046         strcat(buf, ".out");
00047         os.open(buf);
00048         art2->write(os);
00049         os.close();
00050 
00051         sprintf(buf, "%s.in", artfn);
00052         is.open(buf);
00053         art1.read(is);
00054         is.close();
00055         la1 = art1.length();
00056 
00057         delete art2;
00058         art2 = new Article(0, art1.c_str(), art1.length());
00059         if (strcmp(art1.c_str(), art2->c_str()))
00060                 return -31;
00061         if (la1 != art1.length() || la1 != art2->length())
00062                 return -32;
00063 
00064         if (!art1.has_field("from:"))
00065                 return -41;
00066         if (!art2->has_field("FROM:"))
00067                 return -42;
00068 
00069         if (art1.has_field("foobar:"))
00070                 return -51;
00071 
00072         //Xref: news.tuwien.ac.at at.tuwien.admins:892 at.tuwien.tunet:1520 at.tuwien.general:5283 at.tuwien.edvz.neuigkeiten:531
00073 
00074         if (art1.getfield("dummy:") != "dummy")
00075                 return -61;
00076         if (art2->getfield("DuMmY:", 1) != "dummy: dummy")
00077                 return -71;
00078 
00079         art1.setfield("dummy:", "dummy: dummy2\r\n");
00080         art1.setfield("dummy2:", "dummy2: dummy2\r\n");
00081         if (!strcmp(art1.c_str(), art2->c_str()))
00082                 return -81;
00083         if (la1 == art1.length())
00084                 return -82;
00085         if (art1.getfield("dummy:") != "dummy2")
00086                 return -83;
00087         if (art1.getfield("dummy2:") != "dummy2")
00088                 return -84;
00089 
00090         return 0;
00091 }

int main int  argc,
char *  argv[]
 

Definition at line 93 of file cArticle.cc.

References articleList, checkArticle(), and ef.

00094 {
00095         char **al = articleList;
00096         int e, ef = 0, i, j = sizeof(articleList) / sizeof(articleList[0]);
00097 
00098         chdir(getenv("srcdir"));
00099         if (argc > 1) {
00100                 al = argv + 1;
00101                 j = argc - 1;
00102         }
00103 
00104         cout << "cArticle:\n";
00105         for (i = 0; i < j; i++) {
00106                 if ((e = checkArticle(al[i])) < 0) {
00107                         cout << "checkArticle(" << al[i] <<
00108                             ") failed with: " << e << endl;
00109                         ef++;
00110                 } else {
00111                         cout << "checkArticle(" << al[i] <<
00112                             ") succeeded\n";
00113                 }
00114         }
00115         if (ef == 0) {
00116                 cout << "cArticle: all tests succeeded\n";
00117                 exit(0);
00118         } else {
00119                 cout << "cArticle: " << ef << " failures\n";
00120                 exit(-1);
00121         }
00122 }


Variable Documentation

Article art1
 

Definition at line 17 of file cArticle.cc.

Referenced by checkArticle().

char* articleList[] = { "article5283", "article9621", "article9622" }
 

Definition at line 14 of file cArticle.cc.

Referenced by main().

Logger slog
 

Definition at line 16 of file cArticle.cc.

Referenced by CServer::active(), RServer::active(), NVActiveDB::add(), CServer::article(), RServer::article(), ArtSpooler::ArtSpooler(), ASSERT(), catchsigalarm(), catchsighup(), catchsignal(), check_auth_file(), check_auth_unix(), clean(), NVcontainer::close(), RServer::connect(), sstream::connectTo(), create_worker(), CServer::CServer(), sstream::disconnect(), RServer::disconnect(), doprefetch(), Error::Error(), fillHostStruct(), Article::find_field(), NServer::freegroup(), NVActiveDB::get(), NVNewsgroup::getarticle(), CServer::getgroup(), RServer::getgroup(), LServer::getgroup(), NVNewsgroup::getover(), ArtSpooler::getSpooledArt(), CServer::groupinfo(), RServer::groupinfo(), LServer::groupinfo(), NVActiveDB::hasgroup(), RServer::init(), LServer::init(), RServer::issue(), CServer::listgroup(), RServer::listgroup(), CNewsgroup::listgroup(), LServer::LServer(), main(), NVcontainer::make_current(), MPList::makeFilter(), AccessEntry::modifyAccessFlags(), Newsgroup::Newsgroup(), NVActiveDB_Iter::next(), nlreadline(), nnrpd(), nntpd(), ns_article(), ns_date(), ns_group(), ns_help(), ns_post(), ns_stat(), NServer::NServer(), nsh_particle(), NVcontainer::nvalloc(), NVcontainer::nvfree(), CServer::overviewdb(), RServer::overviewdb(), CServer::post(), RServer::post(), CServer::postspooled(), CNewsgroup::prefetchGroup(), CNewsgroup::prefetchOverview(), ResponseError::print(), UsageError::print(), NotAllowedError::print(), PostingFailedError::print(), NoSuchArticleError::print(), DuplicateArticleError::print(), NoSuchGroupError::print(), NoNewsServerError::print(), NoSuchFieldError::print(), NSError::print(), AssertionError::print(), IOError::print(), SystemError::print(), Error::print(), InvalidArticleError::print(), NVNewsgroup::printlistgroup(), NVNewsgroup::printoverdb(), NVActiveDB::read(), Article::read(), readgroups(), RNewsgroup::readoverdb(), NVNewsgroup::readoverdb(), remove_elements(), NVcontainer::resize(), ResponseError::ResponseError(), RServer::RServer(), seekfile(), RServer::selectgroup(), selectgroup(), NVNewsgroup::setarticle(), Article::setfield(), RServer::setserver(), RServer::setserverlist(), RNewsgroup::setsize(), NVNewsgroup::setsize(), sigchld(), ArtSpooler::spoolArt(), CServer::spoolarticle(), NVNewsgroup::sprintover(), NVActiveDB::sset(), ArtSpooler::storeBadArt(), CNewsgroup::sUpdateGroupInfo(), CNewsgroup::sUpdateOverview(), SyntaxError::SyntaxError(), update(), CNewsgroup::updateOverview(), NVActiveDB::write(), Article::write(), ArtSpooler::~ArtSpooler(), CServer::~CServer(), LServer::~LServer(), NServer::~NServer(), and RServer::~RServer().


Generated on Fri Aug 20 10:58:08 2004 for NewsCache by doxygen 1.3.6-20040222