00001 #include <iostream>
00002 #include <fstream>
00003 #include <string>
00004
00005 #include <string.h>
00006 #include <stdio.h>
00007 #include <unistd.h>
00008
00009 #include "Logger.h"
00010 #include "readline.h"
00011 #include "OverviewFmt.h"
00012 #include "Article.h"
00013
00014 using namespace std;
00015
00016 char *articleList[] = { "article5283", "article9621", "article9622" };
00017
00018 Logger slog;
00019
00020 int checkConvertOverOver()
00021 {
00022 int err = 0;
00023 ifstream is;
00024 OverviewFmt o1, o2;
00025 string orec1, orec2, orec3;
00026
00027 is.open("overviewfmt1.in");
00028 o1.readxoin(is);
00029 is.close();
00030
00031 is.open("overviewfmt2.in");
00032 o2.readxoin(is);
00033 is.close();
00034
00035 is.open("overviewdb.in");
00036 for (;;) {
00037 nlreadline(is, orec1, 0);
00038 if (!is.good())
00039 break;
00040 o1.convert(orec1, orec2);
00041 if (strcmp(orec1.c_str(), orec2.c_str())) {
00042 cout << "checkConvertOverOver: check 1 failed\n";
00043 cout << " RecordIn: " << orec1 << endl;
00044 cout << " RecordOut: " << orec2 << endl;
00045 err = 1;
00046 }
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056 }
00057 is.close();
00058
00059 if (err)
00060 return -1;
00061 return 0;
00062 }
00063
00064 int checkConvertArtOver(const char *artfn)
00065 {
00066 char buf[256];
00067 ifstream is;
00068 Article art;
00069 OverviewFmt o;
00070 string orec1, orec2;
00071
00072 sprintf(buf, "%s.in", artfn);
00073 is.open(buf);
00074 art.read(is);
00075 is.close();
00076
00077 sprintf(buf, "%s.over.in", artfn);
00078 is.open(buf);
00079 nlreadline(is, orec2, 0);
00080 is.close();
00081
00082 art.setnbr(atoi(orec2.c_str()));
00083 o.convert(art, orec1);
00084
00085 if (strcmp(orec1.c_str(), orec2.c_str())) {
00086 cout << "checkConvertArtOver:\n";
00087 cout << " Got[" << orec1.
00088 length() << "]: " << orec1 << endl;
00089 cout << " SBe[" << orec1.
00090 length() << "]: " << orec2 << endl;
00091 return -11;
00092 }
00093 return 0;
00094 }
00095
00096 int main(int argc, char *argv[])
00097 {
00098 char **al = articleList;
00099 int e, ef = 0, i, j = sizeof(articleList) / sizeof(articleList[0]);
00100
00101 chdir(getenv("srcdir"));
00102 if (argc > 1) {
00103 al = argv + 1;
00104 j = argc - 1;
00105 }
00106
00107 cout << "cOverviewFmt:\n";
00108 for (i = 0; i < j; i++) {
00109 if ((e = checkConvertArtOver(al[i])) < 0) {
00110 cout << "checkConvertArtOver(" << al[i] <<
00111 ") failed with: " << e << endl;
00112 ef++;
00113 } else {
00114 cout << "checkConvertArtOver(" << al[i] <<
00115 ") succeeded\n";
00116 }
00117 }
00118 if ((e = checkConvertOverOver()) < 0) {
00119 cout << "checkConvertOverOver failed with: " << e << endl;
00120 ef++;
00121 } else {
00122 cout << "checkConvertOverOver succeeded\n";
00123 }
00124
00125 if (ef == 0) {
00126 cout << "cOverviewFmt: all tests succeeded\n";
00127 exit(0);
00128 } else {
00129 cout << "cOverviewFmt: " << ef << " failures\n";
00130 exit(-1);
00131 }
00132 }